@stigmer/sdk 3.5.3 → 3.6.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.
Files changed (42) hide show
  1. package/__tests__/manifest.test.js +65 -1
  2. package/__tests__/manifest.test.js.map +1 -1
  3. package/gen/agentchannel.d.ts +2 -1
  4. package/gen/agentchannel.d.ts.map +1 -1
  5. package/gen/agentchannel.js +8 -0
  6. package/gen/agentchannel.js.map +1 -1
  7. package/gen/authorization-config.d.ts.map +1 -1
  8. package/gen/authorization-config.js +1 -0
  9. package/gen/authorization-config.js.map +1 -1
  10. package/gen/client.d.ts +4 -0
  11. package/gen/client.d.ts.map +1 -1
  12. package/gen/client.js +4 -0
  13. package/gen/client.js.map +1 -1
  14. package/gen/schedule.d.ts +40 -0
  15. package/gen/schedule.d.ts.map +1 -0
  16. package/gen/schedule.js +133 -0
  17. package/gen/schedule.js.map +1 -0
  18. package/index.d.ts +2 -1
  19. package/index.d.ts.map +1 -1
  20. package/index.js +2 -1
  21. package/index.js.map +1 -1
  22. package/manifest/document.d.ts +31 -0
  23. package/manifest/document.d.ts.map +1 -0
  24. package/manifest/document.js +62 -0
  25. package/manifest/document.js.map +1 -0
  26. package/manifest/index.d.ts +1 -0
  27. package/manifest/index.d.ts.map +1 -1
  28. package/manifest/index.js +1 -0
  29. package/manifest/index.js.map +1 -1
  30. package/manifest/registry.d.ts.map +1 -1
  31. package/manifest/registry.js +16 -1
  32. package/manifest/registry.js.map +1 -1
  33. package/package.json +2 -2
  34. package/src/__tests__/manifest.test.ts +78 -1
  35. package/src/gen/agentchannel.ts +7 -1
  36. package/src/gen/authorization-config.ts +1 -0
  37. package/src/gen/client.ts +5 -0
  38. package/src/gen/schedule.ts +136 -0
  39. package/src/index.ts +7 -0
  40. package/src/manifest/document.ts +70 -0
  41. package/src/manifest/index.ts +2 -0
  42. package/src/manifest/registry.ts +16 -1
