@stigmer/mcp-server 3.2.3 → 3.4.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 (179) hide show
  1. package/README.md +60 -13
  2. package/cli/mcp-server-stigmer.js +13 -9
  3. package/config.d.ts +12 -0
  4. package/config.d.ts.map +1 -1
  5. package/config.js +5 -0
  6. package/config.js.map +1 -1
  7. package/domains/agentexecutions/approve.d.ts +9 -0
  8. package/domains/agentexecutions/approve.d.ts.map +1 -0
  9. package/domains/agentexecutions/approve.js +46 -0
  10. package/domains/agentexecutions/approve.js.map +1 -0
  11. package/domains/agentexecutions/fetch.d.ts +28 -0
  12. package/domains/agentexecutions/fetch.d.ts.map +1 -0
  13. package/domains/agentexecutions/fetch.js +82 -0
  14. package/domains/agentexecutions/fetch.js.map +1 -0
  15. package/domains/agentexecutions/run.d.ts +27 -0
  16. package/domains/agentexecutions/run.d.ts.map +1 -0
  17. package/domains/agentexecutions/run.js +87 -0
  18. package/domains/agentexecutions/run.js.map +1 -0
  19. package/domains/agentexecutions/tools.d.ts +5 -0
  20. package/domains/agentexecutions/tools.d.ts.map +1 -0
  21. package/domains/agentexecutions/tools.js +97 -0
  22. package/domains/agentexecutions/tools.js.map +1 -0
  23. package/domains/datastores/apply.d.ts +4 -0
  24. package/domains/datastores/apply.d.ts.map +1 -0
  25. package/domains/datastores/apply.js +28 -0
  26. package/domains/datastores/apply.js.map +1 -0
  27. package/domains/datastores/delete.d.ts +3 -0
  28. package/domains/datastores/delete.d.ts.map +1 -0
  29. package/domains/datastores/delete.js +38 -0
  30. package/domains/datastores/delete.js.map +1 -0
  31. package/domains/datastores/fetch.d.ts +3 -0
  32. package/domains/datastores/fetch.d.ts.map +1 -0
  33. package/domains/datastores/fetch.js +23 -0
  34. package/domains/datastores/fetch.js.map +1 -0
  35. package/domains/datastores/resources.d.ts +5 -0
  36. package/domains/datastores/resources.d.ts.map +1 -0
  37. package/domains/datastores/resources.js +16 -0
  38. package/domains/datastores/resources.js.map +1 -0
  39. package/domains/datastores/tools.d.ts +5 -0
  40. package/domains/datastores/tools.d.ts.map +1 -0
  41. package/domains/datastores/tools.js +46 -0
  42. package/domains/datastores/tools.js.map +1 -0
  43. package/domains/environments/apply.d.ts +4 -0
  44. package/domains/environments/apply.d.ts.map +1 -0
  45. package/domains/environments/apply.js +30 -0
  46. package/domains/environments/apply.js.map +1 -0
  47. package/domains/environments/delete.d.ts +3 -0
  48. package/domains/environments/delete.d.ts.map +1 -0
  49. package/domains/environments/delete.js +36 -0
  50. package/domains/environments/delete.js.map +1 -0
  51. package/domains/environments/fetch.d.ts +6 -0
  52. package/domains/environments/fetch.d.ts.map +1 -0
  53. package/domains/environments/fetch.js +30 -0
  54. package/domains/environments/fetch.js.map +1 -0
  55. package/domains/environments/resources.d.ts +5 -0
  56. package/domains/environments/resources.d.ts.map +1 -0
  57. package/domains/environments/resources.js +16 -0
  58. package/domains/environments/resources.js.map +1 -0
  59. package/domains/environments/tools.d.ts +5 -0
  60. package/domains/environments/tools.d.ts.map +1 -0
  61. package/domains/environments/tools.js +51 -0
  62. package/domains/environments/tools.js.map +1 -0
  63. package/domains/executions/cancel.d.ts +9 -0
  64. package/domains/executions/cancel.d.ts.map +1 -0
  65. package/domains/executions/cancel.js +114 -0
  66. package/domains/executions/cancel.js.map +1 -0
  67. package/domains/executions/tools.d.ts +5 -0
  68. package/domains/executions/tools.d.ts.map +1 -0
  69. package/domains/executions/tools.js +28 -0
  70. package/domains/executions/tools.js.map +1 -0
  71. package/domains/records/calls.d.ts +48 -0
  72. package/domains/records/calls.d.ts.map +1 -0
  73. package/domains/records/calls.js +118 -0
  74. package/domains/records/calls.js.map +1 -0
  75. package/domains/records/errors.d.ts +24 -0
  76. package/domains/records/errors.d.ts.map +1 -0
  77. package/domains/records/errors.js +79 -0
  78. package/domains/records/errors.js.map +1 -0
  79. package/domains/records/tools.d.ts +7 -0
  80. package/domains/records/tools.d.ts.map +1 -0
  81. package/domains/records/tools.js +139 -0
  82. package/domains/records/tools.js.map +1 -0
  83. package/domains/resourceuri.d.ts.map +1 -1
  84. package/domains/resourceuri.js +2 -0
  85. package/domains/resourceuri.js.map +1 -1
  86. package/domains/search/tools.d.ts.map +1 -1
  87. package/domains/search/tools.js +10 -7
  88. package/domains/search/tools.js.map +1 -1
  89. package/domains/skills/tools.d.ts.map +1 -1
  90. package/domains/skills/tools.js +25 -1
  91. package/domains/skills/tools.js.map +1 -1
  92. package/domains/skills/versions.d.ts +9 -0
  93. package/domains/skills/versions.d.ts.map +1 -0
  94. package/domains/skills/versions.js +31 -0
  95. package/domains/skills/versions.js.map +1 -0
  96. package/domains/workflowexecutions/approvals.d.ts +17 -0
  97. package/domains/workflowexecutions/approvals.d.ts.map +1 -0
  98. package/domains/workflowexecutions/approvals.js +61 -0
  99. package/domains/workflowexecutions/approvals.js.map +1 -0
  100. package/domains/workflowexecutions/run.d.ts +12 -0
  101. package/domains/workflowexecutions/run.d.ts.map +1 -0
  102. package/domains/workflowexecutions/run.js +69 -0
  103. package/domains/workflowexecutions/run.js.map +1 -0
  104. package/domains/workflowexecutions/tools.d.ts.map +1 -1
  105. package/domains/workflowexecutions/tools.js +89 -6
  106. package/domains/workflowexecutions/tools.js.map +1 -1
  107. package/domains/workflows/tools.d.ts.map +1 -1
  108. package/domains/workflows/tools.js +69 -5
  109. package/domains/workflows/tools.js.map +1 -1
  110. package/domains/workflows/versions.d.ts +29 -0
  111. package/domains/workflows/versions.d.ts.map +1 -0
  112. package/domains/workflows/versions.js +99 -0
  113. package/domains/workflows/versions.js.map +1 -0
  114. package/gen/agent.d.ts +56 -0
  115. package/gen/agent.d.ts.map +1 -1
  116. package/gen/agent.js +24 -1
  117. package/gen/agent.js.map +1 -1
  118. package/gen/datastore.d.ts +861 -0
  119. package/gen/datastore.d.ts.map +1 -0
  120. package/gen/datastore.js +267 -0
  121. package/gen/datastore.js.map +1 -0
  122. package/gen/environment.d.ts +77 -0
  123. package/gen/environment.d.ts.map +1 -0
  124. package/gen/environment.js +62 -0
  125. package/gen/environment.js.map +1 -0
  126. package/gen/workflow.d.ts +4 -4
  127. package/index.d.ts +2 -2
  128. package/index.d.ts.map +1 -1
  129. package/index.js +4 -4
  130. package/index.js.map +1 -1
  131. package/package.json +3 -3
  132. package/server.d.ts +31 -1
  133. package/server.d.ts.map +1 -1
  134. package/server.js +53 -3
  135. package/server.js.map +1 -1
  136. package/src/config.ts +19 -0
  137. package/src/domains/agentexecutions/approve.ts +67 -0
  138. package/src/domains/agentexecutions/fetch.ts +112 -0
  139. package/src/domains/agentexecutions/run.ts +112 -0
  140. package/src/domains/agentexecutions/tools.ts +139 -0
  141. package/src/domains/apply.integration.test.ts +82 -6
  142. package/src/domains/datastores/apply.ts +33 -0
  143. package/src/domains/datastores/delete.ts +47 -0
  144. package/src/domains/datastores/fetch.ts +32 -0
  145. package/src/domains/datastores/resources.ts +21 -0
  146. package/src/domains/datastores/tools.ts +76 -0
  147. package/src/domains/deletes.integration.test.ts +49 -2
  148. package/src/domains/environments/apply.ts +40 -0
  149. package/src/domains/environments/delete.ts +45 -0
  150. package/src/domains/environments/fetch.ts +39 -0
  151. package/src/domains/environments/resources.ts +21 -0
  152. package/src/domains/environments/tools.ts +81 -0
  153. package/src/domains/executions/cancel.ts +148 -0
  154. package/src/domains/executions/tools.ts +45 -0
  155. package/src/domains/executions.integration.test.ts +376 -0
  156. package/src/domains/reads.integration.test.ts +51 -5
  157. package/src/domains/records/calls.ts +209 -0
  158. package/src/domains/records/errors.ts +98 -0
  159. package/src/domains/records/records.integration.test.ts +313 -0
  160. package/src/domains/records/tools.ts +210 -0
  161. package/src/domains/resources.integration.test.ts +38 -2
  162. package/src/domains/resourceuri.test.ts +11 -2
  163. package/src/domains/resourceuri.ts +2 -0
  164. package/src/domains/search/search.integration.test.ts +18 -2
  165. package/src/domains/search/tools.ts +12 -7
  166. package/src/domains/skills/tools.ts +34 -1
  167. package/src/domains/skills/versions.ts +47 -0
  168. package/src/domains/versions.integration.test.ts +212 -0
  169. package/src/domains/workflowexecutions/approvals.ts +102 -0
  170. package/src/domains/workflowexecutions/run.ts +87 -0
  171. package/src/domains/workflowexecutions/tools.ts +120 -6
  172. package/src/domains/workflows/tools.ts +90 -7
  173. package/src/domains/workflows/versions.ts +147 -0
  174. package/src/gen/agent.ts +28 -1
  175. package/src/gen/datastore.ts +264 -0
  176. package/src/gen/environment.ts +66 -0
  177. package/src/http.integration.test.ts +1 -0
  178. package/src/index.ts +12 -5
  179. package/src/server.ts +71 -5
