MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / policiesCreate

Function policiesCreate

packages/core/sdk/src/executor.ts:3827–3872  ·  view source on GitHub ↗
(
      input: CreateToolPolicyInput,
    )

Source from the content-addressed store, hash-verified

3825 );
3826
3827 const policiesCreate = (
3828 input: CreateToolPolicyInput,
3829 ): Effect.Effect<ToolPolicy, StorageFailure> =>
3830 Effect.gen(function* () {
3831 if (!isValidPattern(input.pattern)) {
3832 return yield* new StorageError({
3833 message: `Invalid tool policy pattern: ${input.pattern}`,
3834 cause: undefined,
3835 });
3836 }
3837 if (!isToolPolicyAction(input.action)) {
3838 return yield* new StorageError({
3839 message: `Invalid tool policy action: ${String(input.action)}`,
3840 cause: undefined,
3841 });
3842 }
3843 yield* requireUserSubject(input.owner);
3844 const keys = yield* Effect.try({
3845 try: () => ownedKeys(input.owner),
3846 catch: (cause) => storageFailureFromUnknown("invalid owner", cause),
3847 });
3848 const existing = yield* core.findMany("tool_policy", {
3849 where: byOwner(input.owner),
3850 });
3851 // Default placement is specificity-aware (below any more-specific
3852 // rule), not top-of-list: a client that omits position — the UI when
3853 // its policy list is stale, the API, an agent tool — must not have its
3854 // broad rule silently shadow an existing narrow one.
3855 const position = input.position ?? positionForNewPattern(input.pattern, existing);
3856 const id = PolicyId.make(
3857 `pol_${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`,
3858 );
3859 const now = new Date();
3860 const created = yield* core.create("tool_policy", {
3861 tenant: keys.tenant,
3862 owner: keys.owner,
3863 subject: keys.subject,
3864 id: String(id),
3865 pattern: input.pattern,
3866 action: input.action,
3867 position,
3868 created_at: now,
3869 updated_at: now,
3870 });
3871 return rowToToolPolicy(created);
3872 });
3873
3874 const policiesUpdate = (
3875 input: UpdateToolPolicyInput,

Callers 1

createExecutorFunction · 0.85

Calls 9

isValidPatternFunction · 0.90
isToolPolicyActionFunction · 0.90
positionForNewPatternFunction · 0.90
rowToToolPolicyFunction · 0.90
requireUserSubjectFunction · 0.85
ownedKeysFunction · 0.85
byOwnerFunction · 0.85
toStringMethod · 0.80

Tested by

no test coverage detected