@cargo-ai/cdk 1.0.6 → 1.0.8
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/README.md +4 -44
- package/build/src/cli/auth.d.ts.map +1 -1
- package/build/src/cli/auth.js +16 -12
- package/build/src/cli/commands/deploy.d.ts.map +1 -1
- package/build/src/cli/commands/deploy.js +81 -107
- package/build/src/cli/commands/from.d.ts +65 -0
- package/build/src/cli/commands/from.d.ts.map +1 -0
- package/build/src/cli/commands/from.js +285 -0
- package/build/src/cli/commands/init.d.ts +1 -1
- package/build/src/cli/commands/init.d.ts.map +1 -1
- package/build/src/cli/commands/init.js +44 -20
- package/build/src/cli/commands/inputTypes.d.ts.map +1 -1
- package/build/src/cli/commands/inputTypes.js +77 -6
- package/build/src/cli/commands/types.d.ts.map +1 -1
- package/build/src/cli/commands/types.js +87 -9
- package/build/src/cli/io.js +2 -2
- package/build/src/cli/version.d.ts.map +1 -1
- package/build/src/cli/version.js +10 -6
- package/build/src/deploy/apply.d.ts.map +1 -1
- package/build/src/deploy/apply.js +37 -30
- package/build/src/deploy/compile.d.ts.map +1 -1
- package/build/src/deploy/compile.js +7 -5
- package/build/src/deploy/destroy.d.ts.map +1 -1
- package/build/src/deploy/destroy.js +24 -14
- package/build/src/deploy/executors.live.d.ts.map +1 -1
- package/build/src/deploy/executors.live.js +202 -173
- package/build/src/deploy/import.js +2 -2
- package/build/src/deploy/index.js +1 -1
- package/build/src/deploy/lock.d.ts.map +1 -1
- package/build/src/deploy/lock.js +13 -10
- package/build/src/deploy/readers.live.d.ts.map +1 -1
- package/build/src/deploy/readers.live.js +27 -15
- package/build/src/deploy/refresh.d.ts.map +1 -1
- package/build/src/deploy/refresh.js +20 -18
- package/build/src/index.d.ts +4 -4
- package/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +2 -2
- package/build/src/refs.d.ts.map +1 -1
- package/build/src/refs.js +5 -1
- package/build/src/resources/actions.d.ts +1 -1
- package/build/src/resources/actions.d.ts.map +1 -1
- package/build/src/resources/actions.js +3 -2
- package/build/src/resources/agent.d.ts +23 -0
- package/build/src/resources/agent.d.ts.map +1 -1
- package/build/src/resources/agent.js +17 -0
- package/build/src/resources/capacity.d.ts +11 -0
- package/build/src/resources/capacity.d.ts.map +1 -1
- package/build/src/resources/capacity.js +81 -0
- package/build/src/resources/model.d.ts +11 -3
- package/build/src/resources/model.d.ts.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -142,6 +142,9 @@ export function liveReaders(api) {
|
|
|
142
142
|
}
|
|
143
143
|
},
|
|
144
144
|
async agent(entry) {
|
|
145
|
+
// Scope the not-found => GONE decision to the agent row only; the release
|
|
146
|
+
// fetch runs after (agentRelease maps its own not-found to null — "no
|
|
147
|
+
// deployed release yet", which must not be read as the agent being gone).
|
|
145
148
|
let row;
|
|
146
149
|
try {
|
|
147
150
|
const { agent } = await api.ai.agent.get(entry.uuid);
|
|
@@ -159,10 +162,17 @@ export function liveReaders(api) {
|
|
|
159
162
|
return present({ row, release: await agentRelease(entry.uuid) });
|
|
160
163
|
},
|
|
161
164
|
async play(entry) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
165
|
+
// Scope the not-found => GONE decision to the play row only; the workflow
|
|
166
|
+
// fetch runs after (workflowNodes maps its own not-found to null — "no
|
|
167
|
+
// deployed workflow yet", which must not be read as the play being gone).
|
|
168
|
+
let play;
|
|
169
|
+
try {
|
|
170
|
+
const result = await api.orchestration.play.get(entry.uuid);
|
|
171
|
+
play = result.play;
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
return goneOrThrow(error);
|
|
175
|
+
}
|
|
166
176
|
const row = pick(play, [
|
|
167
177
|
"name",
|
|
168
178
|
"description",
|
|
@@ -177,10 +187,16 @@ export function liveReaders(api) {
|
|
|
177
187
|
return present({ row, workflow: await workflowNodes(wf) });
|
|
178
188
|
},
|
|
179
189
|
async tool(entry) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
190
|
+
// See `play`: only the tool row's not-found means GONE; the workflow
|
|
191
|
+
// fetch's not-found (null) does not.
|
|
192
|
+
let tool;
|
|
193
|
+
try {
|
|
194
|
+
const result = await api.orchestration.tool.get(entry.uuid);
|
|
195
|
+
tool = result.tool;
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
return goneOrThrow(error);
|
|
199
|
+
}
|
|
184
200
|
const row = pick(tool, [
|
|
185
201
|
"name",
|
|
186
202
|
"icon",
|
|
@@ -325,15 +341,11 @@ export function liveReaders(api) {
|
|
|
325
341
|
return goneOrThrow(error);
|
|
326
342
|
}
|
|
327
343
|
},
|
|
328
|
-
//
|
|
329
|
-
// the join fields the executor reconciles.
|
|
344
|
+
// Fingerprint only the join fields the executor reconciles.
|
|
330
345
|
async relationship(entry) {
|
|
331
346
|
try {
|
|
332
|
-
const {
|
|
333
|
-
|
|
334
|
-
if (found === undefined)
|
|
335
|
-
return GONE;
|
|
336
|
-
return present(pick(found, [
|
|
347
|
+
const { relationship } = await api.storage.relationship.get(entry.uuid);
|
|
348
|
+
return present(pick(relationship, [
|
|
337
349
|
"fromModelUuid",
|
|
338
350
|
"fromColumnSlug",
|
|
339
351
|
"fromPropertySlug",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/deploy/refresh.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAKtD,MAAM,MAAM,QAAQ,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAKjE,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQlD;
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/deploy/refresh.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAKtD,MAAM,MAAM,QAAQ,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAKjE,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQlD;AAoBD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,EAAE,CAAC,CAuBvB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,CAavE"}
|
|
@@ -16,6 +16,17 @@ export function fingerprint(value) {
|
|
|
16
16
|
function kindOf(id) {
|
|
17
17
|
return id.slice(0, id.indexOf(":"));
|
|
18
18
|
}
|
|
19
|
+
// Read one resource live, tolerating failures. A read error (network, auth,
|
|
20
|
+
// unexpected) must NOT look like a deletion — return undefined so detectDrift
|
|
21
|
+
// records "unknown" rather than mass-recreating on a transient failure.
|
|
22
|
+
async function readLive(reader, entry) {
|
|
23
|
+
try {
|
|
24
|
+
return reader === undefined ? { exists: true } : await reader(entry);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
19
30
|
/**
|
|
20
31
|
* Read every state-tracked resource live and classify drift:
|
|
21
32
|
* - deleted — gone from the workspace (re-deploy would recreate it)
|
|
@@ -28,27 +39,18 @@ export async function detectDrift(state, readers) {
|
|
|
28
39
|
for (const [id, entry] of Object.entries(state.resources)) {
|
|
29
40
|
const kind = kindOf(id);
|
|
30
41
|
const reader = readers[kind];
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
// transient failure.
|
|
34
|
-
let live;
|
|
35
|
-
try {
|
|
36
|
-
live = reader === undefined ? { exists: true } : await reader(entry);
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
42
|
+
const live = await readLive(reader, entry);
|
|
43
|
+
if (live === undefined) {
|
|
39
44
|
drift.push({ id, kind, status: "unknown" });
|
|
40
45
|
continue;
|
|
41
46
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
else {
|
|
50
|
-
status = live.fingerprint === entry.live ? "unchanged" : "modified";
|
|
51
|
-
}
|
|
47
|
+
const status = live.exists === false
|
|
48
|
+
? "deleted"
|
|
49
|
+
: entry.live === undefined || live.fingerprint === undefined
|
|
50
|
+
? "unknown"
|
|
51
|
+
: live.fingerprint === entry.live
|
|
52
|
+
? "unchanged"
|
|
53
|
+
: "modified";
|
|
52
54
|
drift.push({ id, kind, status });
|
|
53
55
|
}
|
|
54
56
|
return drift;
|
package/build/src/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export type { ActionOptions, AgentHandle, AgentSpec, AgentUse, ConnectorActionOptions, ModelOptions, } from "./resources/agent.js";
|
|
2
|
-
export { defineAgent } from "./resources/agent.js";
|
|
1
|
+
export type { ActionOptions, AgentHandle, AgentSpec, AgentTriggerConfigs, AgentUse, ConnectorActionOptions, ModelOptions, TriggerSpec, } from "./resources/agent.js";
|
|
2
|
+
export { connectorTrigger, defineAgent } from "./resources/agent.js";
|
|
3
3
|
export type { AppHandle, AppSpec } from "./resources/app.js";
|
|
4
4
|
export { defineApp } from "./resources/app.js";
|
|
5
5
|
export type { AllocationExpirationPolicy, CapacityColor, CapacityHandle, CapacitySpec, } from "./resources/capacity.js";
|
|
6
|
-
export { defineCapacity } from "./resources/capacity.js";
|
|
6
|
+
export { defineCapacity, memberIds } from "./resources/capacity.js";
|
|
7
7
|
export type { ConnectorConfigs, ConnectorHandle, ConnectorSpec, } from "./resources/connector.js";
|
|
8
8
|
export { defineConnector } from "./resources/connector.js";
|
|
9
9
|
export type { ContextHandle, ContextSpec } from "./resources/context.js";
|
|
@@ -16,7 +16,7 @@ export type { FolderHandle, FolderKind, FolderSpec, } from "./resources/folder.j
|
|
|
16
16
|
export { defineFolder } from "./resources/folder.js";
|
|
17
17
|
export type { McpServerHandle, McpServerSpec } from "./resources/mcpServer.js";
|
|
18
18
|
export { defineMcpServer } from "./resources/mcpServer.js";
|
|
19
|
-
export type { ExtractorConfigs, ModelHandle, ModelSpec, UnificationColumnSpec, UnificationParentSpec, UnificationSpec, } from "./resources/model.js";
|
|
19
|
+
export type { ExtractorConfigs, ExtractorSlugs, ModelHandle, ModelSpec, UnificationColumnSpec, UnificationParentSpec, UnificationSpec, } from "./resources/model.js";
|
|
20
20
|
export { defineModel } from "./resources/model.js";
|
|
21
21
|
export type { PlayHandle, PlaySpec } from "./resources/play.js";
|
|
22
22
|
export { definePlay } from "./resources/play.js";
|
package/build/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAUA,YAAY,EACV,aAAa,EACb,WAAW,EACX,SAAS,EACT,QAAQ,EACR,sBAAsB,EACtB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/src/index.js
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
// "c", { datasetUuid: connector.datasetUuid })`). `plan`/`apply`/`deploy`
|
|
7
7
|
// reconcile the graph. The heavier, independently-published workflow + worker
|
|
8
8
|
// SDKs are re-exported so they're reachable from the same import.
|
|
9
|
-
export { defineAgent } from "./resources/agent.js";
|
|
9
|
+
export { connectorTrigger, defineAgent } from "./resources/agent.js";
|
|
10
10
|
export { defineApp } from "./resources/app.js";
|
|
11
|
-
export { defineCapacity } from "./resources/capacity.js";
|
|
11
|
+
export { defineCapacity, memberIds } from "./resources/capacity.js";
|
|
12
12
|
export { defineConnector } from "./resources/connector.js";
|
|
13
13
|
export { defineContext } from "./resources/context.js";
|
|
14
14
|
export { defineCustomIntegration } from "./resources/customIntegration.js";
|
package/build/src/refs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/refs.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,SAAS,GACT,OAAO,GACP,QAAQ,GACR,MAAM,GACN,MAAM,GACN,OAAO,GACP,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IAAI;IACrE,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;AACpD,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAChD,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5C,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9C,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1C,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1C,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5C,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9C,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAEhD,uEAAuE;AACvE,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,YAG1C,CAAC;AACH,+EAA+E;AAC/E,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,UAGxC,CAAC;AACH,sCAAsC;AACtC,eAAO,MAAM,QAAQ,SAAU,MAAM,KAAG,QAGtC,CAAC;AACH,kCAAkC;AAClC,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,SAGvC,CAAC;AACH,+EAA+E;AAC/E,eAAO,MAAM,OAAO,SAAU,MAAM,KAAG,OAAuC,CAAC;AAC/E,gFAAgF;AAChF,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,SAGvC,CAAC;AACH,mCAAmC;AACnC,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,UAGxC,CAAC;AAKH;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,KAAK,GAAG,MAAM,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,cAClB;IAAE,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,cACjD,MAAM,gBACJ,MAAM,KACnB,
|
|
1
|
+
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/refs.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,SAAS,GACT,OAAO,GACP,QAAQ,GACR,MAAM,GACN,MAAM,GACN,OAAO,GACP,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IAAI;IACrE,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;AACpD,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAChD,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5C,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9C,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1C,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1C,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5C,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9C,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAEhD,uEAAuE;AACvE,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,YAG1C,CAAC;AACH,+EAA+E;AAC/E,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,UAGxC,CAAC;AACH,sCAAsC;AACtC,eAAO,MAAM,QAAQ,SAAU,MAAM,KAAG,QAGtC,CAAC;AACH,kCAAkC;AAClC,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,SAGvC,CAAC;AACH,+EAA+E;AAC/E,eAAO,MAAM,OAAO,SAAU,MAAM,KAAG,OAAuC,CAAC;AAC/E,gFAAgF;AAChF,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,SAGvC,CAAC;AACH,mCAAmC;AACnC,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,UAGxC,CAAC;AAKH;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,KAAK,GAAG,MAAM,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,cAClB;IAAE,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,cACjD,MAAM,gBACJ,MAAM,KACnB,kBAUD,CAAC;AAEH,iEAAiE;AACjE,eAAO,MAAM,OAAO,QAAS;IAAE,IAAI,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,KAAG,KAAK,GAAG,MACtD,CAAC"}
|
package/build/src/refs.js
CHANGED
|
@@ -46,7 +46,11 @@ export const segmentRef = (uuid) => ({
|
|
|
46
46
|
export const connectorActionRef = (connector, actionSlug, integration) => ({
|
|
47
47
|
resource: "connectorAction",
|
|
48
48
|
connectorUuid: connector.uuid,
|
|
49
|
-
integration: integration
|
|
49
|
+
integration: integration !== undefined
|
|
50
|
+
? integration
|
|
51
|
+
: connector.integrationSlug !== undefined
|
|
52
|
+
? connector.integrationSlug
|
|
53
|
+
: "",
|
|
50
54
|
actionSlug,
|
|
51
55
|
});
|
|
52
56
|
/** Extract the uuid from a handle or ref (both carry `uuid`). */
|
|
@@ -46,6 +46,6 @@ export type NormalizedUses = {
|
|
|
46
46
|
subAgents: unknown[];
|
|
47
47
|
connectorActions: unknown[];
|
|
48
48
|
};
|
|
49
|
-
export declare function normalizeUses(
|
|
49
|
+
export declare function normalizeUses(rawUses: readonly AgentUse[] | undefined): NormalizedUses;
|
|
50
50
|
export {};
|
|
51
51
|
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/resources/actions.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,kBAAkB,EAAW,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,sFAAsF;AACtF,MAAM,MAAM,aAAa,GAAG;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,0DAA0D;IAC1D,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG;IACnD,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wEAAwE;AACxE,KAAK,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ,GAChB,WAAW,CAAC,MAAM,CAAC,GACnB,WAAW,CAAC,OAAO,CAAC,GACpB,kBAAkB,GAClB,WAAW,GACX,CAAC,aAAa,GAAG;IACf,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;CAC1D,CAAC,GACF,CAAC,sBAAsB,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAA;CAAE,CAAC,GAC/D,CAAC,YAAY,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AAoBnD,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,gBAAgB,EAAE,OAAO,EAAE,CAAC;CAC7B,CAAC;AAIF,wBAAgB,aAAa,CAC3B,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/resources/actions.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,kBAAkB,EAAW,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,sFAAsF;AACtF,MAAM,MAAM,aAAa,GAAG;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,0DAA0D;IAC1D,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG;IACnD,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wEAAwE;AACxE,KAAK,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ,GAChB,WAAW,CAAC,MAAM,CAAC,GACnB,WAAW,CAAC,OAAO,CAAC,GACpB,kBAAkB,GAClB,WAAW,GACX,CAAC,aAAa,GAAG;IACf,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;CAC1D,CAAC,GACF,CAAC,sBAAsB,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAA;CAAE,CAAC,GAC/D,CAAC,YAAY,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AAoBnD,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,gBAAgB,EAAE,OAAO,EAAE,CAAC;CAC7B,CAAC;AAIF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,GACvC,cAAc,CAkEhB"}
|
|
@@ -15,12 +15,13 @@ function normalizeOptions(opts) {
|
|
|
15
15
|
}
|
|
16
16
|
// Split the `uses` array into the four release buckets, keyed off each ref's
|
|
17
17
|
// `resource` discriminator.
|
|
18
|
-
export function normalizeUses(
|
|
18
|
+
export function normalizeUses(rawUses) {
|
|
19
19
|
const models = [];
|
|
20
20
|
const tools = [];
|
|
21
21
|
const subAgents = [];
|
|
22
22
|
const connectorActions = [];
|
|
23
|
-
|
|
23
|
+
const uses = rawUses === undefined ? [] : rawUses;
|
|
24
|
+
for (const use of uses) {
|
|
24
25
|
const wrapped = "ref" in use;
|
|
25
26
|
const ref = wrapped ? use.ref : use;
|
|
26
27
|
const opts = wrapped ? use : {};
|
|
@@ -19,6 +19,29 @@ export type TriggerSpec = {
|
|
|
19
19
|
config?: Record<string, unknown>;
|
|
20
20
|
name?: string;
|
|
21
21
|
};
|
|
22
|
+
export interface AgentTriggerConfigs {
|
|
23
|
+
}
|
|
24
|
+
type AgentTriggerConfigFor<S extends string> = S extends keyof AgentTriggerConfigs ? AgentTriggerConfigs[S] : Record<string, unknown>;
|
|
25
|
+
/**
|
|
26
|
+
* Build a connector trigger with per-integration typed `config`. TypeScript
|
|
27
|
+
* can't type a bare trigger object literal inside the `triggers` array — it
|
|
28
|
+
* can't infer each element's `integration` through the array — so this helper
|
|
29
|
+
* narrows `config` to the integration's schema from the single `integration`
|
|
30
|
+
* argument (the same single-object inference `defineConnector` relies on):
|
|
31
|
+
*
|
|
32
|
+
* connectorTrigger({ integration: "slack", connector: slack,
|
|
33
|
+
* config: { channelIds: ["C0XXXX"] } })
|
|
34
|
+
*
|
|
35
|
+
* A bare `{ type: "connector", … }` object still works too, with `config` left
|
|
36
|
+
* as a loose `Record<string, unknown>`. Config schemas are populated by
|
|
37
|
+
* `cargo-ai cdk types`; an unsynced/custom integration keeps the loose record.
|
|
38
|
+
*/
|
|
39
|
+
export declare function connectorTrigger<S extends string>(spec: {
|
|
40
|
+
integration: S;
|
|
41
|
+
connector?: ConnectorHandle | ConnectorRef;
|
|
42
|
+
config?: AgentTriggerConfigFor<S>;
|
|
43
|
+
name?: string;
|
|
44
|
+
}): TriggerSpec;
|
|
22
45
|
export type AgentSpec = {
|
|
23
46
|
name?: string;
|
|
24
47
|
description?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/resources/agent.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAwB,KAAK,KAAK,EAAS,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAW,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,YAAY,EACV,aAAa,EACb,QAAQ,EACR,sBAAsB,EACtB,YAAY,GACb,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;AAE7E,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3D;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,SAAS,CAAC,EAAE,eAAe,GAAG,YAAY,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/resources/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,23 @@
|
|
|
6
6
|
import { register, resourceId, token } from "../core.js";
|
|
7
7
|
import { refUuid } from "../refs.js";
|
|
8
8
|
import { normalizeUses } from "./actions.js";
|
|
9
|
+
/**
|
|
10
|
+
* Build a connector trigger with per-integration typed `config`. TypeScript
|
|
11
|
+
* can't type a bare trigger object literal inside the `triggers` array — it
|
|
12
|
+
* can't infer each element's `integration` through the array — so this helper
|
|
13
|
+
* narrows `config` to the integration's schema from the single `integration`
|
|
14
|
+
* argument (the same single-object inference `defineConnector` relies on):
|
|
15
|
+
*
|
|
16
|
+
* connectorTrigger({ integration: "slack", connector: slack,
|
|
17
|
+
* config: { channelIds: ["C0XXXX"] } })
|
|
18
|
+
*
|
|
19
|
+
* A bare `{ type: "connector", … }` object still works too, with `config` left
|
|
20
|
+
* as a loose `Record<string, unknown>`. Config schemas are populated by
|
|
21
|
+
* `cargo-ai cdk types`; an unsynced/custom integration keeps the loose record.
|
|
22
|
+
*/
|
|
23
|
+
export function connectorTrigger(spec) {
|
|
24
|
+
return { type: "connector", ...spec };
|
|
25
|
+
}
|
|
9
26
|
// Lower triggers to their wire form — a connector trigger references its
|
|
10
27
|
// connector by handle/ref, which becomes `connectorUuid`.
|
|
11
28
|
function normalizeTriggers(triggers) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { RevenueOrganizationTypes, SegmentationTypes } from "@cargo-ai/types";
|
|
2
2
|
import { type Token } from "../core.js";
|
|
3
3
|
import { type ModelRef } from "../refs.js";
|
|
4
|
+
import type { ConnectorHandle } from "./connector.js";
|
|
4
5
|
import type { ModelHandle } from "./model.js";
|
|
5
6
|
export type CapacityColor = RevenueOrganizationTypes.CapacityColor;
|
|
6
7
|
export type AllocationExpirationPolicy = RevenueOrganizationTypes.AllocationExpirationPolicy;
|
|
@@ -27,5 +28,15 @@ export type CapacityHandle = {
|
|
|
27
28
|
readonly uuid: Token;
|
|
28
29
|
readonly resource: "capacity";
|
|
29
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* The `{{member.ids.<connector_slug>}}` expression for a capacity filter —
|
|
33
|
+
* resolved by the backend at allocation time to the members' user ids in that
|
|
34
|
+
* connector. Use it as the `values` of a `kind: "string"`, `operator: "is"`
|
|
35
|
+
* condition on the column holding each record's owner id. Pass a connector
|
|
36
|
+
* handle, or a raw workspace connector slug for a connector not defined in
|
|
37
|
+
* code (e.g. an adopted OAuth connector whose actual slug differs from the
|
|
38
|
+
* CDK slug).
|
|
39
|
+
*/
|
|
40
|
+
export declare function memberIds(connector: ConnectorHandle | string): string;
|
|
30
41
|
export declare function defineCapacity(slug: string, spec: CapacitySpec): CapacityHandle;
|
|
31
42
|
//# sourceMappingURL=capacity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacity.d.ts","sourceRoot":"","sources":["../../../src/resources/capacity.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAwB,KAAK,KAAK,EAAS,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,KAAK,QAAQ,EAAW,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG,wBAAwB,CAAC,aAAa,CAAC;AACnE,MAAM,MAAM,0BAA0B,GACpC,wBAAwB,CAAC,0BAA0B,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,KAAK,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,0BAA0B,CAAC,EAAE,0BAA0B,CAAC;IACxD,kCAAkC;IAClC,MAAM,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;CAC/B,CAAC;AAEF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,GACjB,cAAc,
|
|
1
|
+
{"version":3,"file":"capacity.d.ts","sourceRoot":"","sources":["../../../src/resources/capacity.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAwB,KAAK,KAAK,EAAS,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,KAAK,QAAQ,EAAW,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG,wBAAwB,CAAC,aAAa,CAAC;AACnE,MAAM,MAAM,0BAA0B,GACpC,wBAAwB,CAAC,0BAA0B,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,KAAK,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,0BAA0B,CAAC,EAAE,0BAA0B,CAAC;IACxD,kCAAkC;IAClC,MAAM,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;CAC/B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,GAAG,MAAM,CAGrE;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,GACjB,cAAc,CA0BhB"}
|
|
@@ -5,8 +5,22 @@
|
|
|
5
5
|
// revenue-organization `CreateCapacityPayload`.
|
|
6
6
|
import { register, resourceId, token } from "../core.js";
|
|
7
7
|
import { refUuid } from "../refs.js";
|
|
8
|
+
/**
|
|
9
|
+
* The `{{member.ids.<connector_slug>}}` expression for a capacity filter —
|
|
10
|
+
* resolved by the backend at allocation time to the members' user ids in that
|
|
11
|
+
* connector. Use it as the `values` of a `kind: "string"`, `operator: "is"`
|
|
12
|
+
* condition on the column holding each record's owner id. Pass a connector
|
|
13
|
+
* handle, or a raw workspace connector slug for a connector not defined in
|
|
14
|
+
* code (e.g. an adopted OAuth connector whose actual slug differs from the
|
|
15
|
+
* CDK slug).
|
|
16
|
+
*/
|
|
17
|
+
export function memberIds(connector) {
|
|
18
|
+
const slug = typeof connector === "string" ? connector : connector.slug;
|
|
19
|
+
return `{{member.ids.${slug}}}`;
|
|
20
|
+
}
|
|
8
21
|
export function defineCapacity(slug, spec) {
|
|
9
22
|
const id = resourceId("capacity", slug);
|
|
23
|
+
validateCapacityFilter(slug, spec);
|
|
10
24
|
register({
|
|
11
25
|
id,
|
|
12
26
|
kind: "capacity",
|
|
@@ -28,6 +42,73 @@ export function defineCapacity(slug, spec) {
|
|
|
28
42
|
});
|
|
29
43
|
return { slug, uuid: token(id, "uuid"), resource: "capacity" };
|
|
30
44
|
}
|
|
45
|
+
// Mirrors the backend's capacity-filter rules (create/update reject the payload
|
|
46
|
+
// otherwise): a model-mapped capacity needs id/time columns and a filter with at
|
|
47
|
+
// least one member-ids condition, and every member-ids condition must be a
|
|
48
|
+
// single-valued `is` on a string column of the capacity's own model.
|
|
49
|
+
const MEMBER_IDS = /{{\s*member\.ids\.[a-z0-9_-]+\s*}}/;
|
|
50
|
+
const MEMBERS_IDS_TYPO = /{{\s*members\.ids\./;
|
|
51
|
+
function fail(slug, message) {
|
|
52
|
+
throw new Error(`capacity "${slug}" — ${message}`);
|
|
53
|
+
}
|
|
54
|
+
function validateCapacityFilter(slug, spec) {
|
|
55
|
+
const conditions = spec.filter === undefined
|
|
56
|
+
? []
|
|
57
|
+
: spec.filter.groups.flatMap((group) => group.conditions);
|
|
58
|
+
const memberIdsConditions = conditions.filter((condition) => {
|
|
59
|
+
const strings = stringsIn(condition);
|
|
60
|
+
if (strings.some((value) => MEMBERS_IDS_TYPO.test(value))) {
|
|
61
|
+
fail(slug, 'filter references "{{members.ids.…}}" — the expression root is singular; use memberIds(connector) → "{{member.ids.<connector_slug>}}".');
|
|
62
|
+
}
|
|
63
|
+
return strings.some((value) => MEMBER_IDS.test(value));
|
|
64
|
+
});
|
|
65
|
+
for (const condition of memberIdsConditions) {
|
|
66
|
+
if (condition.kind !== "string") {
|
|
67
|
+
fail(slug, `a member-ids expression must live on a { kind: "string" } condition, got kind "${condition.kind}".`);
|
|
68
|
+
}
|
|
69
|
+
if (condition.operator !== "is") {
|
|
70
|
+
fail(slug, `member-ids conditions only support the "is" operator, got "${condition.operator}".`);
|
|
71
|
+
}
|
|
72
|
+
if (Array.isArray(condition.values)) {
|
|
73
|
+
fail(slug, "member-ids conditions take a single value — pass values: memberIds(connector), not an array.");
|
|
74
|
+
}
|
|
75
|
+
if (condition.relatedModelUuid !== undefined) {
|
|
76
|
+
fail(slug, "member-ids conditions on a related model are not supported — reference a column of the capacity's own model.");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (spec.model === undefined)
|
|
80
|
+
return;
|
|
81
|
+
if (spec.filter === undefined) {
|
|
82
|
+
fail(slug, "a capacity with a model needs a filter mapping records to members — add a condition with values: memberIds(connector).");
|
|
83
|
+
}
|
|
84
|
+
if (spec.idColumnSlug === undefined) {
|
|
85
|
+
fail(slug, "idColumnSlug is required when model is set.");
|
|
86
|
+
}
|
|
87
|
+
if (spec.timeColumnSlug === undefined) {
|
|
88
|
+
fail(slug, "timeColumnSlug is required when model is set.");
|
|
89
|
+
}
|
|
90
|
+
if (memberIdsConditions.length === 0) {
|
|
91
|
+
fail(slug, 'the filter must map records to members — add { kind: "string", columnSlug: "<owner column>", operator: "is", values: memberIds(connector) }.');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** Every string reachable in a condition (values live at different keys per kind). */
|
|
95
|
+
function stringsIn(value, acc = []) {
|
|
96
|
+
if (typeof value === "string") {
|
|
97
|
+
acc.push(value);
|
|
98
|
+
return acc;
|
|
99
|
+
}
|
|
100
|
+
if (Array.isArray(value)) {
|
|
101
|
+
for (const item of value)
|
|
102
|
+
stringsIn(item, acc);
|
|
103
|
+
return acc;
|
|
104
|
+
}
|
|
105
|
+
if (value !== null && typeof value === "object") {
|
|
106
|
+
for (const item of Object.values(value))
|
|
107
|
+
stringsIn(item, acc);
|
|
108
|
+
return acc;
|
|
109
|
+
}
|
|
110
|
+
return acc;
|
|
111
|
+
}
|
|
31
112
|
function toTitle(slug) {
|
|
32
113
|
return slug
|
|
33
114
|
.split(/[-_]/)
|
|
@@ -40,12 +40,20 @@ export type UnificationSpec = {
|
|
|
40
40
|
export interface ExtractorConfigs {
|
|
41
41
|
}
|
|
42
42
|
type ExtractorConfigFor<S extends string, E extends string> = S extends keyof ExtractorConfigs ? E extends keyof ExtractorConfigs[S] ? ExtractorConfigs[S][E] : Record<string, unknown> : Record<string, unknown>;
|
|
43
|
-
export
|
|
43
|
+
export interface ExtractorSlugs {
|
|
44
|
+
}
|
|
45
|
+
type ExtractorSlugFor<S extends string> = S extends keyof ExtractorSlugs ? ExtractorSlugs[S] & string : string;
|
|
46
|
+
type LiteralUnion<T extends string> = T | (string & {});
|
|
47
|
+
export type ModelSpec<S extends string = string, E extends LiteralUnion<ExtractorSlugFor<S>> = LiteralUnion<ExtractorSlugFor<S>>> = {
|
|
44
48
|
name?: string;
|
|
45
49
|
description?: string;
|
|
46
50
|
/** Source dataset — a connector handle (its dataset) or a `datasetRef(uuid)`. */
|
|
47
51
|
dataset: ConnectorHandle<S> | DatasetRef;
|
|
48
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* An extractor the source's integration exposes, e.g. "fetchRecords". After
|
|
54
|
+
* `cargo-ai cdk types`, editors autocomplete the connector's known extractors;
|
|
55
|
+
* an unsynced/newer slug is still accepted.
|
|
56
|
+
*/
|
|
49
57
|
extractSlug: E;
|
|
50
58
|
/** Extractor config — validated against the extractor's schema on apply. */
|
|
51
59
|
config?: ExtractorConfigFor<S, E>;
|
|
@@ -64,6 +72,6 @@ export type ModelHandle = {
|
|
|
64
72
|
readonly uuid: Token;
|
|
65
73
|
readonly resource: "model";
|
|
66
74
|
};
|
|
67
|
-
export declare function defineModel<S extends string, E extends
|
|
75
|
+
export declare function defineModel<S extends string, E extends LiteralUnion<ExtractorSlugFor<S>>>(slug: string, spec: ModelSpec<S, E>): ModelHandle;
|
|
68
76
|
export {};
|
|
69
77
|
//# sourceMappingURL=model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/resources/model.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,EAAwB,KAAK,KAAK,EAAS,MAAM,YAAY,CAAC;AACrE,OAAO,EACL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,QAAQ,EAEd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAKnC,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAKF,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAOjE,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,GACzB;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,YAAY,CAAC,oBAAoB,CAAC;IACxC,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,8DAA8D;IAC9D,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC;CACnC,CAAC;AAUN,MAAM,WAAW,gBAAgB;CAAG;AAEpC,KAAK,kBAAkB,CACrB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,IACd,CAAC,SAAS,MAAM,gBAAgB,GAChC,CAAC,SAAS,MAAM,gBAAgB,CAAC,CAAC,CAAC,GACjC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACtB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/resources/model.ts"],"names":[],"mappings":"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"}
|