@@ -0,0 +1,31 @@
1
+ // Skill version-timeline path (SkillQueryController.listVersions). Each push
2
+ // creates an immutable version identified by the artifact's SHA-256 hash;
3
+ // entries carry hash, tag, push audit, and provenance (no artifact content, so
4
+ // no projection is needed — unlike the workflow timeline).
5
+ import { ListSkillVersionsResponseSchema, } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/io_pb";
6
+ import { SkillQueryController } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/query_pb";
7
+ import { withClient } from "../client.js";
8
+ import { toProtoJson } from "../marshal.js";
9
+ import { rpcError } from "../rpcerr.js";
10
+ /** List a skill's version history (newest first) as protojson. */
11
+ export async function listSkillVersions(serverAddress, token, args) {
12
+ return withClient(SkillQueryController, serverAddress, token, async (client, callOptions) => {
13
+ const req = {
14
+ org: args.org,
15
+ slug: args.slug,
16
+ pageToken: args.pageToken ?? "",
17
+ };
18
+ // Forward page_size only when set, letting the server apply its default.
19
+ if ((args.pageSize ?? 0) > 0) {
20
+ req.pageSize = args.pageSize;
21
+ }
22
+ try {
23
+ const resp = await client.listVersions(req, callOptions);
24
+ return toProtoJson(ListSkillVersionsResponseSchema, resp);
25
+ }
26
+ catch (err) {
27
+ throw rpcError(err, `versions of skill "${args.slug}" in org "${args.org}"`);
28
+ }
29
+ });
30
+ }
31
+ //# sourceMappingURL=versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../src/domains/skills/versions.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,0EAA0E;AAC1E,+EAA+E;AAC/E,2DAA2D;AAG3D,OAAO,EAEL,+BAA+B,GAChC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAE5F,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AASxC,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,aAAqB,EACrB,KAAa,EACb,IAA2B;IAE3B,OAAO,UAAU,CAAC,oBAAoB,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;QAC1F,MAAM,GAAG,GAA0D;YACjE,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;SAChC,CAAC;QACF,yEAAyE;QACzE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACzD,OAAO,WAAW,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,QAAQ,CAAC,GAAG,EAAE,sBAAsB,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,17 @@
1
+ export interface ListPendingApprovalsArgs {
2
+ readonly org: string;
3
+ readonly pageSize?: number;
4
+ readonly pageToken?: string;
5
+ }
6
+ /** List human_input tasks awaiting a reviewer decision across an org. */
7
+ export declare function listPendingApprovals(serverAddress: string, token: string, args: ListPendingApprovalsArgs): Promise<string>;
8
+ export interface SubmitWorkflowTaskApprovalArgs {
9
+ readonly executionId: string;
10
+ readonly taskName: string;
11
+ readonly outcome: string;
12
+ readonly comment?: string;
13
+ readonly formData?: Record<string, unknown>;
14
+ }
15
+ /** Submit a reviewer decision for a waiting human_input task. */
16
+ export declare function submitWorkflowTaskApproval(serverAddress: string, token: string, args: SubmitWorkflowTaskApprovalArgs): Promise<string>;
17
+ //# sourceMappingURL=approvals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../../src/domains/workflowexecutions/approvals.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,yEAAyE;AACzE,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED,iEAAiE;AACjE,wBAAsB,0BAA0B,CAC9C,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,MAAM,CAAC,CA2BjB"}
@@ -0,0 +1,61 @@
1
+ // Workflow-execution approval paths: the org-wide pending-approvals inbox
2
+ // (listPendingApprovals) and the reviewer decision for a human_input task
3
+ // (submitWorkflowTaskApproval).
4
+ //
5
+ // listPendingApprovals is org-scoped by contract (io.proto), not
6
+ // execution-scoped — it answers "what is waiting on a human right now"
7
+ // across the org. Each entry carries everything a decision needs: the
8
+ // execution ID, task name, requester, timeout, and the form schema when the
9
+ // task defines one. Agent-execution approvals are a different surface
10
+ // entirely (embedded in get_agent_execution status; see
11
+ // agentexecutions/approve.ts).
12
+ import { WorkflowExecutionSchema } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
13
+ import { WorkflowExecutionCommandController } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/command_pb";
14
+ import { PendingApprovalsListSchema, } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/io_pb";
15
+ import { WorkflowExecutionQueryController } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/query_pb";
16
+ import { withClient } from "../client.js";
17
+ import { toProtoJson } from "../marshal.js";
18
+ import { rpcError } from "../rpcerr.js";
19
+ /** List human_input tasks awaiting a reviewer decision across an org. */
20
+ export async function listPendingApprovals(serverAddress, token, args) {
21
+ return withClient(WorkflowExecutionQueryController, serverAddress, token, async (client, callOptions) => {
22
+ const req = {
23
+ org: args.org,
24
+ pageToken: args.pageToken ?? "",
25
+ };
26
+ // Forward page_size only when set, letting the server apply its default.
27
+ if ((args.pageSize ?? 0) > 0) {
28
+ req.pageSize = args.pageSize;
29
+ }
30
+ try {
31
+ const resp = await client.listPendingApprovals(req, callOptions);
32
+ return toProtoJson(PendingApprovalsListSchema, resp);
33
+ }
34
+ catch (err) {
35
+ throw rpcError(err, `pending approvals in org "${args.org}"`);
36
+ }
37
+ });
38
+ }
39
+ /** Submit a reviewer decision for a waiting human_input task. */
40
+ export async function submitWorkflowTaskApproval(serverAddress, token, args) {
41
+ return withClient(WorkflowExecutionCommandController, serverAddress, token, async (client, callOptions) => {
42
+ const req = {
43
+ executionId: args.executionId,
44
+ taskName: args.taskName,
45
+ outcome: args.outcome,
46
+ comment: args.comment ?? "",
47
+ };
48
+ if (args.formData !== undefined) {
49
+ // google.protobuf.Struct fields are plain JSON objects in protobuf-es v2.
50
+ req.formData = args.formData;
51
+ }
52
+ try {
53
+ const execution = await client.submitWorkflowTaskApproval(req, callOptions);
54
+ return toProtoJson(WorkflowExecutionSchema, execution);
55
+ }
56
+ catch (err) {
57
+ throw rpcError(err, `approval for task "${args.taskName}" in workflow execution "${args.executionId}"`);
58
+ }
59
+ });
60
+ }
61
+ //# sourceMappingURL=approvals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../../src/domains/workflowexecutions/approvals.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,0EAA0E;AAC1E,gCAAgC;AAChC,EAAE;AACF,iEAAiE;AACjE,uEAAuE;AACvE,sEAAsE;AACtE,4EAA4E;AAC5E,sEAAsE;AACtE,wDAAwD;AACxD,+BAA+B;AAG/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,gEAAgE,CAAC;AACzG,OAAO,EAAE,kCAAkC,EAAE,MAAM,oEAAoE,CAAC;AACxH,OAAO,EAEL,0BAA0B,GAE3B,MAAM,+DAA+D,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kEAAkE,CAAC;AAEpH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAQxC,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,aAAqB,EACrB,KAAa,EACb,IAA8B;IAE9B,OAAO,UAAU,CACf,gCAAgC,EAChC,aAAa,EACb,KAAK,EACL,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;QAC5B,MAAM,GAAG,GAA+D;YACtE,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;SAChC,CAAC;QACF,yEAAyE;QACzE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACjE,OAAO,WAAW,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,QAAQ,CAAC,GAAG,EAAE,6BAA6B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAUD,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,aAAqB,EACrB,KAAa,EACb,IAAoC;IAEpC,OAAO,UAAU,CACf,kCAAkC,EAClC,aAAa,EACb,KAAK,EACL,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;QAC5B,MAAM,GAAG,GAAmE;YAC1E,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;SAC5B,CAAC;QACF,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,0EAA0E;YAC1E,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAsB,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAC5E,OAAO,WAAW,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,QAAQ,CACZ,GAAG,EACH,sBAAsB,IAAI,CAAC,QAAQ,4BAA4B,IAAI,CAAC,WAAW,GAAG,CACnF,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface RunWorkflowArgs {
2
+ readonly org: string;
3
+ readonly workflow: string;
4
+ readonly message?: string;
5
+ readonly runtimeEnv?: Record<string, string>;
6
+ }
7
+ /**
8
+ * Start a workflow execution: resolve org/slug → workflow ID, then create the
9
+ * execution. Returns the created execution as protojson.
10
+ */
11
+ export declare function runWorkflow(serverAddress: string, token: string, args: RunWorkflowArgs): Promise<string>;
12
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/domains/workflowexecutions/run.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,MAAM,CAAC,CA6CjB"}
@@ -0,0 +1,69 @@
1
+ // Workflow-execution start path for the run_workflow tool.
2
+ //
3
+ // Mirrors the CLI's workflow run branch (client-apps/cli/src/commands/run.ts +
4
+ // resources/run/create.ts): resolve the org/slug reference to the workflow ID,
5
+ // then create the execution. Asynchronous like run_agent — the tool returns
6
+ // the created execution (wex_* ID) and observation happens through the
7
+ // existing get_workflow_execution / get_workflow_execution_events tools.
8
+ import { createClient } from "@connectrpc/connect";
9
+ import { create as createMessage } from "@bufbuild/protobuf";
10
+ import { WorkflowQueryController } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/query_pb";
11
+ import { WorkflowExecutionSchema } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
12
+ import { WorkflowExecutionCommandController } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/command_pb";
13
+ import { WorkflowExecutionSpecSchema } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/spec_pb";
14
+ import { ExecutionValueSchema } from "@stigmer/protos/ai/stigmer/agentic/executioncontext/v1/spec_pb";
15
+ import { ApiResourceMetadataSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
16
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
17
+ import { executionName, toExecutionValues } from "../agentexecutions/run.js";
18
+ import { withTransport } from "../client.js";
19
+ import { toProtoJson } from "../marshal.js";
20
+ import { rpcError } from "../rpcerr.js";
21
+ /** apiVersion stamped on created executions; mirrors the CLI's run stack. */
22
+ const API_VERSION = "agentic.stigmer.ai/v1";
23
+ /**
24
+ * Start a workflow execution: resolve org/slug → workflow ID, then create the
25
+ * execution. Returns the created execution as protojson.
26
+ */
27
+ export async function runWorkflow(serverAddress, token, args) {
28
+ const desc = `workflow "${args.workflow}" in org "${args.org}"`;
29
+ return withTransport(serverAddress, token, async (transport, callOptions) => {
30
+ const query = createClient(WorkflowQueryController, transport);
31
+ let workflowId;
32
+ try {
33
+ const workflow = await query.getByReference({ org: args.org, kind: ApiResourceKind.workflow, slug: args.workflow }, callOptions);
34
+ workflowId = workflow.metadata?.id ?? "";
35
+ }
36
+ catch (err) {
37
+ throw rpcError(err, desc);
38
+ }
39
+ // Workflow tasks resolve their org through the runtime env; the CLI
40
+ // injects STIGMER_ORG_ID the same way, so a caller-supplied value wins.
41
+ const runtimeEnv = toExecutionValues(args.runtimeEnv);
42
+ if (runtimeEnv.STIGMER_ORG_ID === undefined) {
43
+ runtimeEnv.STIGMER_ORG_ID = createMessage(ExecutionValueSchema, {
44
+ value: args.org,
45
+ isSecret: false,
46
+ });
47
+ }
48
+ const execution = createMessage(WorkflowExecutionSchema, {
49
+ apiVersion: API_VERSION,
50
+ kind: "WorkflowExecution",
51
+ metadata: createMessage(ApiResourceMetadataSchema, { name: executionName(), org: args.org }),
52
+ spec: createMessage(WorkflowExecutionSpecSchema, {
53
+ workflowId,
54
+ // Empty message means "just run" — the CLI applies the same default.
55
+ triggerMessage: (args.message ?? "") === "" ? "execute" : args.message,
56
+ runtimeEnv,
57
+ }),
58
+ });
59
+ const command = createClient(WorkflowExecutionCommandController, transport);
60
+ try {
61
+ const created = await command.create(execution, callOptions);
62
+ return toProtoJson(WorkflowExecutionSchema, created);
63
+ }
64
+ catch (err) {
65
+ throw rpcError(err, `execution of ${desc}`);
66
+ }
67
+ });
68
+ }
69
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/domains/workflowexecutions/run.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/domains/workflowexecutions/tools.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAK5E,gFAAgF;AAChF,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAgDjG"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/domains/workflowexecutions/tools.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAO5E,gFAAgF;AAChF,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CA8JjG"}
@@ -1,8 +1,10 @@
1
- // MCP tools for querying workflow execution status and event logs.
2
- // Go parity: mcp-server/internal/domains/workflowexecutions/tools.go.
3
- //
4
- // Backed by WorkflowExecutionQueryController (get, getEventLog). These are
5
- // diagnostic reads for running/failed executions.
1
+ // MCP tools for the WorkflowExecution domain: start a run (run_workflow),
2
+ // observe it (get_workflow_execution, get_workflow_execution_events — backed
3
+ // by WorkflowExecutionQueryController.get/getEventLog), and answer its
4
+ // human_input tasks (list_pending_approvals, submit_workflow_task_approval).
5
+ // The observation tools predate the rest and their names/descriptions are
6
+ // part of the original Go-parity contract
7
+ // (mcp-server/internal/domains/workflowexecutions/tools.go).
6
8
  import { WorkflowExecutionSchema } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