@@ -0,0 +1,31 @@
1
+ import type { Message } from "@bufbuild/protobuf";
2
+ import { type ManifestDocument } from "./parse.js";
3
+ /**
4
+ * Wrap a resource proto as a {@link ManifestDocument} ready for
5
+ * `stigmer.manifest.apply()`.
6
+ *
7
+ * The resource kind is derived from the message's proto type, so any
8
+ * registry-supported resource works with the same call. The message is
9
+ * passed through untouched — full fidelity, no serialization round-trip.
10
+ * The server ignores client-provided `status` on apply, so a fetched
11
+ * proto (status included) is safe to send as-is.
12
+ *
13
+ * @param message - A resource proto of a registry-supported kind, with
14
+ * `metadata.name` set (always true for server-returned resources).
15
+ * @returns A document ready for `ManifestClient.apply`.
16
+ * @throws {Error} When the message's kind is not in the manifest
17
+ * registry, or the message has no `metadata.name`.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * import { clone } from "@bufbuild/protobuf";
22
+ * import { ScheduleSchema } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/api_pb";
23
+ *
24
+ * const schedule = await stigmer.schedule.getByReference({ org, slug });
25
+ * const updated = clone(ScheduleSchema, schedule);
26
+ * updated.spec!.enabled = false;
27
+ * await stigmer.manifest.apply(manifestDocumentForResource(updated));
28
+ * ```
29
+ */
30
+ export declare function manifestDocumentForResource(message: Message): ManifestDocument;
31
+ //# sourceMappingURL=document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/manifest/document.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG/D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CA4B9E"}
@@ -0,0 +1,62 @@
1
+ // Build a ManifestDocument directly from a live resource proto.
2
+ //
3
+ // The programmatic sibling of `parseManifest`: where parsing starts from
4
+ // YAML text, this starts from a proto the server already returned (a
5
+ // `get`/`getByReference` result). It exists for lossless partial edits —
6
+ // clone the fetched proto, change one field, apply the whole thing — so
7
+ // callers never have to down-convert a proto into a curated `*Input`
8
+ // shape (which cannot express every metadata field and would silently
9
+ // drop the ones it can't carry).
10
+ import { metadataOf } from "./parse.js";
11
+ import { manifestHandlerForTypeName, manifestKinds } from "./registry.js";
12
+ /**
13
+ * Wrap a resource proto as a {@link ManifestDocument} ready for
14
+ * `stigmer.manifest.apply()`.
15
+ *
16
+ * The resource kind is derived from the message's proto type, so any
17
+ * registry-supported resource works with the same call. The message is
18
+ * passed through untouched — full fidelity, no serialization round-trip.
19
+ * The server ignores client-provided `status` on apply, so a fetched
20
+ * proto (status included) is safe to send as-is.
21
+ *
22
+ * @param message - A resource proto of a registry-supported kind, with
23
+ * `metadata.name` set (always true for server-returned resources).
24
+ * @returns A document ready for `ManifestClient.apply`.
25
+ * @throws {Error} When the message's kind is not in the manifest
26
+ * registry, or the message has no `metadata.name`.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * import { clone } from "@bufbuild/protobuf";
31
+ * import { ScheduleSchema } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/api_pb";
32
+ *
33
+ * const schedule = await stigmer.schedule.getByReference({ org, slug });
34
+ * const updated = clone(ScheduleSchema, schedule);
35
+ * updated.spec!.enabled = false;
36
+ * await stigmer.manifest.apply(manifestDocumentForResource(updated));
37
+ * ```
38
+ */
39
+ export function manifestDocumentForResource(message) {
40
+ const handler = manifestHandlerForTypeName(message.$typeName);
41
+ if (handler === undefined) {
42
+ const supported = manifestKinds()
43
+ .map((h) => h.yamlKind)
44
+ .join(", ");
45
+ throw new Error(`Cannot apply ${message.$typeName} as a manifest: kind is not ` +
46
+ `in the manifest registry. Supported kinds: ${supported}.`);
47
+ }
48
+ const metadata = metadataOf(message);
49
+ const name = metadata?.name ?? "";
50
+ if (name === "") {
51
+ throw new Error(`Cannot apply this ${handler.displayName}: metadata.name is empty. ` +
52
+ "Pass a resource as returned by the server (get/getByReference).");
53
+ }
54
+ return {
55
+ handler,
56
+ message,
57
+ name,
58
+ slug: metadata?.slug || name,
59
+ org: metadata?.org ?? "",
60
+ };
61
+ }
62
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/manifest/document.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,yEAAyE;AACzE,qEAAqE;AACrE,yEAAyE;AACzE,wEAAwE;AACxE,qEAAqE;AACrE,sEAAsE;AACtE,iCAAiC;AAGjC,OAAO,EAAE,UAAU,EAAyB,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,MAAM,OAAO,GAAG,0BAA0B,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,aAAa,EAAE;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;aACtB,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,SAAS,8BAA8B;YAC7D,8CAA8C,SAAS,GAAG,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;IAClC,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,qBAAqB,OAAO,CAAC,WAAW,4BAA4B;YAClE,iEAAiE,CACpE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO;QACP,OAAO;QACP,IAAI;QACJ,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,IAAI;QAC5B,GAAG,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE;KACzB,CAAC;AACJ,CAAC"}
@@ -2,6 +2,7 @@ export { manifestKinds, manifestHandlerForYamlKind, manifestHandlerForTypeName,
2
2
  export type { ManifestKindHandler, ServiceClientFn } from "./registry.js";
3
3
  export { parseManifest, metadataOf } from "./parse.js";
4
4
  export type { ManifestDocument, ParseManifestOptions } from "./parse.js";
5
+ export { manifestDocumentForResource } from "./document.js";
5
6
  export { serializeManifest } from "./serialize.js";
6
7
  export { ManifestClient } from "./client.js";
7
8
  export type { AppliedManifest } from "./client.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,aAAa,EACb,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,aAAa,EACb,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC"}
