@fragno-dev/backoffice-api 0.0.0-stage → 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +16 -0
- package/README.md +90 -2
- package/dist/api.d.ts +35 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +10 -0
- package/dist/api.js.map +1 -0
- package/dist/errors.d.ts +45 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +35 -0
- package/dist/errors.js.map +1 -0
- package/dist/openapi.d.ts +46 -0
- package/dist/openapi.d.ts.map +1 -0
- package/dist/openapi.js +205 -0
- package/dist/openapi.js.map +1 -0
- package/dist/v0/account.d.ts +171 -0
- package/dist/v0/account.d.ts.map +1 -0
- package/dist/v0/account.js +78 -0
- package/dist/v0/account.js.map +1 -0
- package/dist/v0/api.d.ts +3437 -0
- package/dist/v0/api.d.ts.map +1 -0
- package/dist/v0/api.js +52 -0
- package/dist/v0/api.js.map +1 -0
- package/dist/v0/app-actions.d.ts +105 -0
- package/dist/v0/app-actions.d.ts.map +1 -0
- package/dist/v0/app-actions.js +100 -0
- package/dist/v0/app-actions.js.map +1 -0
- package/dist/v0/apps.d.ts +417 -0
- package/dist/v0/apps.d.ts.map +1 -0
- package/dist/v0/apps.js +163 -0
- package/dist/v0/apps.js.map +1 -0
- package/dist/v0/automation.d.ts +730 -0
- package/dist/v0/automation.d.ts.map +1 -0
- package/dist/v0/automation.js +355 -0
- package/dist/v0/automation.js.map +1 -0
- package/dist/v0/capabilities.d.ts +97 -0
- package/dist/v0/capabilities.d.ts.map +1 -0
- package/dist/v0/capabilities.js +41 -0
- package/dist/v0/capabilities.js.map +1 -0
- package/dist/v0/client.d.ts +39 -0
- package/dist/v0/client.d.ts.map +1 -0
- package/dist/v0/client.js +61 -0
- package/dist/v0/client.js.map +1 -0
- package/dist/v0/events.d.ts +789 -0
- package/dist/v0/events.d.ts.map +1 -0
- package/dist/v0/events.js +153 -0
- package/dist/v0/events.js.map +1 -0
- package/dist/v0/forms.d.ts +172 -0
- package/dist/v0/forms.d.ts.map +1 -0
- package/dist/v0/forms.js +88 -0
- package/dist/v0/forms.js.map +1 -0
- package/dist/v0/hooks.d.ts +61 -0
- package/dist/v0/hooks.d.ts.map +1 -0
- package/dist/v0/hooks.js +49 -0
- package/dist/v0/hooks.js.map +1 -0
- package/dist/v0/identity.d.ts +73 -0
- package/dist/v0/identity.d.ts.map +1 -0
- package/dist/v0/identity.js +46 -0
- package/dist/v0/identity.js.map +1 -0
- package/dist/v0/integrations.d.ts +847 -0
- package/dist/v0/integrations.d.ts.map +1 -0
- package/dist/v0/integrations.js +255 -0
- package/dist/v0/integrations.js.map +1 -0
- package/dist/v0/javascript.d.ts +160 -0
- package/dist/v0/javascript.d.ts.map +1 -0
- package/dist/v0/javascript.js +123 -0
- package/dist/v0/javascript.js.map +1 -0
- package/dist/v0/marketplace.d.ts +825 -0
- package/dist/v0/marketplace.d.ts.map +1 -0
- package/dist/v0/marketplace.js +284 -0
- package/dist/v0/marketplace.js.map +1 -0
- package/dist/v0/organization.d.ts +182 -0
- package/dist/v0/organization.d.ts.map +1 -0
- package/dist/v0/organization.js +88 -0
- package/dist/v0/organization.js.map +1 -0
- package/dist/v0/otp.d.ts +37 -0
- package/dist/v0/otp.d.ts.map +1 -0
- package/dist/v0/otp.js +29 -0
- package/dist/v0/otp.js.map +1 -0
- package/dist/v0/pi.d.ts +322 -0
- package/dist/v0/pi.d.ts.map +1 -0
- package/dist/v0/pi.js +146 -0
- package/dist/v0/pi.js.map +1 -0
- package/dist/v0/sandbox.d.ts +173 -0
- package/dist/v0/sandbox.d.ts.map +1 -0
- package/dist/v0/sandbox.js +97 -0
- package/dist/v0/sandbox.js.map +1 -0
- package/dist/v0/shared/bytes.d.ts +12 -0
- package/dist/v0/shared/bytes.d.ts.map +1 -0
- package/dist/v0/shared/bytes.js +16 -0
- package/dist/v0/shared/bytes.js.map +1 -0
- package/dist/v0/shared/datetime.d.ts +10 -0
- package/dist/v0/shared/datetime.d.ts.map +1 -0
- package/dist/v0/shared/datetime.js +14 -0
- package/dist/v0/shared/datetime.js.map +1 -0
- package/dist/v0/shared/json.d.ts +9 -0
- package/dist/v0/shared/json.d.ts.map +1 -0
- package/dist/v0/shared/json.js +14 -0
- package/dist/v0/shared/json.js.map +1 -0
- package/dist/v0/shared/pagination.d.ts +11 -0
- package/dist/v0/shared/pagination.d.ts.map +1 -0
- package/dist/v0/shared/pagination.js +11 -0
- package/dist/v0/shared/pagination.js.map +1 -0
- package/dist/v0/shared/permissions.d.ts +279 -0
- package/dist/v0/shared/permissions.d.ts.map +1 -0
- package/dist/v0/shared/permissions.js +285 -0
- package/dist/v0/shared/permissions.js.map +1 -0
- package/dist/v0/shared/pi-agent-name.d.ts +10 -0
- package/dist/v0/shared/pi-agent-name.d.ts.map +1 -0
- package/dist/v0/shared/pi-agent-name.js +11 -0
- package/dist/v0/shared/pi-agent-name.js.map +1 -0
- package/dist/v0/shared/scope.d.ts +305 -0
- package/dist/v0/shared/scope.d.ts.map +1 -0
- package/dist/v0/shared/scope.js +279 -0
- package/dist/v0/shared/scope.js.map +1 -0
- package/dist/v0/state.d.ts +512 -0
- package/dist/v0/state.d.ts.map +1 -0
- package/dist/v0/state.js +267 -0
- package/dist/v0/state.js.map +1 -0
- package/dist/v0/store.d.ts +138 -0
- package/dist/v0/store.d.ts.map +1 -0
- package/dist/v0/store.js +83 -0
- package/dist/v0/store.js.map +1 -0
- package/dist/v0/upload.d.ts +568 -0
- package/dist/v0/upload.d.ts.map +1 -0
- package/dist/v0/upload.js +109 -0
- package/dist/v0/upload.js.map +1 -0
- package/dist/v0/web.d.ts +47 -0
- package/dist/v0/web.d.ts.map +1 -0
- package/dist/v0/web.js +31 -0
- package/dist/v0/web.js.map +1 -0
- package/dist/v0/workflow.d.ts +267 -0
- package/dist/v0/workflow.d.ts.map +1 -0
- package/dist/v0/workflow.js +116 -0
- package/dist/v0/workflow.js.map +1 -0
- package/package.json +64 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation.d.ts","names":[],"sources":["../../src/v0/automation.ts"],"mappings":";;;KAUY,4BACV,iCACA;EAEA;EACA,QAAQ;EACR,MAAM;EACN;;KAGU,oBAAoB;EAE1B;EACA,MAAM;EACN;IAEF,oCAAoC;KAEnC;KAEO,gBAAgB,cAAc,sBAAsB,uBAC9D;EACE,MAAM;;KAGE,mBAAmB;EAC7B,WAAW;EACX,WAAW;EACX,sBAAsB,8BAA8B;;cAgDzC,4BAA6B,MAAM,qBAAqB,OAAO;cAM/D,gCAA8B,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;cAI9B,wBAAwB,EAAE,QAAQ;;;;;KAiC1C,qCAAqC;;;;;;;;KAS9B;;;;;;;;;;;;EAaN;EACA,QAAQ;;;;;;;;EASR;EACA,QAAQ;;;;;;;;;;;;;EAcR;EACA,iBAAiB;;cAGV,iCAA+B,EAAA,QAAA,EAAA,uBAAA,EAAA;;;;;;;;KAchC,4BAA4B,EAAE,aAAa;KAE3C;EAEN;EACA;EACA;EACA;;EAGA;EACA;EACA;EACA;;KAGM,0BACP;EAAmC;MACnC;EAAmC;MACnC;EACC;EACA,OAAO,QAAQ;;KAGT;EACN,OAAO;;EACP;EAAc;;EACd;EAAc;EAA8C;;EAC5D,KAAK;;EACL,KAAK;;EACL,KAAK;;KAEN;EACC;EAAa;;EACb;EAAc;;KAEf;EACH;EACA,OAAO;EACP;;;KAIU;EACN;IACF,mCACA;EAEE;EACA,OAAO,mCAAmC;EAC1C;;KAGM;EACV;EACA,WAAW;EACX;EACA;;KAGU;EACN;EAAqB;;EACrB;EAA4B;;KAEtB;EACV;EACA,QAAQ;EACR;EACA;;KAGU;EACV;EACA,aAAa;EACb;;KAGU;EACV;EACA,QAAQ;;KAGE;EACV;EACA;EACA;EACA,SAAS;;;KAIC;EACV;EACA;EACA,WAAW;;KAGD,wBACR,gCACA,oCACA,+BACA,kCACA;;iBAGY,+BACd,QAAQ,wBACP;KAMS;EACV;EACA;EACA;EACA,SAAS;;KAGC;EACV;EACA,SAAS;;KAGC,yBAAyB,8BAA8B;KAEvD;EACV;EACA;EACA;EACA;;KAGU;EACV,iBAAiB;EACjB,iBAAiB;EACjB,WAAW;;;KAID;EACV,SAAS;EACT,QAAQ;EACR;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;;cAGW,kCAAmC;;cASnC;cAoRA,6BAA2B,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAe3B,gCAAgC,EAAE,QAAQ;cAqF1C,uBAAuB,EAAE,QAAQ;cAgBjC,kCAAgC,EAAA,QAAA,EAAA,gBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA0BhC,oCAAkC,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAQlC,kCAAgC,EAAA,QAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAOjC,6BAA6B,EAAE,aAAa;KAE5C,6BAA6B,EAAE,aAAa;cAE3C"}
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
import { BACKOFFICE_PERMISSION, backofficePermissionRequirementSchema } from "./shared/permissions.js";
|
|
2
|
+
import { piAgentNameSchema } from "./shared/pi-agent-name.js";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
//#region src/v0/automation.ts
|
|
5
|
+
const automationInternalEntitySchema = z.lazy(() => z.strictObject({
|
|
6
|
+
scope: z.literal("internal"),
|
|
7
|
+
type: z.string().trim().min(1),
|
|
8
|
+
id: z.string().trim().min(1)
|
|
9
|
+
}));
|
|
10
|
+
const automationExternalEntitySchema = z.lazy(() => z.strictObject({
|
|
11
|
+
scope: z.literal("external"),
|
|
12
|
+
source: z.string().trim().min(1),
|
|
13
|
+
type: z.string().trim().min(1),
|
|
14
|
+
id: z.string().trim().min(1)
|
|
15
|
+
}));
|
|
16
|
+
const automationInitiatorActorSchema = z.lazy(() => z.discriminatedUnion("scope", [automationInternalEntitySchema._zod.innerType.extend({ role: z.literal("initiator") }), automationExternalEntitySchema._zod.innerType.extend({ role: z.literal("initiator") })]));
|
|
17
|
+
const automationPrincipalActorSchema = z.lazy(() => z.discriminatedUnion("scope", [automationInternalEntitySchema._zod.innerType.extend({ role: z.literal("principal") }), automationExternalEntitySchema._zod.innerType.extend({ role: z.literal("principal") })]));
|
|
18
|
+
const automationDelegateActorSchema = z.lazy(() => z.discriminatedUnion("scope", [automationInternalEntitySchema._zod.innerType.extend({ role: z.literal("delegate") }), automationExternalEntitySchema._zod.innerType.extend({ role: z.literal("delegate") })]));
|
|
19
|
+
const automationAssistantActorSchema = z.lazy(() => z.discriminatedUnion("scope", [automationInternalEntitySchema._zod.innerType.extend({ role: z.literal("assistant") }), automationExternalEntitySchema._zod.innerType.extend({ role: z.literal("assistant") })]));
|
|
20
|
+
const automationEntityRefsEqual = (left, right) => left.scope === right.scope && left.type === right.type && left.id === right.id && (left.scope === "internal" || right.scope === "external" && left.source === right.source);
|
|
21
|
+
const automationDelegatedActorSchema = z.lazy(() => z.discriminatedUnion("role", [automationDelegateActorSchema, automationAssistantActorSchema]));
|
|
22
|
+
const automationActorsSchema = z.lazy(() => z.strictObject({
|
|
23
|
+
initiator: automationInitiatorActorSchema,
|
|
24
|
+
principal: automationPrincipalActorSchema.nullable(),
|
|
25
|
+
delegation: z.array(automationDelegatedActorSchema)
|
|
26
|
+
}).superRefine((actors, context) => {
|
|
27
|
+
const actorSequence = [
|
|
28
|
+
actors.initiator,
|
|
29
|
+
...actors.principal ? [actors.principal] : [],
|
|
30
|
+
...actors.delegation
|
|
31
|
+
];
|
|
32
|
+
if (actorSequence.some((actor, actorIndex) => actorSequence.slice(0, actorIndex).some((previousActor) => automationEntityRefsEqual(previousActor, actor)))) context.addIssue({
|
|
33
|
+
code: "custom",
|
|
34
|
+
message: "Automation actor provenance contains duplicate identities."
|
|
35
|
+
});
|
|
36
|
+
}));
|
|
37
|
+
const automationScheduleCadenceSchema = z.lazy(() => z.discriminatedUnion("kind", [z.object({
|
|
38
|
+
kind: z.literal("once"),
|
|
39
|
+
at: z.iso.datetime()
|
|
40
|
+
}), z.object({
|
|
41
|
+
kind: z.literal("cron"),
|
|
42
|
+
expression: z.string().trim().min(1),
|
|
43
|
+
timeZone: z.string().trim().min(1).default("UTC")
|
|
44
|
+
})]));
|
|
45
|
+
/** The authority an action runs its work with, or null for actions that only move events. */
|
|
46
|
+
function automationRouteActionAuthority(action) {
|
|
47
|
+
return action.kind === "start_workflow" || action.kind === "notify_agent" ? action.authority : null;
|
|
48
|
+
}
|
|
49
|
+
const isAutomationActorProvenancePath = (path) => path === "$.actor" || path.startsWith("$.actor.") || path.startsWith("$.actor[") || path === "$.actors" || path.startsWith("$.actors.") || path.startsWith("$.actors[");
|
|
50
|
+
/** Scheduled routes have no triggering user, so only organization authority can start workflows. */
|
|
51
|
+
const AUTOMATION_ROUTE_AUTHORITY_ERROR_MESSAGE = "Scheduled workflows and agent notifications require organization-automation authority. Linked-user authority requires an external sender; delegated-user authority requires a user principal.";
|
|
52
|
+
const automationActorMatcherSchema = z.lazy(() => z.discriminatedUnion("participation", [
|
|
53
|
+
z.discriminatedUnion("scope", [z.strictObject({
|
|
54
|
+
participation: z.literal("initiator"),
|
|
55
|
+
scope: z.literal("internal"),
|
|
56
|
+
type: z.string().trim().min(1).optional(),
|
|
57
|
+
id: z.string().trim().min(1).optional()
|
|
58
|
+
}), z.strictObject({
|
|
59
|
+
participation: z.literal("initiator"),
|
|
60
|
+
scope: z.literal("external"),
|
|
61
|
+
source: z.string().trim().min(1).optional(),
|
|
62
|
+
type: z.string().trim().min(1).optional(),
|
|
63
|
+
id: z.string().trim().min(1).optional()
|
|
64
|
+
})]),
|
|
65
|
+
z.discriminatedUnion("scope", [z.strictObject({
|
|
66
|
+
participation: z.literal("principal"),
|
|
67
|
+
scope: z.literal("internal"),
|
|
68
|
+
type: z.string().trim().min(1).optional(),
|
|
69
|
+
id: z.string().trim().min(1).optional()
|
|
70
|
+
}), z.strictObject({
|
|
71
|
+
participation: z.literal("principal"),
|
|
72
|
+
scope: z.literal("external"),
|
|
73
|
+
source: z.string().trim().min(1).optional(),
|
|
74
|
+
type: z.string().trim().min(1).optional(),
|
|
75
|
+
id: z.string().trim().min(1).optional()
|
|
76
|
+
})]),
|
|
77
|
+
z.discriminatedUnion("scope", [z.strictObject({
|
|
78
|
+
participation: z.literal("delegation"),
|
|
79
|
+
scope: z.literal("internal"),
|
|
80
|
+
type: z.string().trim().min(1).optional(),
|
|
81
|
+
id: z.string().trim().min(1).optional(),
|
|
82
|
+
role: z.enum(["delegate", "assistant"]).optional()
|
|
83
|
+
}), z.strictObject({
|
|
84
|
+
participation: z.literal("delegation"),
|
|
85
|
+
scope: z.literal("external"),
|
|
86
|
+
source: z.string().trim().min(1).optional(),
|
|
87
|
+
type: z.string().trim().min(1).optional(),
|
|
88
|
+
id: z.string().trim().min(1).optional(),
|
|
89
|
+
role: z.enum(["delegate", "assistant"]).optional()
|
|
90
|
+
})])
|
|
91
|
+
]));
|
|
92
|
+
const automationEventPathSchema = z.lazy(() => z.string().trim().min(1).refine((path) => !isAutomationActorProvenancePath(path), { message: "Actor routing must use the structural actor matcher." }));
|
|
93
|
+
const automationEventMatcherSchema = z.lazy(() => z.lazy(() => z.union([
|
|
94
|
+
z.strictObject({ actor: automationActorMatcherSchema }),
|
|
95
|
+
z.object({
|
|
96
|
+
path: automationEventPathSchema,
|
|
97
|
+
op: z.literal("exists")
|
|
98
|
+
}),
|
|
99
|
+
z.object({
|
|
100
|
+
path: automationEventPathSchema,
|
|
101
|
+
op: z.union([
|
|
102
|
+
z.literal("eq"),
|
|
103
|
+
z.literal("neq"),
|
|
104
|
+
z.literal("startsWith"),
|
|
105
|
+
z.literal("includes")
|
|
106
|
+
]),
|
|
107
|
+
value: z.unknown()
|
|
108
|
+
}),
|
|
109
|
+
z.object({ all: z.array(automationEventMatcherSchema) }),
|
|
110
|
+
z.object({ any: z.array(automationEventMatcherSchema) }),
|
|
111
|
+
z.object({ not: automationEventMatcherSchema })
|
|
112
|
+
]))).meta({ id: "AutomationEventMatcher" });
|
|
113
|
+
const automationRouteOrganizationScopeTemplateSchema = z.lazy(() => z.object({
|
|
114
|
+
kind: z.literal("org"),
|
|
115
|
+
orgIdTemplate: z.string().trim().min(1)
|
|
116
|
+
}));
|
|
117
|
+
const automationRouteUserScopeTemplateSchema = z.lazy(() => z.object({
|
|
118
|
+
kind: z.literal("user"),
|
|
119
|
+
userIdTemplate: z.string().trim().min(1)
|
|
120
|
+
}));
|
|
121
|
+
const automationRouteAppScopeTemplateSchema = z.lazy(() => z.object({
|
|
122
|
+
kind: z.literal("app"),
|
|
123
|
+
owner: z.discriminatedUnion("kind", [automationRouteOrganizationScopeTemplateSchema, automationRouteUserScopeTemplateSchema]),
|
|
124
|
+
appIdTemplate: z.string().trim().min(1)
|
|
125
|
+
}));
|
|
126
|
+
const automationRouteScopeTemplateSchema = z.lazy(() => z.discriminatedUnion("kind", [
|
|
127
|
+
z.object({ kind: z.literal("system") }),
|
|
128
|
+
automationRouteOrganizationScopeTemplateSchema,
|
|
129
|
+
automationRouteUserScopeTemplateSchema,
|
|
130
|
+
automationRouteAppScopeTemplateSchema,
|
|
131
|
+
z.object({
|
|
132
|
+
kind: z.literal("project"),
|
|
133
|
+
owner: z.discriminatedUnion("kind", [
|
|
134
|
+
automationRouteOrganizationScopeTemplateSchema,
|
|
135
|
+
automationRouteUserScopeTemplateSchema,
|
|
136
|
+
automationRouteAppScopeTemplateSchema
|
|
137
|
+
]),
|
|
138
|
+
projectIdTemplate: z.string().trim().min(1)
|
|
139
|
+
})
|
|
140
|
+
])).meta({ id: "AutomationRouteScopeTemplate" });
|
|
141
|
+
function backofficePermissionKey(grant) {
|
|
142
|
+
return `${grant.namespace}.${grant.permission}`;
|
|
143
|
+
}
|
|
144
|
+
const automationRouteGrantsSchema = z.lazy(() => z.array(backofficePermissionRequirementSchema).superRefine((grants, context) => {
|
|
145
|
+
const encountered = /* @__PURE__ */ new Set();
|
|
146
|
+
for (const [index, grant] of grants.entries()) {
|
|
147
|
+
const key = backofficePermissionKey(grant);
|
|
148
|
+
if (encountered.has(key)) context.addIssue({
|
|
149
|
+
code: "custom",
|
|
150
|
+
path: [index],
|
|
151
|
+
message: `Automation route grant '${key}' is duplicated.`
|
|
152
|
+
});
|
|
153
|
+
encountered.add(key);
|
|
154
|
+
}
|
|
155
|
+
}));
|
|
156
|
+
const organizationAutomationAuthoritySchema = z.lazy(() => z.strictObject({
|
|
157
|
+
kind: z.literal("organization-automation"),
|
|
158
|
+
grants: automationRouteGrantsSchema
|
|
159
|
+
}));
|
|
160
|
+
const automationAuthorityModeSchema = z.lazy(() => z.discriminatedUnion("kind", [
|
|
161
|
+
z.strictObject({
|
|
162
|
+
kind: z.literal("delegated-user"),
|
|
163
|
+
grants: z.union([automationRouteGrantsSchema, z.literal("inherit")])
|
|
164
|
+
}),
|
|
165
|
+
z.strictObject({
|
|
166
|
+
kind: z.literal("linked-user"),
|
|
167
|
+
grants: z.union([automationRouteGrantsSchema, z.literal("inherit")])
|
|
168
|
+
}),
|
|
169
|
+
organizationAutomationAuthoritySchema
|
|
170
|
+
]));
|
|
171
|
+
const automationStartWorkflowActionSchema = z.lazy(() => z.strictObject({
|
|
172
|
+
kind: z.literal("start_workflow"),
|
|
173
|
+
authority: automationAuthorityModeSchema,
|
|
174
|
+
workflowScriptPath: z.string().trim().min(1),
|
|
175
|
+
instanceIdTemplate: z.string().trim().min(1)
|
|
176
|
+
})).meta({
|
|
177
|
+
id: "AutomationStartWorkflowAction",
|
|
178
|
+
codemodeInputId: "AutomationStartWorkflowActionInput"
|
|
179
|
+
});
|
|
180
|
+
const automationWorkflowEventTargetSchema = z.lazy(() => z.discriminatedUnion("kind", [z.object({
|
|
181
|
+
kind: z.literal("instance_id"),
|
|
182
|
+
template: z.string().trim().min(1)
|
|
183
|
+
}).meta({ id: "AutomationWorkflowEventInstanceIdTarget" }), z.object({
|
|
184
|
+
kind: z.literal("stored_instance_id"),
|
|
185
|
+
keyTemplate: z.string().trim().min(1)
|
|
186
|
+
}).meta({ id: "AutomationWorkflowEventStoredInstanceIdTarget" })])).meta({ id: "AutomationWorkflowEventTarget" });
|
|
187
|
+
const automationSendWorkflowEventActionSchema = z.lazy(() => z.strictObject({
|
|
188
|
+
kind: z.literal("send_workflow_event"),
|
|
189
|
+
target: automationWorkflowEventTargetSchema,
|
|
190
|
+
eventType: z.string().trim().min(1),
|
|
191
|
+
payload: z.unknown().optional()
|
|
192
|
+
})).meta({
|
|
193
|
+
id: "AutomationSendWorkflowEventAction",
|
|
194
|
+
codemodeInputId: "AutomationSendWorkflowEventActionInput"
|
|
195
|
+
});
|
|
196
|
+
const automationForwardEventActionSchema = z.lazy(() => z.object({
|
|
197
|
+
kind: z.literal("forward_event"),
|
|
198
|
+
targetScope: automationRouteScopeTemplateSchema,
|
|
199
|
+
idTemplate: z.string().trim().min(1).optional()
|
|
200
|
+
})).meta({
|
|
201
|
+
id: "AutomationForwardEventAction",
|
|
202
|
+
codemodeInputId: "AutomationForwardEventActionInput"
|
|
203
|
+
});
|
|
204
|
+
const automationEventPayloadProjectionSchema = z.lazy(() => z.strictObject({
|
|
205
|
+
kind: z.literal("projection"),
|
|
206
|
+
fields: z.record(z.string().trim().min(1), z.string().trim().refine((path) => path === "$" || path.startsWith("$."), { message: "Projection paths must start with $." }))
|
|
207
|
+
})).meta({ id: "AutomationEventPayloadProjection" });
|
|
208
|
+
const automationReclassifyEventActionSchema = z.lazy(() => z.strictObject({
|
|
209
|
+
kind: z.literal("reclassify_event"),
|
|
210
|
+
source: z.string().trim().min(1),
|
|
211
|
+
eventType: z.string().trim().min(1),
|
|
212
|
+
payload: automationEventPayloadProjectionSchema
|
|
213
|
+
})).meta({
|
|
214
|
+
id: "AutomationReclassifyEventAction",
|
|
215
|
+
codemodeInputId: "AutomationReclassifyEventActionInput"
|
|
216
|
+
});
|
|
217
|
+
const automationNotifyAgentActionSchema = z.lazy(() => z.strictObject({
|
|
218
|
+
kind: z.literal("notify_agent"),
|
|
219
|
+
agentName: piAgentNameSchema,
|
|
220
|
+
authority: automationAuthorityModeSchema
|
|
221
|
+
})).meta({
|
|
222
|
+
id: "AutomationNotifyAgentAction",
|
|
223
|
+
codemodeInputId: "AutomationNotifyAgentActionInput"
|
|
224
|
+
});
|
|
225
|
+
const automationRouteActionSchema = z.lazy(() => z.discriminatedUnion("kind", [
|
|
226
|
+
automationStartWorkflowActionSchema,
|
|
227
|
+
automationSendWorkflowEventActionSchema,
|
|
228
|
+
automationForwardEventActionSchema,
|
|
229
|
+
automationReclassifyEventActionSchema,
|
|
230
|
+
automationNotifyAgentActionSchema
|
|
231
|
+
])).meta({
|
|
232
|
+
id: "AutomationRouteAction",
|
|
233
|
+
codemodeInputId: "AutomationRouteActionInput"
|
|
234
|
+
});
|
|
235
|
+
const automationRouteManagedBySchema = z.lazy(() => z.strictObject({
|
|
236
|
+
kind: z.literal("marketplace"),
|
|
237
|
+
listingId: z.string().trim().min(1),
|
|
238
|
+
resourceKey: z.string().trim().min(1),
|
|
239
|
+
version: z.string().trim().min(1)
|
|
240
|
+
})).meta({ id: "AutomationRouteManagedBy" });
|
|
241
|
+
const automationRouteMetadataSchema = z.lazy(() => z.strictObject({
|
|
242
|
+
createdByActors: automationActorsSchema,
|
|
243
|
+
updatedByActors: automationActorsSchema,
|
|
244
|
+
managedBy: automationRouteManagedBySchema.nullable()
|
|
245
|
+
}));
|
|
246
|
+
const automationRouteEventTriggerSchema = z.lazy(() => z.object({
|
|
247
|
+
kind: z.literal("event"),
|
|
248
|
+
source: z.string().trim().min(1),
|
|
249
|
+
eventType: z.string().trim().min(1),
|
|
250
|
+
matcher: automationEventMatcherSchema.nullable().default(null)
|
|
251
|
+
}));
|
|
252
|
+
const automationRouteScheduleTriggerSchema = z.lazy(() => z.object({
|
|
253
|
+
kind: z.literal("schedule"),
|
|
254
|
+
cadence: automationScheduleCadenceSchema
|
|
255
|
+
}));
|
|
256
|
+
const automationRouteTriggerSchema = z.lazy(() => z.discriminatedUnion("kind", [automationRouteEventTriggerSchema, automationRouteScheduleTriggerSchema])).meta({
|
|
257
|
+
id: "AutomationRouteTrigger",
|
|
258
|
+
codemodeInputId: "AutomationRouteTriggerInput"
|
|
259
|
+
});
|
|
260
|
+
const automationRouteConfigurationSchema = z.lazy(() => z.union([z.object({
|
|
261
|
+
trigger: automationRouteEventTriggerSchema,
|
|
262
|
+
action: automationRouteActionSchema
|
|
263
|
+
}), z.object({
|
|
264
|
+
trigger: automationRouteScheduleTriggerSchema,
|
|
265
|
+
action: z.union([
|
|
266
|
+
automationStartWorkflowActionSchema._zod.innerType.extend({ authority: organizationAutomationAuthoritySchema }),
|
|
267
|
+
automationSendWorkflowEventActionSchema,
|
|
268
|
+
automationForwardEventActionSchema,
|
|
269
|
+
automationReclassifyEventActionSchema,
|
|
270
|
+
automationNotifyAgentActionSchema._zod.innerType.extend({ authority: organizationAutomationAuthoritySchema })
|
|
271
|
+
])
|
|
272
|
+
})], { error: (issue) => {
|
|
273
|
+
const configuration = z.object({
|
|
274
|
+
trigger: automationRouteScheduleTriggerSchema,
|
|
275
|
+
action: automationRouteActionSchema
|
|
276
|
+
}).safeParse(issue.input);
|
|
277
|
+
const authority = configuration.success ? automationRouteActionAuthority(configuration.data.action) : null;
|
|
278
|
+
return authority && authority.kind !== "organization-automation" ? AUTOMATION_ROUTE_AUTHORITY_ERROR_MESSAGE : void 0;
|
|
279
|
+
} }));
|
|
280
|
+
const automationRouteSchema = z.lazy(() => z.object({
|
|
281
|
+
id: z.string().trim().min(1),
|
|
282
|
+
name: z.string().trim().min(1),
|
|
283
|
+
enabled: z.boolean(),
|
|
284
|
+
priority: z.number().int(),
|
|
285
|
+
trigger: automationRouteTriggerSchema,
|
|
286
|
+
action: automationRouteActionSchema,
|
|
287
|
+
description: z.string().nullable().optional(),
|
|
288
|
+
metadata: automationRouteMetadataSchema.nullable(),
|
|
289
|
+
nextOccurrenceAt: z.iso.datetime().nullable()
|
|
290
|
+
})).meta({ id: "AutomationRoute" });
|
|
291
|
+
const automationRouteCreateInputSchema = z.lazy(() => z.object({
|
|
292
|
+
id: z.string().trim().min(1),
|
|
293
|
+
name: z.string().trim().min(1),
|
|
294
|
+
enabled: z.boolean().default(true),
|
|
295
|
+
priority: z.number().int().default(1e3),
|
|
296
|
+
description: z.string().nullable().optional(),
|
|
297
|
+
managedBy: automationRouteManagedBySchema.nullable().optional()
|
|
298
|
+
}).and(automationRouteConfigurationSchema));
|
|
299
|
+
const automationRouteUpdateObjectSchema = z.lazy(() => z.object({
|
|
300
|
+
id: z.string().trim().min(1),
|
|
301
|
+
name: z.string().trim().min(1).optional(),
|
|
302
|
+
enabled: z.boolean().optional(),
|
|
303
|
+
priority: z.number().int().optional(),
|
|
304
|
+
trigger: automationRouteTriggerSchema.optional(),
|
|
305
|
+
action: automationRouteActionSchema.optional(),
|
|
306
|
+
description: z.string().nullable().optional(),
|
|
307
|
+
managedBy: automationRouteManagedBySchema.nullable().optional()
|
|
308
|
+
}));
|
|
309
|
+
const automationRouteUpdatePayloadSchema = z.lazy(() => automationRouteUpdateObjectSchema._zod.innerType.omit({ id: true }).refine((patch) => Object.values(patch).some((value) => typeof value !== "undefined"), { message: "At least one route field must be provided." }));
|
|
310
|
+
const automationRouteUpdateInputSchema = z.lazy(() => automationRouteUpdateObjectSchema.refine(({ id: _id, ...patch }) => Object.values(patch).some((value) => typeof value !== "undefined"), { message: "At least one route field must be provided." }));
|
|
311
|
+
const automationRouterOperations = {
|
|
312
|
+
"router.list": {
|
|
313
|
+
description: "List database-backed automation routing rules.",
|
|
314
|
+
permissions: [BACKOFFICE_PERMISSION.router.read],
|
|
315
|
+
input: z.void(),
|
|
316
|
+
output: z.lazy(() => z.array(automationRouteSchema))
|
|
317
|
+
},
|
|
318
|
+
"router.get": {
|
|
319
|
+
description: "Get one database-backed automation routing rule.",
|
|
320
|
+
permissions: [BACKOFFICE_PERMISSION.router.read],
|
|
321
|
+
input: z.lazy(() => z.object({ id: z.string().trim().min(1) })),
|
|
322
|
+
output: z.lazy(() => automationRouteSchema.nullable())
|
|
323
|
+
},
|
|
324
|
+
"router.create": {
|
|
325
|
+
description: "Create a database-backed automation routing rule.",
|
|
326
|
+
permissions: [BACKOFFICE_PERMISSION.router.modify],
|
|
327
|
+
input: automationRouteCreateInputSchema,
|
|
328
|
+
output: automationRouteSchema
|
|
329
|
+
},
|
|
330
|
+
"router.update": {
|
|
331
|
+
description: "Update a database-backed automation routing rule.",
|
|
332
|
+
permissions: [BACKOFFICE_PERMISSION.router.modify],
|
|
333
|
+
input: automationRouteUpdateInputSchema,
|
|
334
|
+
output: z.lazy(() => automationRouteSchema.nullable())
|
|
335
|
+
},
|
|
336
|
+
"router.delete": {
|
|
337
|
+
description: "Idempotently delete a database-backed automation route.",
|
|
338
|
+
permissions: [BACKOFFICE_PERMISSION.router.modify],
|
|
339
|
+
input: z.lazy(() => z.object({ id: z.string().trim().min(1) })),
|
|
340
|
+
output: z.lazy(() => z.object({ deleted: z.literal(true) }))
|
|
341
|
+
},
|
|
342
|
+
"router.trigger-now": {
|
|
343
|
+
description: "Trigger a scheduled automation route immediately without changing its cadence.",
|
|
344
|
+
permissions: [BACKOFFICE_PERMISSION.router.modify],
|
|
345
|
+
input: z.lazy(() => z.object({ id: z.string().trim().min(1) })),
|
|
346
|
+
output: z.lazy(() => z.object({
|
|
347
|
+
accepted: z.literal(true),
|
|
348
|
+
eventId: z.string()
|
|
349
|
+
}).nullable())
|
|
350
|
+
}
|
|
351
|
+
};
|
|
352
|
+
//#endregion
|
|
353
|
+
export { AUTOMATION_ROUTE_AUTHORITY_ERROR_MESSAGE, automationActorsSchema, automationDelegatedActorSchema, automationEntityRefsEqual, automationRouteActionAuthority, automationRouteActionSchema, automationRouteCreateInputSchema, automationRouteManagedBySchema, automationRouteSchema, automationRouteUpdateInputSchema, automationRouteUpdatePayloadSchema, automationRouterOperations, automationScheduleCadenceSchema, isAutomationActorProvenancePath };
|
|
354
|
+
|
|
355
|
+
//# sourceMappingURL=automation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation.js","names":[],"sources":["../../src/v0/automation.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport type { BackofficeApiOperation } from \"../api\";\nimport { BACKOFFICE_PERMISSION } from \"./shared/permissions\";\nimport {\n backofficePermissionRequirementSchema,\n type BackofficePermissionRequirement,\n} from \"./shared/permissions\";\nimport { piAgentNameSchema } from \"./shared/pi-agent-name\";\n\nexport type AutomationExternalEntityRef<\n TSource extends string = string,\n TType extends string = string,\n> = {\n scope: \"external\";\n source: TSource;\n type: TType;\n id: string;\n};\n\nexport type AutomationEntityRef<TType extends string = string> =\n | {\n scope: \"internal\";\n type: TType;\n id: string;\n }\n | AutomationExternalEntityRef<string, TType>;\n\ntype AutomationActorRole = \"initiator\" | \"principal\" | \"delegate\" | \"assistant\";\n\nexport type AutomationActor<TRole extends AutomationActorRole = AutomationActorRole> =\n AutomationEntityRef & {\n role: TRole;\n };\n\nexport type AutomationActors = Readonly<{\n initiator: AutomationActor<\"initiator\">;\n principal: AutomationActor<\"principal\"> | null;\n delegation: readonly (AutomationActor<\"delegate\"> | AutomationActor<\"assistant\">)[];\n}>;\n\nconst automationInternalEntitySchema = z.lazy(() =>\n z.strictObject({\n scope: z.literal(\"internal\"),\n type: z.string().trim().min(1),\n id: z.string().trim().min(1),\n }),\n);\n\nconst automationExternalEntitySchema = z.lazy(() =>\n z.strictObject({\n scope: z.literal(\"external\"),\n source: z.string().trim().min(1),\n type: z.string().trim().min(1),\n id: z.string().trim().min(1),\n }),\n);\n\nconst automationInitiatorActorSchema = z.lazy(() =>\n z.discriminatedUnion(\"scope\", [\n automationInternalEntitySchema._zod.innerType.extend({ role: z.literal(\"initiator\") }),\n automationExternalEntitySchema._zod.innerType.extend({ role: z.literal(\"initiator\") }),\n ]),\n);\n\nconst automationPrincipalActorSchema = z.lazy(() =>\n z.discriminatedUnion(\"scope\", [\n automationInternalEntitySchema._zod.innerType.extend({ role: z.literal(\"principal\") }),\n automationExternalEntitySchema._zod.innerType.extend({ role: z.literal(\"principal\") }),\n ]),\n);\n\nconst automationDelegateActorSchema = z.lazy(() =>\n z.discriminatedUnion(\"scope\", [\n automationInternalEntitySchema._zod.innerType.extend({ role: z.literal(\"delegate\") }),\n automationExternalEntitySchema._zod.innerType.extend({ role: z.literal(\"delegate\") }),\n ]),\n);\n\nconst automationAssistantActorSchema = z.lazy(() =>\n z.discriminatedUnion(\"scope\", [\n automationInternalEntitySchema._zod.innerType.extend({ role: z.literal(\"assistant\") }),\n automationExternalEntitySchema._zod.innerType.extend({ role: z.literal(\"assistant\") }),\n ]),\n);\n\nexport const automationEntityRefsEqual = (left: AutomationEntityRef, right: AutomationEntityRef) =>\n left.scope === right.scope &&\n left.type === right.type &&\n left.id === right.id &&\n (left.scope === \"internal\" || (right.scope === \"external\" && left.source === right.source));\n\nexport const automationDelegatedActorSchema = z.lazy(() =>\n z.discriminatedUnion(\"role\", [automationDelegateActorSchema, automationAssistantActorSchema]),\n);\n\nexport const automationActorsSchema: z.ZodType<AutomationActors> = z.lazy(() =>\n z\n .strictObject({\n initiator: automationInitiatorActorSchema,\n principal: automationPrincipalActorSchema.nullable(),\n delegation: z.array(automationDelegatedActorSchema),\n })\n .superRefine((actors, context) => {\n const actorSequence = [\n actors.initiator,\n ...(actors.principal ? [actors.principal] : []),\n ...actors.delegation,\n ];\n\n const hasDuplicateIdentity = actorSequence.some((actor, actorIndex) =>\n actorSequence\n .slice(0, actorIndex)\n .some((previousActor) => automationEntityRefsEqual(previousActor, actor)),\n );\n\n if (hasDuplicateIdentity) {\n context.addIssue({\n code: \"custom\",\n message: \"Automation actor provenance contains duplicate identities.\",\n });\n }\n }),\n);\n\n/**\n * Explicit grants narrow the user's authority. `inherit` leaves the user's current permissions\n * unrestricted by the route delegate.\n */\ntype AutomationUserRouteGrants = readonly BackofficePermissionRequirement[] | \"inherit\";\n\n/**\n * Selects whose current permissions authorize protected work started by an automation route.\n *\n * A delegate is an additional capability boundary, not an impersonated principal. The kernel\n * requires both the principal and every delegate to grant an operation, so delegation can narrow\n * authority but can never give the principal permissions they do not already have.\n */\nexport type AutomationAuthorityMode =\n | {\n /**\n * Run on behalf of the internal user principal carried by the triggering event.\n *\n * The user remains the principal and the stable route automation identity is appended as a\n * delegate. For each protected operation, the authority resolver looks up the user's current\n * role, status, and organization membership, then resolves the internal automation delegate\n * from the owning route's current grants. The kernel requires both resulting grant sets to\n * contain the operation. Missing, disabled, or changed routes and missing, invalid, banned,\n * or no-longer-authorized users therefore fail closed. The delegate can restrict but never\n * elevate the user.\n */\n kind: \"delegated-user\";\n grants: AutomationUserRouteGrants;\n }\n | {\n /**\n * Resolve the external initiator's active identity binding before starting the workflow.\n *\n * The linked internal user becomes the principal and the stable route automation identity is\n * appended as a delegate. Events without an active binding do not start the workflow.\n */\n kind: \"linked-user\";\n grants: AutomationUserRouteGrants;\n }\n | {\n /**\n * Run as an organization-owned automation independently of the triggering user's authority.\n *\n * The stable `automation-route:<routeId>` identity becomes the principal while the original\n * initiator remains provenance and supplies no authority. For each protected operation, the\n * authority resolver reads the owning route's current grants. The stable route ID provides\n * identity for persistence and auditing while making grant changes and route disablement\n * visible to already-running workflows. The route can therefore continue after its creator or\n * triggering user loses organization access, while remaining limited to its current explicit\n * grants.\n */\n kind: \"organization-automation\";\n grants: readonly BackofficePermissionRequirement[];\n };\n\nexport const automationScheduleCadenceSchema = z.lazy(() =>\n z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(\"once\"),\n at: z.iso.datetime(),\n }),\n z.object({\n kind: z.literal(\"cron\"),\n expression: z.string().trim().min(1),\n timeZone: z.string().trim().min(1).default(\"UTC\"),\n }),\n ]),\n);\n\nexport type AutomationScheduleCadence = z.infer<typeof automationScheduleCadenceSchema>;\n\nexport type AutomationActorIdentityMatcher =\n | {\n scope: \"internal\";\n source?: never;\n type?: string;\n id?: string;\n }\n | {\n scope: \"external\";\n source?: string;\n type?: string;\n id?: string;\n };\n\nexport type AutomationActorMatcher =\n | (AutomationActorIdentityMatcher & { participation: \"initiator\" })\n | (AutomationActorIdentityMatcher & { participation: \"principal\" })\n | (AutomationActorIdentityMatcher & {\n participation: \"delegation\";\n role?: Extract<AutomationActorRole, \"delegate\" | \"assistant\">;\n });\n\nexport type AutomationEventMatcher =\n | { actor: AutomationActorMatcher }\n | { path: string; op: \"exists\" }\n | { path: string; op: \"eq\" | \"neq\" | \"startsWith\" | \"includes\"; value: unknown }\n | { all: AutomationEventMatcher[] }\n | { any: AutomationEventMatcher[] }\n | { not: AutomationEventMatcher };\n\ntype AutomationRouteRootOwnerTemplate =\n | { kind: \"org\"; orgIdTemplate: string }\n | { kind: \"user\"; userIdTemplate: string };\n\ntype AutomationRouteAppScopeTemplate = {\n kind: \"app\";\n owner: AutomationRouteRootOwnerTemplate;\n appIdTemplate: string;\n};\n\n/** Renders to a target scope; app and project scopes name their owner as a scope template too. */\nexport type AutomationRouteScopeTemplate =\n | { kind: \"system\" }\n | AutomationRouteRootOwnerTemplate\n | AutomationRouteAppScopeTemplate\n | {\n kind: \"project\";\n owner: AutomationRouteRootOwnerTemplate | AutomationRouteAppScopeTemplate;\n projectIdTemplate: string;\n };\n\nexport type AutomationStartWorkflowAction = {\n kind: \"start_workflow\";\n authority: AutomationAuthorityMode;\n workflowScriptPath: string;\n instanceIdTemplate: string;\n};\n\nexport type AutomationWorkflowEventTarget =\n | { kind: \"instance_id\"; template: string }\n | { kind: \"stored_instance_id\"; keyTemplate: string };\n\nexport type AutomationSendWorkflowEventAction = {\n kind: \"send_workflow_event\";\n target: AutomationWorkflowEventTarget;\n eventType: string;\n payload?: unknown;\n};\n\nexport type AutomationForwardEventAction = {\n kind: \"forward_event\";\n targetScope: AutomationRouteScopeTemplate;\n idTemplate?: string;\n};\n\nexport type AutomationEventPayloadProjection = {\n kind: \"projection\";\n fields: Record<string, string>;\n};\n\nexport type AutomationReclassifyEventAction = {\n kind: \"reclassify_event\";\n source: string;\n eventType: string;\n payload: AutomationEventPayloadProjection;\n};\n\n/** Delivers the event to an agent in the route's scope as a turn run with the route's authority. */\nexport type AutomationNotifyAgentAction = {\n kind: \"notify_agent\";\n agentName: string;\n authority: AutomationAuthorityMode;\n};\n\nexport type AutomationRouteAction =\n | AutomationStartWorkflowAction\n | AutomationSendWorkflowEventAction\n | AutomationForwardEventAction\n | AutomationReclassifyEventAction\n | AutomationNotifyAgentAction;\n\n/** The authority an action runs its work with, or null for actions that only move events. */\nexport function automationRouteActionAuthority(\n action: AutomationRouteAction,\n): AutomationAuthorityMode | null {\n return action.kind === \"start_workflow\" || action.kind === \"notify_agent\"\n ? action.authority\n : null;\n}\n\nexport type AutomationRouteEventTrigger = {\n kind: \"event\";\n source: string;\n eventType: string;\n matcher: AutomationEventMatcher | null;\n};\n\nexport type AutomationRouteScheduleTrigger = {\n kind: \"schedule\";\n cadence: AutomationScheduleCadence;\n};\n\nexport type AutomationRouteTrigger = AutomationRouteEventTrigger | AutomationRouteScheduleTrigger;\n\nexport type AutomationRouteManagedBy = {\n kind: \"marketplace\";\n listingId: string;\n resourceKey: string;\n version: string;\n};\n\nexport type AutomationRouteMetadata = {\n createdByActors: AutomationActors;\n updatedByActors: AutomationActors;\n managedBy: AutomationRouteManagedBy | null;\n};\n\n/** Persisted routes may predate the authority rules enforced on create and activation. */\nexport type AutomationRouteDefinition = {\n trigger: AutomationRouteTrigger;\n action: AutomationRouteAction;\n id: string;\n name: string;\n enabled: boolean;\n priority: number;\n description?: string | null;\n metadata?: AutomationRouteMetadata | null;\n nextOccurrenceAt: string | null;\n};\n\nexport const isAutomationActorProvenancePath = (path: string) =>\n path === \"$.actor\" ||\n path.startsWith(\"$.actor.\") ||\n path.startsWith(\"$.actor[\") ||\n path === \"$.actors\" ||\n path.startsWith(\"$.actors.\") ||\n path.startsWith(\"$.actors[\");\n\n/** Scheduled routes have no triggering user, so only organization authority can start workflows. */\nexport const AUTOMATION_ROUTE_AUTHORITY_ERROR_MESSAGE =\n \"Scheduled workflows and agent notifications require organization-automation authority. Linked-user authority requires an external sender; delegated-user authority requires a user principal.\";\n\nconst automationActorMatcherSchema: z.ZodType<AutomationActorMatcher> = z.lazy(() =>\n z.discriminatedUnion(\"participation\", [\n z.discriminatedUnion(\"scope\", [\n z.strictObject({\n participation: z.literal(\"initiator\"),\n scope: z.literal(\"internal\"),\n type: z.string().trim().min(1).optional(),\n id: z.string().trim().min(1).optional(),\n }),\n z.strictObject({\n participation: z.literal(\"initiator\"),\n scope: z.literal(\"external\"),\n source: z.string().trim().min(1).optional(),\n type: z.string().trim().min(1).optional(),\n id: z.string().trim().min(1).optional(),\n }),\n ]),\n z.discriminatedUnion(\"scope\", [\n z.strictObject({\n participation: z.literal(\"principal\"),\n scope: z.literal(\"internal\"),\n type: z.string().trim().min(1).optional(),\n id: z.string().trim().min(1).optional(),\n }),\n z.strictObject({\n participation: z.literal(\"principal\"),\n scope: z.literal(\"external\"),\n source: z.string().trim().min(1).optional(),\n type: z.string().trim().min(1).optional(),\n id: z.string().trim().min(1).optional(),\n }),\n ]),\n z.discriminatedUnion(\"scope\", [\n z.strictObject({\n participation: z.literal(\"delegation\"),\n scope: z.literal(\"internal\"),\n type: z.string().trim().min(1).optional(),\n id: z.string().trim().min(1).optional(),\n role: z.enum([\"delegate\", \"assistant\"]).optional(),\n }),\n z.strictObject({\n participation: z.literal(\"delegation\"),\n scope: z.literal(\"external\"),\n source: z.string().trim().min(1).optional(),\n type: z.string().trim().min(1).optional(),\n id: z.string().trim().min(1).optional(),\n role: z.enum([\"delegate\", \"assistant\"]).optional(),\n }),\n ]),\n ]),\n);\n\nconst automationEventPathSchema = z.lazy(() =>\n z\n .string()\n .trim()\n .min(1)\n .refine((path) => !isAutomationActorProvenancePath(path), {\n message: \"Actor routing must use the structural actor matcher.\",\n }),\n);\n\nconst automationEventMatcherSchema: z.ZodType<AutomationEventMatcher> = z\n .lazy(() =>\n z.lazy(() =>\n z.union([\n z.strictObject({ actor: automationActorMatcherSchema }),\n z.object({ path: automationEventPathSchema, op: z.literal(\"exists\") }),\n z.object({\n path: automationEventPathSchema,\n op: z.union([\n z.literal(\"eq\"),\n z.literal(\"neq\"),\n z.literal(\"startsWith\"),\n z.literal(\"includes\"),\n ]),\n value: z.unknown(),\n }),\n z.object({ all: z.array(automationEventMatcherSchema) }),\n z.object({ any: z.array(automationEventMatcherSchema) }),\n z.object({ not: automationEventMatcherSchema }),\n ]),\n ),\n )\n .meta({ id: \"AutomationEventMatcher\" });\n\nconst automationRouteOrganizationScopeTemplateSchema = z.lazy(() =>\n z.object({\n kind: z.literal(\"org\"),\n orgIdTemplate: z.string().trim().min(1),\n }),\n);\nconst automationRouteUserScopeTemplateSchema = z.lazy(() =>\n z.object({\n kind: z.literal(\"user\"),\n userIdTemplate: z.string().trim().min(1),\n }),\n);\nconst automationRouteAppScopeTemplateSchema = z.lazy(() =>\n z.object({\n kind: z.literal(\"app\"),\n owner: z.discriminatedUnion(\"kind\", [\n automationRouteOrganizationScopeTemplateSchema,\n automationRouteUserScopeTemplateSchema,\n ]),\n appIdTemplate: z.string().trim().min(1),\n }),\n);\n\nconst automationRouteScopeTemplateSchema: z.ZodType<AutomationRouteScopeTemplate> = z\n .lazy(() =>\n z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"system\") }),\n automationRouteOrganizationScopeTemplateSchema,\n automationRouteUserScopeTemplateSchema,\n automationRouteAppScopeTemplateSchema,\n z.object({\n kind: z.literal(\"project\"),\n owner: z.discriminatedUnion(\"kind\", [\n automationRouteOrganizationScopeTemplateSchema,\n automationRouteUserScopeTemplateSchema,\n automationRouteAppScopeTemplateSchema,\n ]),\n projectIdTemplate: z.string().trim().min(1),\n }),\n ]),\n )\n .meta({ id: \"AutomationRouteScopeTemplate\" });\n\nfunction backofficePermissionKey(grant: BackofficePermissionRequirement): string {\n return `${grant.namespace}.${grant.permission}`;\n}\n\nconst automationRouteGrantsSchema = z.lazy(() =>\n z.array(backofficePermissionRequirementSchema).superRefine((grants, context) => {\n const encountered = new Set<string>();\n for (const [index, grant] of grants.entries()) {\n const key = backofficePermissionKey(grant);\n if (encountered.has(key)) {\n context.addIssue({\n code: \"custom\",\n path: [index],\n message: `Automation route grant '${key}' is duplicated.`,\n });\n }\n encountered.add(key);\n }\n }),\n) satisfies z.ZodType<readonly BackofficePermissionRequirement[]>;\n\nconst organizationAutomationAuthoritySchema = z.lazy(() =>\n z.strictObject({\n kind: z.literal(\"organization-automation\"),\n grants: automationRouteGrantsSchema,\n }),\n);\n\nconst automationAuthorityModeSchema = z.lazy(() =>\n z.discriminatedUnion(\"kind\", [\n z.strictObject({\n kind: z.literal(\"delegated-user\"),\n grants: z.union([automationRouteGrantsSchema, z.literal(\"inherit\")]),\n }),\n z.strictObject({\n kind: z.literal(\"linked-user\"),\n grants: z.union([automationRouteGrantsSchema, z.literal(\"inherit\")]),\n }),\n organizationAutomationAuthoritySchema,\n ]),\n);\n\nconst automationStartWorkflowActionSchema = z\n .lazy(() =>\n z.strictObject({\n kind: z.literal(\"start_workflow\"),\n authority: automationAuthorityModeSchema,\n workflowScriptPath: z.string().trim().min(1),\n instanceIdTemplate: z.string().trim().min(1),\n }),\n )\n .meta({\n id: \"AutomationStartWorkflowAction\",\n codemodeInputId: \"AutomationStartWorkflowActionInput\",\n }) satisfies z.ZodType<AutomationStartWorkflowAction>;\n\nconst automationWorkflowEventTargetSchema: z.ZodType<AutomationWorkflowEventTarget> = z\n .lazy(() =>\n z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"instance_id\"), template: z.string().trim().min(1) }).meta({\n id: \"AutomationWorkflowEventInstanceIdTarget\",\n }),\n z\n .object({ kind: z.literal(\"stored_instance_id\"), keyTemplate: z.string().trim().min(1) })\n .meta({\n id: \"AutomationWorkflowEventStoredInstanceIdTarget\",\n }),\n ]),\n )\n .meta({ id: \"AutomationWorkflowEventTarget\" });\n\nconst automationSendWorkflowEventActionSchema = z\n .lazy(() =>\n z.strictObject({\n kind: z.literal(\"send_workflow_event\"),\n target: automationWorkflowEventTargetSchema,\n eventType: z.string().trim().min(1),\n payload: z.unknown().optional(),\n }),\n )\n .meta({\n id: \"AutomationSendWorkflowEventAction\",\n codemodeInputId: \"AutomationSendWorkflowEventActionInput\",\n }) satisfies z.ZodType<AutomationSendWorkflowEventAction>;\n\nconst automationForwardEventActionSchema = z\n .lazy(() =>\n z.object({\n kind: z.literal(\"forward_event\"),\n targetScope: automationRouteScopeTemplateSchema,\n idTemplate: z.string().trim().min(1).optional(),\n }),\n )\n .meta({\n id: \"AutomationForwardEventAction\",\n codemodeInputId: \"AutomationForwardEventActionInput\",\n }) satisfies z.ZodType<AutomationForwardEventAction>;\n\nconst automationEventPayloadProjectionSchema = z\n .lazy(() =>\n z.strictObject({\n kind: z.literal(\"projection\"),\n fields: z.record(\n z.string().trim().min(1),\n z\n .string()\n .trim()\n .refine((path) => path === \"$\" || path.startsWith(\"$.\"), {\n message: \"Projection paths must start with $.\",\n }),\n ),\n }),\n )\n .meta({\n id: \"AutomationEventPayloadProjection\",\n }) satisfies z.ZodType<AutomationEventPayloadProjection>;\n\nconst automationReclassifyEventActionSchema = z\n .lazy(() =>\n z.strictObject({\n kind: z.literal(\"reclassify_event\"),\n source: z.string().trim().min(1),\n eventType: z.string().trim().min(1),\n payload: automationEventPayloadProjectionSchema,\n }),\n )\n .meta({\n id: \"AutomationReclassifyEventAction\",\n codemodeInputId: \"AutomationReclassifyEventActionInput\",\n }) satisfies z.ZodType<AutomationReclassifyEventAction>;\n\nconst automationNotifyAgentActionSchema = z\n .lazy(() =>\n z.strictObject({\n kind: z.literal(\"notify_agent\"),\n agentName: piAgentNameSchema,\n authority: automationAuthorityModeSchema,\n }),\n )\n .meta({\n id: \"AutomationNotifyAgentAction\",\n codemodeInputId: \"AutomationNotifyAgentActionInput\",\n }) satisfies z.ZodType<AutomationNotifyAgentAction>;\n\nexport const automationRouteActionSchema = z\n .lazy(() =>\n z.discriminatedUnion(\"kind\", [\n automationStartWorkflowActionSchema,\n automationSendWorkflowEventActionSchema,\n automationForwardEventActionSchema,\n automationReclassifyEventActionSchema,\n automationNotifyAgentActionSchema,\n ]),\n )\n .meta({\n id: \"AutomationRouteAction\",\n codemodeInputId: \"AutomationRouteActionInput\",\n }) satisfies z.ZodType<AutomationRouteAction>;\n\nexport const automationRouteManagedBySchema: z.ZodType<AutomationRouteManagedBy> = z\n .lazy(() =>\n z.strictObject({\n kind: z.literal(\"marketplace\"),\n listingId: z.string().trim().min(1),\n resourceKey: z.string().trim().min(1),\n version: z.string().trim().min(1),\n }),\n )\n .meta({ id: \"AutomationRouteManagedBy\" });\n\nconst automationRouteMetadataSchema = z.lazy(() =>\n z.strictObject({\n createdByActors: automationActorsSchema,\n updatedByActors: automationActorsSchema,\n managedBy: automationRouteManagedBySchema.nullable(),\n }),\n);\n\nconst automationRouteEventTriggerSchema = z.lazy(() =>\n z.object({\n kind: z.literal(\"event\"),\n source: z.string().trim().min(1),\n eventType: z.string().trim().min(1),\n matcher: automationEventMatcherSchema.nullable().default(null),\n }),\n);\n\nconst automationRouteScheduleTriggerSchema = z.lazy(() =>\n z.object({\n kind: z.literal(\"schedule\"),\n cadence: automationScheduleCadenceSchema,\n }),\n);\n\nconst automationRouteTriggerSchema: z.ZodType<AutomationRouteTrigger> = z\n .lazy(() =>\n z.discriminatedUnion(\"kind\", [\n automationRouteEventTriggerSchema,\n automationRouteScheduleTriggerSchema,\n ]),\n )\n .meta({ id: \"AutomationRouteTrigger\", codemodeInputId: \"AutomationRouteTriggerInput\" });\n\nconst automationRouteConfigurationSchema = z.lazy(() =>\n z.union(\n [\n z.object({\n trigger: automationRouteEventTriggerSchema,\n action: automationRouteActionSchema,\n }),\n z.object({\n trigger: automationRouteScheduleTriggerSchema,\n action: z.union([\n automationStartWorkflowActionSchema._zod.innerType.extend({\n authority: organizationAutomationAuthoritySchema,\n }),\n automationSendWorkflowEventActionSchema,\n automationForwardEventActionSchema,\n automationReclassifyEventActionSchema,\n automationNotifyAgentActionSchema._zod.innerType.extend({\n authority: organizationAutomationAuthoritySchema,\n }),\n ]),\n }),\n ],\n {\n error: (issue) => {\n const configuration = z\n .object({\n trigger: automationRouteScheduleTriggerSchema,\n action: automationRouteActionSchema,\n })\n .safeParse(issue.input);\n const authority = configuration.success\n ? automationRouteActionAuthority(configuration.data.action)\n : null;\n return authority && authority.kind !== \"organization-automation\"\n ? AUTOMATION_ROUTE_AUTHORITY_ERROR_MESSAGE\n : undefined;\n },\n },\n ),\n);\n\nexport const automationRouteSchema: z.ZodType<AutomationRouteDefinition> = z\n .lazy(() =>\n z.object({\n id: z.string().trim().min(1),\n name: z.string().trim().min(1),\n enabled: z.boolean(),\n priority: z.number().int(),\n trigger: automationRouteTriggerSchema,\n action: automationRouteActionSchema,\n description: z.string().nullable().optional(),\n metadata: automationRouteMetadataSchema.nullable(),\n nextOccurrenceAt: z.iso.datetime().nullable(),\n }),\n )\n .meta({ id: \"AutomationRoute\" });\n\nexport const automationRouteCreateInputSchema = z.lazy(() =>\n z\n .object({\n id: z.string().trim().min(1),\n name: z.string().trim().min(1),\n enabled: z.boolean().default(true),\n priority: z.number().int().default(1000),\n description: z.string().nullable().optional(),\n managedBy: automationRouteManagedBySchema.nullable().optional(),\n })\n .and(automationRouteConfigurationSchema),\n);\n\nconst automationRouteUpdateObjectSchema = z.lazy(() =>\n z.object({\n id: z.string().trim().min(1),\n name: z.string().trim().min(1).optional(),\n enabled: z.boolean().optional(),\n priority: z.number().int().optional(),\n trigger: automationRouteTriggerSchema.optional(),\n action: automationRouteActionSchema.optional(),\n description: z.string().nullable().optional(),\n managedBy: automationRouteManagedBySchema.nullable().optional(),\n }),\n);\n\nexport const automationRouteUpdatePayloadSchema = z.lazy(() =>\n automationRouteUpdateObjectSchema._zod.innerType\n .omit({ id: true })\n .refine((patch) => Object.values(patch).some((value) => typeof value !== \"undefined\"), {\n message: \"At least one route field must be provided.\",\n }),\n);\n\nexport const automationRouteUpdateInputSchema = z.lazy(() =>\n automationRouteUpdateObjectSchema.refine(\n ({ id: _id, ...patch }) => Object.values(patch).some((value) => typeof value !== \"undefined\"),\n { message: \"At least one route field must be provided.\" },\n ),\n);\n\nexport type AutomationRouteCreateInput = z.infer<typeof automationRouteCreateInputSchema>;\n\nexport type AutomationRouteUpdateInput = z.infer<typeof automationRouteUpdateInputSchema>;\n\nexport const automationRouterOperations = {\n \"router.list\": {\n description: \"List database-backed automation routing rules.\",\n permissions: [BACKOFFICE_PERMISSION.router.read],\n input: z.void(),\n output: z.lazy(() => z.array(automationRouteSchema)),\n },\n \"router.get\": {\n description: \"Get one database-backed automation routing rule.\",\n permissions: [BACKOFFICE_PERMISSION.router.read],\n input: z.lazy(() => z.object({ id: z.string().trim().min(1) })),\n output: z.lazy(() => automationRouteSchema.nullable()),\n },\n \"router.create\": {\n description: \"Create a database-backed automation routing rule.\",\n permissions: [BACKOFFICE_PERMISSION.router.modify],\n input: automationRouteCreateInputSchema,\n output: automationRouteSchema,\n },\n \"router.update\": {\n description: \"Update a database-backed automation routing rule.\",\n permissions: [BACKOFFICE_PERMISSION.router.modify],\n input: automationRouteUpdateInputSchema,\n output: z.lazy(() => automationRouteSchema.nullable()),\n },\n \"router.delete\": {\n description: \"Idempotently delete a database-backed automation route.\",\n permissions: [BACKOFFICE_PERMISSION.router.modify],\n input: z.lazy(() => z.object({ id: z.string().trim().min(1) })),\n output: z.lazy(() => z.object({ deleted: z.literal(true) })),\n },\n \"router.trigger-now\": {\n description: \"Trigger a scheduled automation route immediately without changing its cadence.\",\n permissions: [BACKOFFICE_PERMISSION.router.modify],\n input: z.lazy(() => z.object({ id: z.string().trim().min(1) })),\n output: z.lazy(() => z.object({ accepted: z.literal(true), eventId: z.string() }).nullable()),\n },\n} satisfies Record<string, BackofficeApiOperation>;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
//#region src/v0/capabilities.d.ts
|
|
3
|
+
declare const hookScopeOutputSchema: z.ZodLazy<z.ZodObject<{
|
|
4
|
+
id: z.ZodString;
|
|
5
|
+
label: z.ZodString;
|
|
6
|
+
capabilityId: z.ZodString;
|
|
7
|
+
capabilityLabel: z.ZodString;
|
|
8
|
+
kind: z.ZodEnum<{
|
|
9
|
+
connection: "connection";
|
|
10
|
+
system: "system";
|
|
11
|
+
}>;
|
|
12
|
+
configured: z.ZodOptional<z.ZodBoolean>;
|
|
13
|
+
healthy: z.ZodOptional<z.ZodBoolean>;
|
|
14
|
+
}, z.core.$strip>>;
|
|
15
|
+
declare const capabilitySummarySchema: z.ZodLazy<z.ZodObject<{
|
|
16
|
+
id: z.ZodString;
|
|
17
|
+
label: z.ZodString;
|
|
18
|
+
kind: z.ZodEnum<{
|
|
19
|
+
connection: "connection";
|
|
20
|
+
system: "system";
|
|
21
|
+
}>;
|
|
22
|
+
available: z.ZodBoolean;
|
|
23
|
+
configured: z.ZodBoolean;
|
|
24
|
+
healthy: z.ZodOptional<z.ZodBoolean>;
|
|
25
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
26
|
+
}, z.core.$strip>>;
|
|
27
|
+
declare const capabilitiesListOutputSchema: z.ZodLazy<z.ZodArray<z.ZodLazy<z.ZodObject<{
|
|
28
|
+
id: z.ZodString;
|
|
29
|
+
label: z.ZodString;
|
|
30
|
+
kind: z.ZodEnum<{
|
|
31
|
+
connection: "connection";
|
|
32
|
+
system: "system";
|
|
33
|
+
}>;
|
|
34
|
+
available: z.ZodBoolean;
|
|
35
|
+
configured: z.ZodBoolean;
|
|
36
|
+
healthy: z.ZodOptional<z.ZodBoolean>;
|
|
37
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
38
|
+
}, z.core.$strip>>>>;
|
|
39
|
+
type CapabilitiesListOutput = z.infer<typeof capabilitiesListOutputSchema>;
|
|
40
|
+
declare const hookScopesListOutputSchema: z.ZodLazy<z.ZodArray<z.ZodLazy<z.ZodObject<{
|
|
41
|
+
id: z.ZodString;
|
|
42
|
+
label: z.ZodString;
|
|
43
|
+
capabilityId: z.ZodString;
|
|
44
|
+
capabilityLabel: z.ZodString;
|
|
45
|
+
kind: z.ZodEnum<{
|
|
46
|
+
connection: "connection";
|
|
47
|
+
system: "system";
|
|
48
|
+
}>;
|
|
49
|
+
configured: z.ZodOptional<z.ZodBoolean>;
|
|
50
|
+
healthy: z.ZodOptional<z.ZodBoolean>;
|
|
51
|
+
}, z.core.$strip>>>>;
|
|
52
|
+
type HookScopesListOutput = z.infer<typeof hookScopesListOutputSchema>;
|
|
53
|
+
declare const capabilitiesOperations: {
|
|
54
|
+
"capabilities.list": {
|
|
55
|
+
description: string;
|
|
56
|
+
permissions: {
|
|
57
|
+
readonly namespace: "capabilities";
|
|
58
|
+
readonly permission: "read";
|
|
59
|
+
}[];
|
|
60
|
+
input: z.ZodVoid;
|
|
61
|
+
output: z.ZodLazy<z.ZodArray<z.ZodLazy<z.ZodObject<{
|
|
62
|
+
id: z.ZodString;
|
|
63
|
+
label: z.ZodString;
|
|
64
|
+
kind: z.ZodEnum<{
|
|
65
|
+
connection: "connection";
|
|
66
|
+
system: "system";
|
|
67
|
+
}>;
|
|
68
|
+
available: z.ZodBoolean;
|
|
69
|
+
configured: z.ZodBoolean;
|
|
70
|
+
healthy: z.ZodOptional<z.ZodBoolean>;
|
|
71
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
72
|
+
}, z.core.$strip>>>>;
|
|
73
|
+
};
|
|
74
|
+
"hooks.scopes.list": {
|
|
75
|
+
description: string;
|
|
76
|
+
permissions: {
|
|
77
|
+
readonly namespace: "hooks";
|
|
78
|
+
readonly permission: "read";
|
|
79
|
+
}[];
|
|
80
|
+
input: z.ZodVoid;
|
|
81
|
+
output: z.ZodLazy<z.ZodArray<z.ZodLazy<z.ZodObject<{
|
|
82
|
+
id: z.ZodString;
|
|
83
|
+
label: z.ZodString;
|
|
84
|
+
capabilityId: z.ZodString;
|
|
85
|
+
capabilityLabel: z.ZodString;
|
|
86
|
+
kind: z.ZodEnum<{
|
|
87
|
+
connection: "connection";
|
|
88
|
+
system: "system";
|
|
89
|
+
}>;
|
|
90
|
+
configured: z.ZodOptional<z.ZodBoolean>;
|
|
91
|
+
healthy: z.ZodOptional<z.ZodBoolean>;
|
|
92
|
+
}, z.core.$strip>>>>;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
//#endregion
|
|
96
|
+
export { CapabilitiesListOutput, HookScopesListOutput, capabilitiesListOutputSchema, capabilitiesOperations, capabilitySummarySchema, hookScopeOutputSchema, hookScopesListOutputSchema };
|
|
97
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","names":[],"sources":["../../src/v0/capabilities.ts"],"mappings":";;cAKa,uBAAqB,EAAA,QAAA,EAAA;;;;;;;;;;;;cAYrB,yBAAuB,EAAA,QAAA,EAAA;;;;;;;;;;;;cAYvB,8BAA4B,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;KAE7B,yBAAyB,EAAE,aAAa;cAEvC,4BAA0B,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;KAE3B,uBAAuB,EAAE,aAAa;cAErC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { BACKOFFICE_PERMISSION } from "./shared/permissions.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
//#region src/v0/capabilities.ts
|
|
4
|
+
const hookScopeOutputSchema = z.lazy(() => z.object({
|
|
5
|
+
id: z.string(),
|
|
6
|
+
label: z.string(),
|
|
7
|
+
capabilityId: z.string(),
|
|
8
|
+
capabilityLabel: z.string(),
|
|
9
|
+
kind: z.enum(["connection", "system"]),
|
|
10
|
+
configured: z.boolean().optional(),
|
|
11
|
+
healthy: z.boolean().optional()
|
|
12
|
+
}));
|
|
13
|
+
const capabilitySummarySchema = z.lazy(() => z.object({
|
|
14
|
+
id: z.string(),
|
|
15
|
+
label: z.string(),
|
|
16
|
+
kind: z.enum(["connection", "system"]),
|
|
17
|
+
available: z.boolean(),
|
|
18
|
+
configured: z.boolean(),
|
|
19
|
+
healthy: z.boolean().optional(),
|
|
20
|
+
reason: z.string().optional()
|
|
21
|
+
}));
|
|
22
|
+
const capabilitiesListOutputSchema = z.lazy(() => z.array(capabilitySummarySchema));
|
|
23
|
+
const hookScopesListOutputSchema = z.lazy(() => z.array(hookScopeOutputSchema));
|
|
24
|
+
const capabilitiesOperations = {
|
|
25
|
+
"capabilities.list": {
|
|
26
|
+
description: "List Backoffice capabilities and availability/configuration status.",
|
|
27
|
+
permissions: [BACKOFFICE_PERMISSION.capabilities.read],
|
|
28
|
+
input: z.void(),
|
|
29
|
+
output: capabilitiesListOutputSchema
|
|
30
|
+
},
|
|
31
|
+
"hooks.scopes.list": {
|
|
32
|
+
description: "List hook scopes usable with hooks.list --fragment.",
|
|
33
|
+
permissions: [BACKOFFICE_PERMISSION.hooks.read],
|
|
34
|
+
input: z.void(),
|
|
35
|
+
output: hookScopesListOutputSchema
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
//#endregion
|
|
39
|
+
export { capabilitiesListOutputSchema, capabilitiesOperations, capabilitySummarySchema, hookScopeOutputSchema, hookScopesListOutputSchema };
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","names":[],"sources":["../../src/v0/capabilities.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport type { BackofficeApiOperation } from \"../api\";\nimport { BACKOFFICE_PERMISSION } from \"./shared/permissions\";\n\nexport const hookScopeOutputSchema = z.lazy(() =>\n z.object({\n id: z.string(),\n label: z.string(),\n capabilityId: z.string(),\n capabilityLabel: z.string(),\n kind: z.enum([\"connection\", \"system\"]),\n configured: z.boolean().optional(),\n healthy: z.boolean().optional(),\n }),\n);\n\nexport const capabilitySummarySchema = z.lazy(() =>\n z.object({\n id: z.string(),\n label: z.string(),\n kind: z.enum([\"connection\", \"system\"]),\n available: z.boolean(),\n configured: z.boolean(),\n healthy: z.boolean().optional(),\n reason: z.string().optional(),\n }),\n);\n\nexport const capabilitiesListOutputSchema = z.lazy(() => z.array(capabilitySummarySchema));\n\nexport type CapabilitiesListOutput = z.infer<typeof capabilitiesListOutputSchema>;\n\nexport const hookScopesListOutputSchema = z.lazy(() => z.array(hookScopeOutputSchema));\n\nexport type HookScopesListOutput = z.infer<typeof hookScopesListOutputSchema>;\n\nexport const capabilitiesOperations = {\n \"capabilities.list\": {\n description: \"List Backoffice capabilities and availability/configuration status.\",\n permissions: [BACKOFFICE_PERMISSION.capabilities.read],\n input: z.void(),\n output: capabilitiesListOutputSchema,\n },\n \"hooks.scopes.list\": {\n description: \"List hook scopes usable with hooks.list --fragment.\",\n permissions: [BACKOFFICE_PERMISSION.hooks.read],\n input: z.void(),\n output: hookScopesListOutputSchema,\n },\n} satisfies Record<string, BackofficeApiOperation>;\n"],"mappings":";;;AAKA,MAAa,wBAAwB,EAAE,WACrC,EAAE,OAAO;CACP,IAAI,EAAE,OAAO;CACb,OAAO,EAAE,OAAO;CAChB,cAAc,EAAE,OAAO;CACvB,iBAAiB,EAAE,OAAO;CAC1B,MAAM,EAAE,KAAK,CAAC,cAAc,QAAQ,CAAC;CACrC,YAAY,EAAE,QAAQ,CAAC,CAAC,SAAS;CACjC,SAAS,EAAE,QAAQ,CAAC,CAAC,SAAS;AAChC,CAAC,CACH;AAEA,MAAa,0BAA0B,EAAE,WACvC,EAAE,OAAO;CACP,IAAI,EAAE,OAAO;CACb,OAAO,EAAE,OAAO;CAChB,MAAM,EAAE,KAAK,CAAC,cAAc,QAAQ,CAAC;CACrC,WAAW,EAAE,QAAQ;CACrB,YAAY,EAAE,QAAQ;CACtB,SAAS,EAAE,QAAQ,CAAC,CAAC,SAAS;CAC9B,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS;AAC9B,CAAC,CACH;AAEA,MAAa,+BAA+B,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIzF,MAAa,6BAA6B,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIrF,MAAa,yBAAyB;CACpC,qBAAqB;EACnB,aAAa;EACb,aAAa,CAAC,sBAAsB,aAAa,IAAI;EACrD,OAAO,EAAE,KAAK;EACd,QAAQ;CACV;CACA,qBAAqB;EACnB,aAAa;EACb,aAAa,CAAC,sBAAsB,MAAM,IAAI;EAC9C,OAAO,EAAE,KAAK;EACd,QAAQ;CACV;AACF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { BackofficeApiErrorCode } from "../errors.js";
|
|
2
|
+
import { BackofficeContextScope } from "./shared/scope.js";
|
|
3
|
+
import { backofficeApiV0 } from "./api.js";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
//#region src/v0/client.d.ts
|
|
6
|
+
type Operations = typeof backofficeApiV0.operations;
|
|
7
|
+
type OperationId = keyof Operations;
|
|
8
|
+
/** Operations whose input is `z.void()` are called without an input argument. */
|
|
9
|
+
type OperationInputArgs<TId extends OperationId> = Operations[TId]["input"] extends z.ZodVoid ? [] : [input: z.input<Operations[TId]["input"]>];
|
|
10
|
+
type BackofficeApiClient = {
|
|
11
|
+
/** Runs one operation in `scope`, returning its output parsed by the operation's schema. */
|
|
12
|
+
call<TId extends OperationId>(scope: BackofficeContextScope, operationId: TId, ...input: OperationInputArgs<TId>): Promise<z.output<Operations[TId]["output"]>>;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Backoffice answered with an error. `code` is null when the response was not an API error, e.g.
|
|
16
|
+
* a server failure or an intermediary's response, so the operation's outcome is unknown.
|
|
17
|
+
*/
|
|
18
|
+
declare class BackofficeApiRequestError extends Error {
|
|
19
|
+
readonly status: number;
|
|
20
|
+
readonly code: BackofficeApiErrorCode | null;
|
|
21
|
+
constructor(status: number, code: BackofficeApiErrorCode | null, message: string);
|
|
22
|
+
}
|
|
23
|
+
/** The request never got a response, e.g. a network failure, so the operation's outcome is unknown. */
|
|
24
|
+
declare class BackofficeApiUnreachableError extends Error {
|
|
25
|
+
constructor(cause: unknown);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Calls the v0 API at `origin` with one bearer credential. Network failures reject with
|
|
29
|
+
* `BackofficeApiUnreachableError`, and error responses with `BackofficeApiRequestError`. Anything
|
|
30
|
+
* else, such as a success body that does not match this contract, is a bug and rejects as is.
|
|
31
|
+
*/
|
|
32
|
+
declare function createBackofficeApiClient({ origin, accessToken, fetch }: {
|
|
33
|
+
origin: string;
|
|
34
|
+
accessToken: string;
|
|
35
|
+
fetch: typeof globalThis.fetch;
|
|
36
|
+
}): BackofficeApiClient;
|
|
37
|
+
//#endregion
|
|
38
|
+
export { BackofficeApiClient, BackofficeApiRequestError, BackofficeApiUnreachableError, createBackofficeApiClient };
|
|
39
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","names":[],"sources":["../../src/v0/client.ts"],"mappings":";;;;;KAMK,oBAAoB,gBAAgB;KACpC,oBAAoB;;KAGpB,mBAAmB,YAAY,eAAe,WAAW,sBAAsB,EAAE,gBAEjF,OAAO,EAAE,MAAM,WAAW;KAEnB;;EAEV,KAAK,YAAY,aACf,OAAO,wBACP,aAAa,QACV,OAAO,mBAAmB,OAC5B,QAAQ,EAAE,OAAO,WAAW;;;;;;cAOpB,kCAAkC;WACpC;WACA,MAAM;cAEH,gBAAgB,MAAM,+BAA+B;;;cAStD,sCAAsC;cACrC;;;;;;;iBAsBE,4BACd,QACA,aACA;EAEA;EACA;EACA,cAAc,WAAW;IACvB"}
|