7
9
  import { GetEventLogResponseSchema, } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/io_pb";
8
10
  import { WorkflowExecutionQueryController } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/query_pb";
@@ -11,8 +13,35 @@ import { resolveToken, withClient } from "../client.js";
11
13
  import { toProtoJson } from "../marshal.js";
12
14
  import { rpcError } from "../rpcerr.js";
13
15
  import { textOrError } from "../toolresult.js";
16
+ import { listPendingApprovals, submitWorkflowTaskApproval } from "./approvals.js";
17
+ import { runWorkflow } from "./run.js";
14
18
  /** Register the workflow-execution tools; returns the registered tool names. */
15
19
  export function registerWorkflowExecutionTools(server, target) {
20
+ server.registerTool("run_workflow", {
21
+ description: "Start a workflow execution (asynchronous). Returns immediately with the created execution " +
22
+ "(wex_* ID) while the run continues in the background — poll get_workflow_execution and " +
23
+ "get_workflow_execution_events to observe progress and diagnose failures.",
24
+ inputSchema: {
25
+ org: z.string().describe("Organization slug that owns the workflow (e.g. stigmer)."),
26
+ workflow: z
27
+ .string()
28
+ .describe("Workflow slug — the unique identifier within the org (e.g. release-notes)."),
29
+ message: z
30
+ .string()
31
+ .optional()
32
+ .describe("Trigger message passed to the workflow. Omit to run with the default trigger."),
33
+ runtime_env: z
34
+ .record(z.string())
35
+ .optional()
36
+ .describe("Non-secret runtime environment values (name → value) injected into the run. " +
37
+ "Secrets must come from Environments referenced by the workflow, never through this tool."),
38
+ },
39
+ }, (args, extra) => textOrError(() => runWorkflow(target.serverAddress, resolveToken(extra, target.apiKey), {
40
+ org: args.org,
41
+ workflow: args.workflow,
42
+ message: args.message,
43
+ runtimeEnv: args.runtime_env,
44
+ })));
16
45
  server.registerTool("get_workflow_execution", {
17
46
  description: "Get a workflow execution's full status including phase, tasks, errors, cost, and timing. Use for diagnosing failed or running executions.",
18
47
  inputSchema: {
@@ -37,7 +66,61 @@ export function registerWorkflowExecutionTools(server, target) {
37
66
  taskName: args.task_name,
38
67
  pageSize: args.page_size,
39
68
  })));
40
- return ["get_workflow_execution", "get_workflow_execution_events"];
69
+ server.registerTool("list_pending_approvals", {
70
+ description: "List workflow tasks waiting for a human decision across an organization — an approvals " +
71
+ "inbox. Each entry carries the execution ID, task name, requester, timeout, and the form " +
72
+ "schema when the task defines one; respond with submit_workflow_task_approval. " +
73
+ "(Agent-execution approvals are not listed here — they surface in get_agent_execution's " +
74
+ "status.pending_approvals.)",
75
+ inputSchema: {
76
+ org: z.string().describe("Organization slug to scope the query (e.g. stigmer)."),
77
+ page_size: z
78
+ .number()
79
+ .int()
80
+ .optional()
81
+ .describe("Maximum entries per page (default 20, max 100)."),
82
+ page_token: z
83
+ .string()
84
+ .optional()
85
+ .describe("Pagination token from a previous response's next_page_token."),
86
+ },
87
+ }, (args, extra) => textOrError(() => listPendingApprovals(target.serverAddress, resolveToken(extra, target.apiKey), {
88
+ org: args.org,
89
+ pageSize: args.page_size,
90
+ pageToken: args.page_token,
91
+ })));
92
+ server.registerTool("submit_workflow_task_approval", {
93
+ description: "Submit a reviewer decision for a workflow human_input task that is waiting for a signal. " +
94
+ "outcome must match one of the task's configured outcome names (default: approve or deny). " +
95
+ "When the task defines a form_schema (see list_pending_approvals), provide matching " +
96
+ "form_data. Returns the updated workflow execution.",
97
+ inputSchema: {
98
+ execution_id: z.string().describe("Workflow execution ID (wex_* format)."),
99
+ task_name: z.string().describe("Name of the waiting human_input task."),
100
+ outcome: z
101
+ .string()
102
+ .describe("Decision outcome. Must match a configured outcome name of the task " +
103
+ "(e.g. approve, deny, needs_revision); approve/deny when none are configured."),
104
+ comment: z.string().optional().describe("Reviewer comment, stored in the audit trail."),
105
+ form_data: z
106
+ .record(z.unknown())
107
+ .optional()
108
+ .describe("Response form data conforming to the task's form_schema, when it defines one."),
109
+ },
110
+ }, (args, extra) => textOrError(() => submitWorkflowTaskApproval(target.serverAddress, resolveToken(extra, target.apiKey), {
111
+ executionId: args.execution_id,
112
+ taskName: args.task_name,
113
+ outcome: args.outcome,
114
+ comment: args.comment,
115
+ formData: args.form_data,
116
+ })));
117
+ return [
118
+ "run_workflow",
119
+ "get_workflow_execution",
120
+ "get_workflow_execution_events",
121
+ "list_pending_approvals",
122
+ "submit_workflow_task_approval",
123
+ ];
41
124
  }