package/manifest/index.js CHANGED
@@ -5,6 +5,7 @@
5
5
  // editable YAML, and apply through each kind's command controller.
6
6
  export { manifestKinds, manifestHandlerForYamlKind, manifestHandlerForTypeName, } from "./registry.js";
7
7
  export { parseManifest, metadataOf } from "./parse.js";
8
+ export { manifestDocumentForResource } from "./document.js";
8
9
  export { serializeManifest } from "./serialize.js";
9
10
  export { ManifestClient } from "./client.js";
10
11
  export { REDACTED_SECRET_MARKER, containsRedactedSecrets, } from "./redaction.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,mEAAmE;AAEnE,OAAO,EACL,aAAa,EACb,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,mEAAmE;AAEnE,OAAO,EACL,aAAa,EACb,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/manifest/registry.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AACtH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAoCjG;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,SAAS,WAAW,EAAE,OAAO,EAAE,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;AAExF;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,KAAK,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,2DAA2D;IAC3D,cAAc,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzF;AAiID,yEAAyE;AACzE,wBAAgB,aAAa,IAAI,SAAS,mBAAmB,EAAE,CAE9D;AAED,2EAA2E;AAC3E,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,GACf,mBAAmB,GAAG,SAAS,CAEjC;AAED,0EAA0E;AAC1E,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,GACf,mBAAmB,GAAG,SAAS,CAEjC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/manifest/registry.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AACtH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAuCjG;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,SAAS,WAAW,EAAE,OAAO,EAAE,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;AAExF;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,KAAK,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,2DAA2D;IAC3D,cAAc,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzF;AA6ID,yEAAyE;AACzE,wBAAgB,aAAa,IAAI,SAAS,mBAAmB,EAAE,CAE9D;AAED,2EAA2E;AAC3E,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,GACf,mBAAmB,GAAG,SAAS,CAEjC;AAED,0EAA0E;AAC1E,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,GACf,mBAAmB,GAAG,SAAS,CAEjC"}
@@ -35,6 +35,9 @@ import { EnvironmentQueryController } from "@stigmer/protos/ai/stigmer/agentic/e
35
35
  import { McpServerSchema } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
36
36
  import { McpServerCommandController } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/command_pb";
37
37
  import { McpServerQueryController } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/query_pb";
38
+ import { ScheduleSchema } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/api_pb";
39
+ import { ScheduleCommandController } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/command_pb";
40
+ import { ScheduleQueryController } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/query_pb";
38
41
  import { WorkflowSchema } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
39
42
  import { WorkflowCommandController } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/command_pb";
40
43
  import { WorkflowQueryController } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/query_pb";
@@ -149,7 +152,7 @@ const HANDLERS = [
149
152
  apply: (c, m) => c(AgentShareCommandController).apply(m),
150
153
  getByReference: (c, ref) => c(AgentShareQueryController).getByReference(ref),
151
154
  },
152
- // Last: an AgentChannel references an Agent, a ChannelApp, and Environments.
155
+ // An AgentChannel references an Agent, a ChannelApp, and Environments.
153
156
  {
154
157
  kind: ApiResourceKind.agent_channel,
155
158
  yamlKind: "AgentChannel",
@@ -160,6 +163,18 @@ const HANDLERS = [
160
163
  apply: (c, m) => c(AgentChannelCommandController).apply(m),
161
164
  getByReference: (c, ref) => c(AgentChannelQueryController).getByReference(ref),
162
165
  },
166
+ // Last: a Schedule references an Agent (and, later, a Workflow) — it
167
+ // applies after every kind it can target.
168
+ {
169
+ kind: ApiResourceKind.schedule,
170
+ yamlKind: "Schedule",
171
+ displayName: "Schedule",
172
+ apiVersion: AGENTIC_V1,
173
+ schema: ScheduleSchema,
174
+ applyOrder: 12,
175
+ apply: (c, m) => c(ScheduleCommandController).apply(m),
176
+ getByReference: (c, ref) => c(ScheduleQueryController).getByReference(ref),
177
+ },
163
178
  ];
164
179
  const BY_YAML_KIND = new Map(HANDLERS.map((h) => [h.yamlKind, h]));