42
125
  /** Fetch a single workflow execution by id. */
43
126
  async function getWorkflowExecution(serverAddress, token, executionId) {
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/domains/workflowexecutions/tools.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,sEAAsE;AACtE,EAAE;AACF,2EAA2E;AAC3E,kDAAkD;AAIlD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gEAAgE,CAAC;AACzG,OAAO,EAEL,yBAAyB,GAC1B,MAAM,+DAA+D,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kEAAkE,CAAC;AACpH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAsB,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,gFAAgF;AAChF,MAAM,UAAU,8BAA8B,CAAC,MAAiB,EAAE,MAAqB;IACrF,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EACT,2IAA2I;QAC7I,WAAW,EAAE;YACX,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;SAC3E;KACF,EACD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,WAAW,CAAC,GAAG,EAAE,CACf,oBAAoB,CAClB,MAAM,CAAC,aAAa,EACpB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAClC,IAAI,CAAC,YAAY,CAClB,CACF,CACJ,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,+BAA+B,EAC/B;QACE,WAAW,EACT,8CAA8C;YAC9C,2EAA2E;YAC3E,+CAA+C;QACjD,WAAW,EAAE;YACX,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YAC1E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACxE,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;SACjE;KACF,EACD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,WAAW,CAAC,GAAG,EAAE,CACf,0BAA0B,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QACnF,WAAW,EAAE,IAAI,CAAC,YAAY;QAC9B,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;KACzB,CAAC,CACH,CACJ,CAAC;IAEF,OAAO,CAAC,wBAAwB,EAAE,+BAA+B,CAAC,CAAC;AACrE,CAAC;AAED,+CAA+C;AAC/C,KAAK,UAAU,oBAAoB,CACjC,aAAqB,EACrB,KAAa,EACb,WAAmB;IAEnB,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,UAAU,CACf,gCAAgC,EAChC,aAAa,EACb,KAAK,EACL,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC;YACxE,OAAO,WAAW,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,QAAQ,CAAC,GAAG,EAAE,uBAAuB,WAAW,GAAG,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAQD,+EAA+E;AAC/E,KAAK,UAAU,0BAA0B,CACvC,aAAqB,EACrB,KAAa,EACb,IAAkB;IAElB,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,UAAU,CACf,gCAAgC,EAChC,aAAa,EACb,KAAK,EACL,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;QAC5B,MAAM,GAAG,GAAsD;YAC7D,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;SAC9B,CAAC;QACF,yEAAyE;QACzE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACxD,OAAO,WAAW,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,QAAQ,CAAC,GAAG,EAAE,4BAA4B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/domains/workflowexecutions/tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/domains/workflows/tools.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAMhE,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAkDxF"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/domains/workflows/tools.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAOhE,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAkIxF"}
@@ -1,5 +1,7 @@
1
- // MCP tools for the Workflow domain (CRUD: get, apply, delete).
2
- // Go parity: mcp-server/internal/domains/workflows/tools.go.
1
+ // MCP tools for the Workflow domain (CRUD: get, apply, delete) plus the
2
+ // versioning surface (version param on get, list_workflow_versions,
3
+ // tag_workflow_version). The CRUD names/descriptions are part of the original
4
+ // Go-parity contract (mcp-server/internal/domains/workflows/tools.go).
3
5
  //
4
6
  // The workflow-specific tools (validate_workflow_yaml, task-kind registry) live
5
7
  // in sibling files.
@@ -10,15 +12,28 @@ import { textOrError } from "../toolresult.js";
10
12
  import { applyWorkflow } from "./apply.js";
11
13
  import { deleteWorkflow } from "./delete.js";
12
14
  import { fetchWorkflow } from "./fetch.js";
15
+ import { fetchWorkflowVersion, listWorkflowVersions, tagWorkflowVersion } from "./versions.js";
13
16
  /** Register the Workflow CRUD tools; returns the registered tool names. */
14
17
  export function registerWorkflowTools(server, target) {
15
18
  server.registerTool("get_workflow", {
16
- description: "Get full details of a Stigmer workflow by its org and slug.",
19
+ description: "Get full details of a Stigmer workflow by its org and slug. Pass 'version' (a full " +
20
+ "SHA-256 version hash from list_workflow_versions) to fetch a historical version instead — " +
21
+ "that returns the version entry with its validated YAML rather than the live workflow. " +
22
+ "Tags are not accepted here; resolve a tag to its hash via list_workflow_versions first.",
17
23
  inputSchema: {
18
24
  org: z.string().describe("Organization slug that owns the workflow."),
19
25
  slug: z.string().describe("Workflow slug — unique identifier within the org."),
26
+ version: z
27
+ .string()
28
+ .optional()
29
+ .describe("Full 64-character SHA-256 version hash of a historical version. Omit for the live workflow."),
20
30
  },
21
- }, (args, extra) => textOrError(() => fetchWorkflow(target.serverAddress, resolveToken(extra, target.apiKey), args.org, args.slug)));
31
+ }, (args, extra) => textOrError(() => {
32
+ const token = resolveToken(extra, target.apiKey);
33
+ return args.version !== undefined && args.version !== ""
34
+ ? fetchWorkflowVersion(target.serverAddress, token, args.org, args.slug, args.version)
35
+ : fetchWorkflow(target.serverAddress, token, args.org, args.slug);
36
+ }));
22
37
  server.registerTool("apply_workflow", {
23
38
  description: "Create or update a Stigmer workflow (idempotent). Provide identity fields (name, org) and workflow configuration (document, tasks, env, etc.).",
24
39
  inputSchema: WorkflowInputShape,
@@ -30,6 +45,55 @@ export function registerWorkflowTools(server, target) {
30
45
  slug: z.string().describe("Workflow slug — unique identifier within the org."),
31
46
  },
32
47
  }, (args, extra) => textOrError(() => deleteWorkflow(target.serverAddress, resolveToken(extra, target.apiKey), args.org, args.slug)));