165
180
  const BY_TYPE_NAME = new Map(HANDLERS.map((h) => [h.schema.typeName, h]));
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/manifest/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/manifest/registry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stigmer/sdk",
3
- "version": "3.5.3",
3
+ "version": "3.6.0",
4
4
  "description": "Stigmer TypeScript SDK — typed API client for all Stigmer platform resources",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -45,6 +45,6 @@
45
45
  "peerDependencies": {
46
46
  "@bufbuild/protobuf": "^2.0.0",
47
47
  "@connectrpc/connect-node": "^2.0.0",
48
- "@stigmer/protos": "3.5.3"
48
+ "@stigmer/protos": "3.6.0"
49
49
  }
50
50
  }
@@ -1,11 +1,14 @@
1
1
  import { describe, it, expect } from "vitest";
2
- import { create, equals } from "@bufbuild/protobuf";
2
+ import { clone, create, equals } from "@bufbuild/protobuf";
3
3
  import { AgentSchema, type Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
4
4
  import { EnvironmentSchema, type Environment } from "@stigmer/protos/ai/stigmer/agentic/environment/v1/api_pb";
5
+ import { ScheduleSchema, type Schedule } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/api_pb";
6
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
5
7
  import { ApiResourceMetadataSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
6
8
  import { parse as parseYaml } from "yaml";
7
9
  import { parseManifest } from "../manifest/parse";
8
10
  import { serializeManifest } from "../manifest/serialize";
11
+ import { manifestDocumentForResource } from "../manifest/document";
9
12
  import { manifestKinds, manifestHandlerForYamlKind } from "../manifest/registry";
10
13
 
11
14
  /**
@@ -245,6 +248,80 @@ describe("serializeManifest", () => {
245
248
  });
246
249
  });
247
250
 
251
+ // ---------------------------------------------------------------------------
252
+ // manifestDocumentForResource
253
+ // ---------------------------------------------------------------------------
254
+
255
+ describe("manifestDocumentForResource", () => {
256
+ // Shaped like a server-returned schedule: full metadata (including
257
+ // fields the curated ScheduleInput cannot express, like tags) and a
258
+ // populated status — the exact input of a lossless partial edit.
259
+ const schedule = create(ScheduleSchema, {
260
+ apiVersion: "agentic.stigmer.ai/v1",
261
+ kind: "Schedule",
262
+ metadata: {
263
+ id: "sch_01example",
264
+ name: "daily-fee-reminders",
265
+ slug: "daily-fee-reminders",
266
+ org: "isc",
267
+ tags: ["billing"],
268
+ labels: { team: "ops" },
269
+ },
270
+ spec: {
271
+ cron: "0 9 * * *",
272
+ timeZone: "Asia/Kolkata",
273
+ enabled: true,
274
+ target: {
275
+ case: "agent",
276
+ value: {
277
+ agentRef: { kind: ApiResourceKind.agent, org: "isc", slug: "fee-reminder" },
278
+ message: "Send today's fee reminders.",
279
+ },
280
+ },
281
+ },
282
+ status: { consecutiveFailures: 2, pausedReason: "" },
283
+ });
284
+
285
+ it("wraps a fetched proto untouched — the lossless edit contract", () => {
286
+ const flipped = clone(ScheduleSchema, schedule);
287
+ flipped.spec!.enabled = false;
288
+
289
+ const doc = manifestDocumentForResource(flipped);
290
+
291
+ expect(doc.handler.yamlKind).toBe("Schedule");
292
+ expect(doc.name).toBe("daily-fee-reminders");
293
+ expect(doc.slug).toBe("daily-fee-reminders");
294
+ expect(doc.org).toBe("isc");
295
+ // Identity, not a copy: nothing is re-serialized or down-converted,
296
+ // so every field survives (the ScheduleInput path would drop tags).
297
+ expect(doc.message).toBe(flipped);
298
+
299
+ const expected = clone(ScheduleSchema, schedule);
300
+ expected.spec!.enabled = false;
301
+ expect(equals(ScheduleSchema, doc.message as Schedule, expected)).toBe(true);
302
+ });
303
+
304
+ it("falls back to name when the proto has no slug", () => {
305
+ const bare = create(AgentSchema, { metadata: { name: "x", org: "acme" } });
306
+ const doc = manifestDocumentForResource(bare);
307
+ expect(doc.slug).toBe("x");
308
+ });
309
+
310
+ it("rejects messages of kinds outside the registry", () => {
311
+ const notAResource = create(ApiResourceMetadataSchema, { name: "x" });
312
+ expect(() => manifestDocumentForResource(notAResource)).toThrow(
313
+ /not.*registry/i,
314
+ );
315
+ });
316
+
317
+ it("rejects a resource without metadata.name", () => {
318
+ const nameless = create(ScheduleSchema, { metadata: { org: "acme" } });
319
+ expect(() => manifestDocumentForResource(nameless)).toThrow(
320
+ /metadata\.name/,
321
+ );
322
+ });
323
+ });
324
+
248
325
  // ---------------------------------------------------------------------------
249
326
  // Registry invariants
250
327
  // ---------------------------------------------------------------------------
@@ -9,7 +9,7 @@ import { AgentChannelSchema, type AgentChannel } from "@stigmer/protos/ai/stigme
9
9
  import { AgentChannelCommandController } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/command_pb";
10
10
  import { AgentChannelIdSchema, InitiateChannelInstallInputSchema, InitiateChannelInstallOutputSchema, CompleteChannelInstallInputSchema, GetAgentChannelsByAgentRequestSchema, AgentChannelListSchema, ListAgentChannelsRequestSchema, type InitiateChannelInstallInput, type InitiateChannelInstallOutput, type CompleteChannelInstallInput, type GetAgentChannelsByAgentRequest, type AgentChannelList, type ListAgentChannelsRequest } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/io_pb";
11
11
  import { ChannelMessageCommandController } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/message_command_pb";
12
- import { SendChannelMessageInputSchema, SendChannelMessageOutputSchema, ListChannelTemplatesInputSchema, ChannelTemplatesSchema, type SendChannelMessageInput, type SendChannelMessageOutput, type ListChannelTemplatesInput, type ChannelTemplates } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/message_io_pb";
12
+ import { SendChannelMessageInputSchema, SendChannelMessageOutputSchema, ListChannelTemplatesInputSchema, ChannelTemplatesSchema, ListMessagingChannelsInputSchema, MessagingChannelsSchema, type SendChannelMessageInput, type SendChannelMessageOutput, type ListChannelTemplatesInput, type ChannelTemplates, type ListMessagingChannelsInput, type MessagingChannels } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/message_io_pb";
13
13
  import { ChannelMessageQueryController } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/message_query_pb";
14
14
  import { AgentChannelQueryController } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/query_pb";
15
15
  import { AgentChannelSpecSchema, SlackChannelConfigSchema, WhatsAppChannelConfigSchema } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/spec_pb";
@@ -80,6 +80,12 @@ export class AgentChannelClient {
80
80
  } catch (e) { throw wrapError(e); }
81
81
  }
82
82
 
83
+ async listMessagingChannels(input: ListMessagingChannelsInput): Promise<MessagingChannels> {
84
+ try {
85
+ return await this.channelMessageQuery.listMessagingChannels(input);
86
+ } catch (e) { throw wrapError(e); }
87
+ }
88
+
83
89
  async get(id: string): Promise<AgentChannel> {
84
90
  try {
85
91
  return await this.query.get(create(AgentChannelIdSchema, { value: id }));
@@ -32,5 +32,6 @@ export const GRANTABLE_ROLES: ReadonlyMap<ApiResourceKind, readonly IamRole[]> =
32
32
  [ApiResourceKind.workflow_execution, [IamRole.owner, IamRole.viewer]],
33
33
  [ApiResourceKind.environment, [IamRole.owner, IamRole.viewer]],
34
34
  [ApiResourceKind.artifact, [IamRole.owner, IamRole.viewer]],
35
+ [ApiResourceKind.schedule, [IamRole.owner, IamRole.viewer]],
35
36
  [ApiResourceKind.project, [IamRole.owner, IamRole.viewer]],
36
37
  ]);
package/src/gen/client.ts CHANGED
@@ -21,6 +21,7 @@ import { OAuthAppClient } from "./oauthapp.js";
21
21
  import { OrganizationClient } from "./organization.js";
22
22
  import { PlatformClientClient } from "./platformclient.js";
23
23
  import { ProjectClient } from "./project.js";
24
+ import { ScheduleClient } from "./schedule.js";
24
25
  import { SessionClient } from "./session.js";
25
26
  import { SkillClient } from "./skill.js";
26
27
  import { WorkflowClient } from "./workflow.js";
@@ -49,6 +50,7 @@ export class GeneratedClient {
49
50
  readonly organization: OrganizationClient;
50
51
  readonly platformclient: PlatformClientClient;
51
52
  readonly project: ProjectClient;
53
+ readonly schedule: ScheduleClient;
52
54
  readonly session: SessionClient;
53
55
  readonly skill: SkillClient;
54
56
  readonly workflow: WorkflowClient;
@@ -76,6 +78,7 @@ export class GeneratedClient {
76
78
  this.organization = new OrganizationClient(transport);
77
79
  this.platformclient = new PlatformClientClient(transport);
78
80
  this.project = new ProjectClient(transport);
81
+ this.schedule = new ScheduleClient(transport);
79
82
  this.session = new SessionClient(transport);
80
83
  this.skill = new SkillClient(transport);
81
84
  this.workflow = new WorkflowClient(transport);
@@ -125,6 +128,8 @@ export { PlatformClientClient } from "./platformclient.js";
125
128
  export { type PlatformClientInput } from "./platformclient.js";
126
129
  export { ProjectClient } from "./project.js";
127
130
  export { type ProjectInput } from "./project.js";
131
+ export { ScheduleClient } from "./schedule.js";
132
+ export { type ScheduleInput, type AgentTargetInput } from "./schedule.js";
128
133
  export { SessionClient } from "./session.js";
129
134
  export { type SessionInput } from "./session.js";
130
135
  export { SkillClient } from "./skill.js";
@@ -0,0 +1,136 @@
1
+ // Code generated by stigmer-codegen. DO NOT EDIT.
2
+
3
+ import { wrapError } from "./errors.js";
4
+ import { stripUndefined } from "./proto-utils.js";
5
+ import { type ResourceRef } from "./types.js";
6
+ import { create } from "@bufbuild/protobuf";
7
+ import { createClient, type Client, type Transport } from "@connectrpc/connect";
8
+ import { ScheduleSchema, type Schedule } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/api_pb";
9
+ import { ScheduleCommandController } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/command_pb";
10
+ import { ScheduleIdSchema, GetSchedulesByAgentRequestSchema, ScheduleListSchema, ListSchedulesRequestSchema, type GetSchedulesByAgentRequest, type ScheduleList, type ListSchedulesRequest } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/io_pb";
11
+ import { ScheduleQueryController } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/query_pb";
12
+ import { ScheduleSpecSchema, AgentTargetSchema } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/spec_pb";
13
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
14
+ import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
15
+ import { ApiResourceReferenceSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
16
+ import { ApiResourceMetadataSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
17
+
18
+ /** Provides operations on schedule resources. */
19
+ export class ScheduleClient {
20
+ private readonly command: Client<typeof ScheduleCommandController>;
21
+ private readonly query: Client<typeof ScheduleQueryController>;
22
+
23
+ constructor(transport: Transport) {
24
+ this.command = createClient(ScheduleCommandController, transport);
25
+ this.query = createClient(ScheduleQueryController, transport);
26
+ }
27
+
28
+ async apply(input: ScheduleInput): Promise<Schedule> {
29
+ try {
30
+ return await this.command.apply(buildScheduleProto(input));
31
+ } catch (e) { throw wrapError(e); }
32
+ }
33
+
34
+ async create(input: ScheduleInput): Promise<Schedule> {
35
+ try {
36
+ return await this.command.create(buildScheduleProto(input));
37
+ } catch (e) { throw wrapError(e); }
38
+ }
39
+
40
+ async update(input: ScheduleInput): Promise<Schedule> {
41
+ try {
42
+ return await this.command.update(buildScheduleProto(input));
43
+ } catch (e) { throw wrapError(e); }
44
+ }
45
+
46
+ async delete(id: string): Promise<Schedule> {
47
+ try {
48
+ return await this.command.delete(create(ScheduleIdSchema, { value: id }));
49
+ } catch (e) { throw wrapError(e); }
50
+ }
51
+
52
+ async resume(id: string): Promise<Schedule> {
53
+ try {
54
+ return await this.command.resume(create(ScheduleIdSchema, { value: id }));
55
+ } catch (e) { throw wrapError(e); }
56
+ }
57
+
58
+ async trigger(id: string): Promise<Schedule> {
59
+ try {
60
+ return await this.command.trigger(create(ScheduleIdSchema, { value: id }));
61
+ } catch (e) { throw wrapError(e); }
62
+ }
63
+
64
+ async get(id: string): Promise<Schedule> {
65
+ try {
66
+ return await this.query.get(create(ScheduleIdSchema, { value: id }));
67
+ } catch (e) { throw wrapError(e); }
68
+ }
69
+
70
+ async getByReference(ref: ResourceRef): Promise<Schedule> {
71
+ try {
72
+ return await this.query.getByReference(create(ApiResourceReferenceSchema, { ...ref, kind: ApiResourceKind.schedule }));
73
+ } catch (e) { throw wrapError(e); }
74
+ }
75
+
76
+ async getByAgent(input: GetSchedulesByAgentRequest): Promise<ScheduleList> {
77
+ try {
78
+ return await this.query.getByAgent(input);
79
+ } catch (e) { throw wrapError(e); }
80
+ }
81
+
82
+ async list(input: ListSchedulesRequest): Promise<ScheduleList> {
83
+ try {
84
+ return await this.query.list(input);
85
+ } catch (e) { throw wrapError(e); }
86
+ }
87
+ }
88
+
89
+ /** Input for creating/updating a Schedule. */
90
+ export interface ScheduleInput {
91
+ name: string;
92
+ slug?: string;
93
+ org: string;
94
+ labels?: Record<string, string>;
95
+ visibility?: ApiResourceVisibility;
96
+ cron?: string;
97
+ timeZone?: string;
98
+ enabled?: boolean;
99
+ agent?: AgentTargetInput;
100
+ }
101
+
102
+ /** SDK input type for AgentTarget. */
103
+ export interface AgentTargetInput {
104
+ agentRef: ResourceRef;
105
+ message?: string;
106
+ }
107
+
108
+ function buildAgentTargetProto(input: AgentTargetInput) {
109
+ const msg = create(AgentTargetSchema);
110
+ if (input.agentRef?.slug || input.agentRef?.org) msg.agentRef = create(ApiResourceReferenceSchema, { ...input.agentRef, kind: 40 });
111
+ if (input.message !== undefined) msg.message = input.message;
112
+ return msg;
113
+ }
114
+
115
+ export function buildScheduleProto(input: ScheduleInput): Schedule {
116
+ const spec = Object.assign(create(ScheduleSpecSchema), stripUndefined({
117
+ cron: input.cron,
118
+ timeZone: input.timeZone,
119
+ enabled: input.enabled,
120
+ }));
121
+ if (input.agent) {
122
+ spec.target = { case: "agent", value: buildAgentTargetProto(input.agent) };
123
+ }
124
+ return Object.assign(create(ScheduleSchema), {
125
+ apiVersion: "agentic.stigmer.ai/v1",
126
+ kind: "Schedule",
127
+ metadata: Object.assign(create(ApiResourceMetadataSchema), {
128
+ name: input.name,
129
+ org: input.org,
130
+ ...(input.slug && { slug: input.slug }),
131
+ ...(input.labels && { labels: input.labels }),
132
+ ...(input.visibility && { visibility: input.visibility }),
133
+ }),
134
+ spec,
135
+ }) as Schedule;
136
+ }
package/src/index.ts CHANGED
@@ -132,6 +132,7 @@ export {
132
132
  ManifestClient,
133
133
  parseManifest,
134
134
  serializeManifest,
135
+ manifestDocumentForResource,
135
136
  manifestKinds,
136
137
  manifestHandlerForYamlKind,
137
138
  manifestHandlerForTypeName,
@@ -240,6 +241,12 @@ export {
240
241
  type PlatformClientInput,
241
242
  } from "./gen/platformclient.js";
242
243
  export { ProjectClient, type ProjectInput } from "./gen/project.js";
244
+ export {
245
+ ScheduleClient,
246
+ buildScheduleProto,
247
+ type ScheduleInput,
248
+ type AgentTargetInput,
249
+ } from "./gen/schedule.js";
243
250
  export {
244
251
  SessionClient,
245
252
  type SessionInput,
@@ -0,0 +1,70 @@
1
+ // Build a ManifestDocument directly from a live resource proto.
2
+ //
3
+ // The programmatic sibling of `parseManifest`: where parsing starts from
4
+ // YAML text, this starts from a proto the server already returned (a
5
+ // `get`/`getByReference` result). It exists for lossless partial edits —
6
+ // clone the fetched proto, change one field, apply the whole thing — so
7
+ // callers never have to down-convert a proto into a curated `*Input`
8
+ // shape (which cannot express every metadata field and would silently
9
+ // drop the ones it can't carry).
10
+
11
+ import type { Message } from "@bufbuild/protobuf";
12
+ import { metadataOf, type ManifestDocument } from "./parse.js";
13
+ import { manifestHandlerForTypeName, manifestKinds } from "./registry.js";
14
+
15
+ /**
16
+ * Wrap a resource proto as a {@link ManifestDocument} ready for
17
+ * `stigmer.manifest.apply()`.
18
+ *
19
+ * The resource kind is derived from the message's proto type, so any
20
+ * registry-supported resource works with the same call. The message is
21
+ * passed through untouched — full fidelity, no serialization round-trip.
22
+ * The server ignores client-provided `status` on apply, so a fetched
23
+ * proto (status included) is safe to send as-is.
24
+ *
25
+ * @param message - A resource proto of a registry-supported kind, with
26
+ * `metadata.name` set (always true for server-returned resources).
27
+ * @returns A document ready for `ManifestClient.apply`.
28
+ * @throws {Error} When the message's kind is not in the manifest
29
+ * registry, or the message has no `metadata.name`.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * import { clone } from "@bufbuild/protobuf";
34
+ * import { ScheduleSchema } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/api_pb";
35
+ *
36
+ * const schedule = await stigmer.schedule.getByReference({ org, slug });
37
+ * const updated = clone(ScheduleSchema, schedule);
38
+ * updated.spec!.enabled = false;
39
+ * await stigmer.manifest.apply(manifestDocumentForResource(updated));
40
+ * ```
41
+ */
42
+ export function manifestDocumentForResource(message: Message): ManifestDocument {
43
+ const handler = manifestHandlerForTypeName(message.$typeName);
44
+ if (handler === undefined) {
45
+ const supported = manifestKinds()
46
+ .map((h) => h.yamlKind)
47
+ .join(", ");
48
+ throw new Error(
49
+ `Cannot apply ${message.$typeName} as a manifest: kind is not ` +
50
+ `in the manifest registry. Supported kinds: ${supported}.`,
51
+ );
52
+ }
53
+
54
+ const metadata = metadataOf(message);
55
+ const name = metadata?.name ?? "";
56
+ if (name === "") {
57
+ throw new Error(
58
+ `Cannot apply this ${handler.displayName}: metadata.name is empty. ` +
59
+ "Pass a resource as returned by the server (get/getByReference).",
60
+ );
61
+ }
62
+
63
+ return {
64
+ handler,
65
+ message,
66
+ name,
67
+ slug: metadata?.slug || name,
68
+ org: metadata?.org ?? "",
69
+ };
70
+ }
@@ -14,6 +14,8 @@ export type { ManifestKindHandler, ServiceClientFn } from "./registry.js";
14
14
  export { parseManifest, metadataOf } from "./parse.js";
15
15
  export type { ManifestDocument, ParseManifestOptions } from "./parse.js";
16
16
 
17
+ export { manifestDocumentForResource } from "./document.js";
18
+
17
19
  export { serializeManifest } from "./serialize.js";
18
20
 
19
21
  export { ManifestClient } from "./client.js";