33
- return ["get_workflow", "apply_workflow", "delete_workflow"];
48
+ server.registerTool("list_workflow_versions", {
49
+ description: "List a workflow's version history (newest first): version hash, tag, who applied it and " +
50
+ "when, and which version is current. Every apply that changes the workflow creates a new " +
51
+ "immutable version identified by its content hash. Entries omit the version YAML — fetch " +
52
+ "one version's full content with get_workflow and its hash.",
53
+ inputSchema: {
54
+ org: z.string().describe("Organization slug that owns the workflow."),
55
+ slug: z.string().describe("Workflow slug — unique identifier within the org."),
56
+ page_size: z
57
+ .number()
58
+ .int()
59
+ .optional()
60
+ .describe("Maximum versions per page (default 50, max 100)."),
61
+ page_token: z
62
+ .string()
63
+ .optional()
64
+ .describe("Pagination token from a previous response's next_page_token."),
65
+ },
66
+ }, (args, extra) => textOrError(() => listWorkflowVersions(target.serverAddress, resolveToken(extra, target.apiKey), {
67
+ org: args.org,
68
+ slug: args.slug,
69
+ pageSize: args.page_size,
70
+ pageToken: args.page_token,
71
+ })));
72
+ server.registerTool("tag_workflow_version", {
73
+ description: "Assign a tag (e.g. stable, production) to a specific workflow version. Tags are mutable " +
74
+ "pointers: re-tagging with an existing name moves it from its previous version, and a " +
75
+ "version holds at most one tag. Get version hashes from list_workflow_versions. Returns " +
76
+ "the updated workflow.",
77
+ inputSchema: {
78
+ org: z.string().describe("Organization slug that owns the workflow."),
79
+ slug: z.string().describe("Workflow slug — unique identifier within the org."),
80
+ version: z.string().describe("Full 64-character SHA-256 hash of the version to tag."),
81
+ tag: z
82
+ .string()
83
+ .describe("Tag to assign: alphanumeric with dots, hyphens, or underscores (e.g. stable, v1.0)."),
84
+ },
85
+ }, (args, extra) => textOrError(() => tagWorkflowVersion(target.serverAddress, resolveToken(extra, target.apiKey), {
86
+ org: args.org,
87
+ slug: args.slug,
88
+ versionHash: args.version,
89
+ tag: args.tag,
90
+ })));
91
+ return [
92
+ "get_workflow",
93
+ "apply_workflow",
94
+ "delete_workflow",
95
+ "list_workflow_versions",
96
+ "tag_workflow_version",
97
+ ];
34
98
  }
35
99
  //# sourceMappingURL=tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/domains/workflows/tools.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,6DAA6D;AAC7D,EAAE;AACF,gFAAgF;AAChF,oBAAoB;AAGpB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAsB,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,2EAA2E;AAC3E,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAqB;IAC5E,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;YACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;SAC/E;KACF,EACD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,WAAW,CAAC,GAAG,EAAE,CACf,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAC7F,CACJ,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,gJAAgJ;QAClJ,WAAW,EAAE,kBAAkB;KAChC,EACD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,WAAW,CAAC,GAAG,EAAE,CACf,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAC9E,CACJ,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EAAE,8EAA8E;QAC3F,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;YACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;SAC/E;KACF,EACD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,WAAW,CAAC,GAAG,EAAE,CACf,cAAc,CACZ,MAAM,CAAC,aAAa,EACpB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAClC,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,IAAI,CACV,CACF,CACJ,CAAC;IAEF,OAAO,CAAC,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/domains/workflows/tools.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,oEAAoE;AACpE,8EAA8E;AAC9E,uEAAuE;AACvE,EAAE;AACF,gFAAgF;AAChF,oBAAoB;AAGpB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAsB,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE/F,2EAA2E;AAC3E,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAqB;IAC5E,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,qFAAqF;YACrF,4FAA4F;YAC5F,wFAAwF;YACxF,yFAAyF;QAC3F,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;YACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YAC9E,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,6FAA6F,CAC9F;SACJ;KACF,EACD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,WAAW,CAAC,GAAG,EAAE;QACf,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,EAAE;YACtD,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;YACtF,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,gJAAgJ;QAClJ,WAAW,EAAE,kBAAkB;KAChC,EACD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,WAAW,CAAC,GAAG,EAAE,CACf,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAC9E,CACJ,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EAAE,8EAA8E;QAC3F,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;YACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;SAC/E;KACF,EACD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,WAAW,CAAC,GAAG,EAAE,CACf,cAAc,CACZ,MAAM,CAAC,aAAa,EACpB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAClC,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,IAAI,CACV,CACF,CACJ,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EACT,0FAA0F;YAC1F,0FAA0F;YAC1F,0FAA0F;YAC1F,4DAA4D;QAC9D,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;YACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YAC9E,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CAAC,kDAAkD,CAAC;YAC/D,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,8DAA8D,CAAC;SAC5E;KACF,EACD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,WAAW,CAAC,GAAG,EAAE,CACf,oBAAoB,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QAC7E,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,SAAS,EAAE,IAAI,CAAC,UAAU;KAC3B,CAAC,CACH,CACJ,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,0FAA0F;YAC1F,uFAAuF;YACvF,yFAAyF;YACzF,uBAAuB;QACzB,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;YACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YAC9E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;YACrF,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,CAAC,qFAAqF,CAAC;SACnG;KACF,EACD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,WAAW,CAAC,GAAG,EAAE,CACf,kBAAkB,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QAC3E,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,OAAO;QACzB,GAAG,EAAE,IAAI,CAAC,GAAG;KACd,CAAC,CACH,CACJ,CAAC;IAEF,OAAO;QACL,cAAc;QACd,gBAAgB;QAChB,iBAAiB;QACjB,wBAAwB;QACxB,sBAAsB;KACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ export interface ListWorkflowVersionsArgs {
2
+ readonly org: string;
3
+ readonly slug: string;
4
+ readonly pageSize?: number;
5
+ readonly pageToken?: string;
6
+ }
7
+ /**
8
+ * List a workflow's version history (newest first), with validated_yaml
9
+ * stripped from every entry (see file header).
10
+ */
11
+ export declare function listWorkflowVersions(serverAddress: string, token: string, args: ListWorkflowVersionsArgs): Promise<string>;
12
+ /**
13
+ * Fetch one historical version of a workflow: resolve org/slug → ID, then
14
+ * getVersion by full hash. Returns the WorkflowVersionEntry (hash, tag,
15
+ * provenance, and the version's validated YAML) as protojson.
16
+ */
17
+ export declare function fetchWorkflowVersion(serverAddress: string, token: string, org: string, slug: string, versionHash: string): Promise<string>;
18
+ export interface TagWorkflowVersionArgs {
19
+ readonly org: string;
20
+ readonly slug: string;
21
+ readonly versionHash: string;
22
+ readonly tag: string;
23
+ }
24
+ /**
25
+ * Assign (or move) a tag onto a workflow version: resolve org/slug → ID, then
26
+ * tagVersion. Returns the updated workflow as protojson.
27
+ */
28
+ export declare function tagWorkflowVersion(serverAddress: string, token: string, args: TagWorkflowVersionArgs): Promise<string>;
29
+ //# sourceMappingURL=versions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../../src/domains/workflows/versions.ts"],"names":[],"mappings":"AA+BA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA0BjB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
@@ -0,0 +1,99 @@
1
+ // Workflow versioning paths: the version timeline (listVersions), a pinned
2
+ // historical version (getVersion, surfaced through get_workflow's optional
3
+ // version argument), and tag assignment (tagVersion).
4
+ //
5
+ // Version identity is the SHA-256 content hash of the validated CNCF YAML;
6
+ // tags are mutable pointers onto hashes. getVersion and tagVersion address by
7
+ // workflow ID + full hash — no tag or slug resolution server-side — so the
8
+ // tools here do the org/slug → ID two-step, and tag → hash mapping goes
9
+ // through the timeline (the tool descriptions teach the model that sequence).
10
+ //
11
+ // The timeline projection strips validated_yaml from every entry: the backend
12
+ // embeds each version's full workflow YAML, which would multiply a 50-entry
13
+ // page into 50 documents. The timeline answers "what versions exist"; the
14
+ // YAML of one version comes from get_workflow with that version's hash.
15
+ import { createClient } from "@connectrpc/connect";
16
+ import { ListWorkflowVersionsResponseSchema, WorkflowVersionEntrySchema, } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/version_pb";
17
+ import { WorkflowSchema } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
18
+ import { WorkflowCommandController } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/command_pb";
19
+ import { WorkflowQueryController } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/query_pb";
20
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
21
+ import { withClient, withTransport } from "../client.js";
22
+ import { toProtoJson } from "../marshal.js";
23
+ import { rpcError } from "../rpcerr.js";
24
+ /**
25
+ * List a workflow's version history (newest first), with validated_yaml
26
+ * stripped from every entry (see file header).
27
+ */
28
+ export async function listWorkflowVersions(serverAddress, token, args) {
29
+ return withClient(WorkflowQueryController, serverAddress, token, async (client, callOptions) => {
30
+ const req = {
31
+ org: args.org,
32
+ slug: args.slug,
33
+ pageToken: args.pageToken ?? "",
34
+ };
35
+ // Forward page_size only when set, letting the server apply its default.
36
+ if ((args.pageSize ?? 0) > 0) {
37
+ req.pageSize = args.pageSize;
38
+ }
39
+ try {
40
+ const resp = await client.listVersions(req, callOptions);
41
+ const data = JSON.parse(toProtoJson(ListWorkflowVersionsResponseSchema, resp));
42
+ if (Array.isArray(data.versions)) {
43
+ for (const entry of data.versions) {
44
+ delete entry.validated_yaml;
45
+ }
46
+ }
47
+ return JSON.stringify(data, null, 2);
48
+ }
49
+ catch (err) {
50
+ throw rpcError(err, `versions of workflow "${args.slug}" in org "${args.org}"`);
51
+ }
52
+ });
53
+ }
54
+ /**
55
+ * Fetch one historical version of a workflow: resolve org/slug → ID, then
56
+ * getVersion by full hash. Returns the WorkflowVersionEntry (hash, tag,
57
+ * provenance, and the version's validated YAML) as protojson.
58
+ */
59
+ export async function fetchWorkflowVersion(serverAddress, token, org, slug, versionHash) {
60
+ const desc = `version "${versionHash}" of workflow "${slug}" in org "${org}"`;
61
+ return withTransport(serverAddress, token, async (transport, callOptions) => {
62
+ const query = createClient(WorkflowQueryController, transport);
63
+ try {
64
+ const workflow = await query.getByReference({ org, kind: ApiResourceKind.workflow, slug }, callOptions);
65
+ const entry = await query.getVersion({ workflowId: workflow.metadata?.id ?? "", versionHash }, callOptions);
66
+ return toProtoJson(WorkflowVersionEntrySchema, entry);
67
+ }
68
+ catch (err) {
69
+ throw rpcError(err, desc);
70
+ }
71
+ });
72
+ }
73
+ /**
74
+ * Assign (or move) a tag onto a workflow version: resolve org/slug → ID, then
75
+ * tagVersion. Returns the updated workflow as protojson.
76
+ */
77
+ export async function tagWorkflowVersion(serverAddress, token, args) {
78
+ const desc = `tag "${args.tag}" on workflow "${args.slug}" in org "${args.org}"`;
79
+ return withTransport(serverAddress, token, async (transport, callOptions) => {
80
+ const query = createClient(WorkflowQueryController, transport);
81
+ let id;
82
+ try {
83
+ const workflow = await query.getByReference({ org: args.org, kind: ApiResourceKind.workflow, slug: args.slug }, callOptions);
84
+ id = workflow.metadata?.id ?? "";
85
+ }
86
+ catch (err) {
87
+ throw rpcError(err, desc);
88
+ }
89
+ const command = createClient(WorkflowCommandController, transport);
90
+ try {
91
+ const workflow = await command.tagVersion({ workflowId: id, versionHash: args.versionHash, tag: args.tag }, callOptions);
92
+ return toProtoJson(WorkflowSchema, workflow);
93
+ }
94
+ catch (err) {
95
+ throw rpcError(err, desc);
96
+ }
97
+ });
98
+ }
99
+ //# sourceMappingURL=versions.js.map