@zaalipro/dsh-workflows 0.1.0-rc.12

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 (229) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE.md +224 -0
  3. package/README.i18n.yaml +4 -0
  4. package/README.md +111 -0
  5. package/README.zh.md +111 -0
  6. package/cordis.patch.yml +10 -0
  7. package/docs/architecture.i18n.yaml +4 -0
  8. package/docs/architecture.md +177 -0
  9. package/docs/architecture.zh.md +177 -0
  10. package/docs/testing.i18n.yaml +4 -0
  11. package/docs/testing.md +125 -0
  12. package/docs/testing.zh.md +125 -0
  13. package/docs/user-guide.i18n.yaml +4 -0
  14. package/docs/user-guide.md +351 -0
  15. package/docs/user-guide.zh.md +351 -0
  16. package/lib/client-types/WorkflowMemberInspector.d.ts +28 -0
  17. package/lib/client-types/WorkflowMemberInspector.d.ts.map +1 -0
  18. package/lib/client-types/WorkflowMemberInspector.js +181 -0
  19. package/lib/client-types/WorkflowMemberInspector.js.map +1 -0
  20. package/lib/client-types/WorkflowRunPanel.d.ts +43 -0
  21. package/lib/client-types/WorkflowRunPanel.d.ts.map +1 -0
  22. package/lib/client-types/WorkflowRunPanel.js +130 -0
  23. package/lib/client-types/WorkflowRunPanel.js.map +1 -0
  24. package/lib/client-types/WorkflowsDashboard.d.ts +49 -0
  25. package/lib/client-types/WorkflowsDashboard.d.ts.map +1 -0
  26. package/lib/client-types/WorkflowsDashboard.js +942 -0
  27. package/lib/client-types/WorkflowsDashboard.js.map +1 -0
  28. package/lib/client-types/adapter.d.ts +60 -0
  29. package/lib/client-types/adapter.d.ts.map +1 -0
  30. package/lib/client-types/adapter.js +117 -0
  31. package/lib/client-types/adapter.js.map +1 -0
  32. package/lib/client-types/chat-renderer.d.ts +10 -0
  33. package/lib/client-types/chat-renderer.d.ts.map +1 -0
  34. package/lib/client-types/chat-renderer.js +11 -0
  35. package/lib/client-types/chat-renderer.js.map +1 -0
  36. package/lib/client-types/contract.d.ts +210 -0
  37. package/lib/client-types/contract.d.ts.map +1 -0
  38. package/lib/client-types/contract.js +37 -0
  39. package/lib/client-types/contract.js.map +1 -0
  40. package/lib/client-types/controller.d.ts +83 -0
  41. package/lib/client-types/controller.d.ts.map +1 -0
  42. package/lib/client-types/controller.js +705 -0
  43. package/lib/client-types/controller.js.map +1 -0
  44. package/lib/client-types/index.d.ts +19 -0
  45. package/lib/client-types/index.d.ts.map +1 -0
  46. package/lib/client-types/index.js +731 -0
  47. package/lib/client-types/index.js.map +1 -0
  48. package/lib/client-types/locales.d.ts +257 -0
  49. package/lib/client-types/locales.d.ts.map +1 -0
  50. package/lib/client-types/locales.js +270 -0
  51. package/lib/client-types/locales.js.map +1 -0
  52. package/lib/client-types/slot-components.d.ts +38 -0
  53. package/lib/client-types/slot-components.d.ts.map +1 -0
  54. package/lib/client-types/slot-components.js +22 -0
  55. package/lib/client-types/slot-components.js.map +1 -0
  56. package/lib/client-types/store.d.ts +69 -0
  57. package/lib/client-types/store.d.ts.map +1 -0
  58. package/lib/client-types/store.js +135 -0
  59. package/lib/client-types/store.js.map +1 -0
  60. package/lib/client-types/workflow-definition.d.ts +52 -0
  61. package/lib/client-types/workflow-definition.d.ts.map +1 -0
  62. package/lib/client-types/workflow-definition.js +135 -0
  63. package/lib/client-types/workflow-definition.js.map +1 -0
  64. package/lib/client.js +11065 -0
  65. package/lib/client.js.map +1 -0
  66. package/lib/compat-engine/index.js +1926 -0
  67. package/lib/compat-engine/index.js.map +1 -0
  68. package/lib/compat-engine/worker.cjs +1500 -0
  69. package/lib/compat-engine/worker.cjs.map +1 -0
  70. package/lib/typert.host.d.ts +3 -0
  71. package/lib/typert.host.js +1709 -0
  72. package/lib/typert.remote-client.d.ts +57 -0
  73. package/lib/typert.remote-client.js +1662 -0
  74. package/lib/types/commands/aliases.d.ts +4 -0
  75. package/lib/types/commands/aliases.d.ts.map +1 -0
  76. package/lib/types/commands/aliases.js +25 -0
  77. package/lib/types/commands/aliases.js.map +1 -0
  78. package/lib/types/commands/index.d.ts +66 -0
  79. package/lib/types/commands/index.d.ts.map +1 -0
  80. package/lib/types/commands/index.js +550 -0
  81. package/lib/types/commands/index.js.map +1 -0
  82. package/lib/types/commands/parser.d.ts +17 -0
  83. package/lib/types/commands/parser.d.ts.map +1 -0
  84. package/lib/types/commands/parser.js +45 -0
  85. package/lib/types/commands/parser.js.map +1 -0
  86. package/lib/types/config.d.ts +71 -0
  87. package/lib/types/config.d.ts.map +1 -0
  88. package/lib/types/config.js +109 -0
  89. package/lib/types/config.js.map +1 -0
  90. package/lib/types/index.d.ts +41 -0
  91. package/lib/types/index.d.ts.map +1 -0
  92. package/lib/types/index.js +483 -0
  93. package/lib/types/index.js.map +1 -0
  94. package/lib/types/invariant.d.ts +21 -0
  95. package/lib/types/invariant.d.ts.map +1 -0
  96. package/lib/types/invariant.js +85 -0
  97. package/lib/types/invariant.js.map +1 -0
  98. package/lib/types/registry/definition.d.ts +24 -0
  99. package/lib/types/registry/definition.d.ts.map +1 -0
  100. package/lib/types/registry/definition.js +189 -0
  101. package/lib/types/registry/definition.js.map +1 -0
  102. package/lib/types/registry/index.d.ts +100 -0
  103. package/lib/types/registry/index.d.ts.map +1 -0
  104. package/lib/types/registry/index.js +899 -0
  105. package/lib/types/registry/index.js.map +1 -0
  106. package/lib/types/registry/names.d.ts +19 -0
  107. package/lib/types/registry/names.d.ts.map +1 -0
  108. package/lib/types/registry/names.js +69 -0
  109. package/lib/types/registry/names.js.map +1 -0
  110. package/lib/types/registry/remote.d.ts +15 -0
  111. package/lib/types/registry/remote.d.ts.map +1 -0
  112. package/lib/types/registry/remote.js +128 -0
  113. package/lib/types/registry/remote.js.map +1 -0
  114. package/lib/types/registry/roots.d.ts +44 -0
  115. package/lib/types/registry/roots.d.ts.map +1 -0
  116. package/lib/types/registry/roots.js +118 -0
  117. package/lib/types/registry/roots.js.map +1 -0
  118. package/lib/types/registry/types.d.ts +62 -0
  119. package/lib/types/registry/types.d.ts.map +1 -0
  120. package/lib/types/registry/types.js +2 -0
  121. package/lib/types/registry/types.js.map +1 -0
  122. package/lib/types/registry/watchers.d.ts +70 -0
  123. package/lib/types/registry/watchers.d.ts.map +1 -0
  124. package/lib/types/registry/watchers.js +152 -0
  125. package/lib/types/registry/watchers.js.map +1 -0
  126. package/lib/types/remote-events.d.ts +42 -0
  127. package/lib/types/remote-events.d.ts.map +1 -0
  128. package/lib/types/remote-events.js +21 -0
  129. package/lib/types/remote-events.js.map +1 -0
  130. package/lib/types/run-recorder.d.ts +44 -0
  131. package/lib/types/run-recorder.d.ts.map +1 -0
  132. package/lib/types/run-recorder.js +356 -0
  133. package/lib/types/run-recorder.js.map +1 -0
  134. package/lib/types/supervisor/canned-validate.d.ts +25 -0
  135. package/lib/types/supervisor/canned-validate.d.ts.map +1 -0
  136. package/lib/types/supervisor/canned-validate.js +122 -0
  137. package/lib/types/supervisor/canned-validate.js.map +1 -0
  138. package/lib/types/supervisor/completion-notice.d.ts +49 -0
  139. package/lib/types/supervisor/completion-notice.d.ts.map +1 -0
  140. package/lib/types/supervisor/completion-notice.js +281 -0
  141. package/lib/types/supervisor/completion-notice.js.map +1 -0
  142. package/lib/types/supervisor/cursors.d.ts +68 -0
  143. package/lib/types/supervisor/cursors.d.ts.map +1 -0
  144. package/lib/types/supervisor/cursors.js +158 -0
  145. package/lib/types/supervisor/cursors.js.map +1 -0
  146. package/lib/types/supervisor/engine-compat.d.ts +48 -0
  147. package/lib/types/supervisor/engine-compat.d.ts.map +1 -0
  148. package/lib/types/supervisor/engine-compat.js +116 -0
  149. package/lib/types/supervisor/engine-compat.js.map +1 -0
  150. package/lib/types/supervisor/index.d.ts +183 -0
  151. package/lib/types/supervisor/index.d.ts.map +1 -0
  152. package/lib/types/supervisor/index.js +2040 -0
  153. package/lib/types/supervisor/index.js.map +1 -0
  154. package/lib/types/supervisor/parallel-compat.d.ts +36 -0
  155. package/lib/types/supervisor/parallel-compat.d.ts.map +1 -0
  156. package/lib/types/supervisor/parallel-compat.js +180 -0
  157. package/lib/types/supervisor/parallel-compat.js.map +1 -0
  158. package/lib/types/supervisor/remote.d.ts +25 -0
  159. package/lib/types/supervisor/remote.d.ts.map +1 -0
  160. package/lib/types/supervisor/remote.js +478 -0
  161. package/lib/types/supervisor/remote.js.map +1 -0
  162. package/lib/types/supervisor/storage/bounded-file.d.ts +41 -0
  163. package/lib/types/supervisor/storage/bounded-file.d.ts.map +1 -0
  164. package/lib/types/supervisor/storage/bounded-file.js +186 -0
  165. package/lib/types/supervisor/storage/bounded-file.js.map +1 -0
  166. package/lib/types/supervisor/storage/details-codec.d.ts +14 -0
  167. package/lib/types/supervisor/storage/details-codec.d.ts.map +1 -0
  168. package/lib/types/supervisor/storage/details-codec.js +359 -0
  169. package/lib/types/supervisor/storage/details-codec.js.map +1 -0
  170. package/lib/types/supervisor/storage/index.d.ts +26 -0
  171. package/lib/types/supervisor/storage/index.d.ts.map +1 -0
  172. package/lib/types/supervisor/storage/index.js +100 -0
  173. package/lib/types/supervisor/storage/index.js.map +1 -0
  174. package/lib/types/supervisor/storage/lease.d.ts +34 -0
  175. package/lib/types/supervisor/storage/lease.d.ts.map +1 -0
  176. package/lib/types/supervisor/storage/lease.js +289 -0
  177. package/lib/types/supervisor/storage/lease.js.map +1 -0
  178. package/lib/types/supervisor/storage/manifest-codec.d.ts +10 -0
  179. package/lib/types/supervisor/storage/manifest-codec.d.ts.map +1 -0
  180. package/lib/types/supervisor/storage/manifest-codec.js +335 -0
  181. package/lib/types/supervisor/storage/manifest-codec.js.map +1 -0
  182. package/lib/types/supervisor/storage/manifest-store.d.ts +99 -0
  183. package/lib/types/supervisor/storage/manifest-store.d.ts.map +1 -0
  184. package/lib/types/supervisor/storage/manifest-store.js +1606 -0
  185. package/lib/types/supervisor/storage/manifest-store.js.map +1 -0
  186. package/lib/types/supervisor/storage/manifest-types.d.ts +269 -0
  187. package/lib/types/supervisor/storage/manifest-types.d.ts.map +1 -0
  188. package/lib/types/supervisor/storage/manifest-types.js +2 -0
  189. package/lib/types/supervisor/storage/manifest-types.js.map +1 -0
  190. package/lib/types/supervisor/storage/private-root.d.ts +143 -0
  191. package/lib/types/supervisor/storage/private-root.d.ts.map +1 -0
  192. package/lib/types/supervisor/storage/private-root.js +860 -0
  193. package/lib/types/supervisor/storage/private-root.js.map +1 -0
  194. package/lib/types/supervisor/storage/recovery.d.ts +14 -0
  195. package/lib/types/supervisor/storage/recovery.d.ts.map +1 -0
  196. package/lib/types/supervisor/storage/recovery.js +126 -0
  197. package/lib/types/supervisor/storage/recovery.js.map +1 -0
  198. package/lib/types/supervisor/storage/run-files.d.ts +67 -0
  199. package/lib/types/supervisor/storage/run-files.d.ts.map +1 -0
  200. package/lib/types/supervisor/storage/run-files.js +346 -0
  201. package/lib/types/supervisor/storage/run-files.js.map +1 -0
  202. package/lib/types/supervisor/types.d.ts +295 -0
  203. package/lib/types/supervisor/types.d.ts.map +1 -0
  204. package/lib/types/supervisor/types.js +3 -0
  205. package/lib/types/supervisor/types.js.map +1 -0
  206. package/lib/types/supervisor/value-view.d.ts +19 -0
  207. package/lib/types/supervisor/value-view.d.ts.map +1 -0
  208. package/lib/types/supervisor/value-view.js +183 -0
  209. package/lib/types/supervisor/value-view.js.map +1 -0
  210. package/lib/types/tool/index.d.ts +86 -0
  211. package/lib/types/tool/index.d.ts.map +1 -0
  212. package/lib/types/tool/index.js +810 -0
  213. package/lib/types/tool/index.js.map +1 -0
  214. package/lib/types/tool/schema.d.ts +158 -0
  215. package/lib/types/tool/schema.d.ts.map +1 -0
  216. package/lib/types/tool/schema.js +137 -0
  217. package/lib/types/tool/schema.js.map +1 -0
  218. package/lib/types/types.d.ts +9 -0
  219. package/lib/types/types.d.ts.map +1 -0
  220. package/lib/types/types.js +3 -0
  221. package/lib/types/types.js.map +1 -0
  222. package/lib/types/user-questions.d.ts +9 -0
  223. package/lib/types/user-questions.d.ts.map +1 -0
  224. package/lib/types/user-questions.js +91 -0
  225. package/lib/types/user-questions.js.map +1 -0
  226. package/package.json +291 -0
  227. package/skills/create-workflow/SKILL.md +166 -0
  228. package/vendor/workflow-engine/LICENSE +21 -0
  229. package/vendor/workflow-engine/README.md +1 -0
@@ -0,0 +1,478 @@
1
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
2
+ var useValue = arguments.length > 2;
3
+ for (var i = 0; i < initializers.length; i++) {
4
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
5
+ }
6
+ return useValue ? value : void 0;
7
+ };
8
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
9
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
10
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
11
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
12
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
13
+ var _, done = false;
14
+ for (var i = decorators.length - 1; i >= 0; i--) {
15
+ var context = {};
16
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
17
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
18
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
19
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
20
+ if (kind === "accessor") {
21
+ if (result === void 0) continue;
22
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
23
+ if (_ = accept(result.get)) descriptor.get = _;
24
+ if (_ = accept(result.set)) descriptor.set = _;
25
+ if (_ = accept(result.init)) initializers.unshift(_);
26
+ }
27
+ else if (_ = accept(result)) {
28
+ if (kind === "field") initializers.unshift(_);
29
+ else descriptor[key] = _;
30
+ }
31
+ }
32
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
33
+ done = true;
34
+ };
35
+ import { randomBytes } from 'node:crypto';
36
+ import { Remote, TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
37
+ import { decodeWorkflowCursor, encodeWorkflowCursor } from './cursors.js';
38
+ const PAGE_MIN = 1;
39
+ const PAGE_MAX = 200;
40
+ const PAGE_DEFAULT = 50;
41
+ const ARTIFACT_MIN = 4;
42
+ const ARTIFACT_MAX = 131_072;
43
+ const ARTIFACT_DEFAULT = 32_768;
44
+ function sessionIdOf(agent) {
45
+ const value = agent.session?.id;
46
+ return typeof value === 'string' ? value : '';
47
+ }
48
+ function failure(code, message, details) {
49
+ if (code === 'revision-conflict') {
50
+ return { ok: false, error: { code, message: 'workflow run changed; refresh it before applying a control', details: details } };
51
+ }
52
+ if (code === 'action-unavailable') {
53
+ return { ok: false, error: { code, message, details: details } };
54
+ }
55
+ return { ok: false, error: { code, message, ...(details === undefined ? {} : { details }) } };
56
+ }
57
+ function validPageLimit(value) {
58
+ const limit = value ?? PAGE_DEFAULT;
59
+ return Number.isSafeInteger(limit) && limit >= PAGE_MIN && limit <= PAGE_MAX ? limit : undefined;
60
+ }
61
+ function validArtifactLimit(value) {
62
+ const limit = value ?? ARTIFACT_DEFAULT;
63
+ return Number.isSafeInteger(limit) && limit >= ARTIFACT_MIN && limit <= ARTIFACT_MAX ? limit : undefined;
64
+ }
65
+ function isAbort(error) {
66
+ return (error instanceof DOMException && error.name === 'AbortError')
67
+ || (error instanceof Error && error.name === 'AbortError');
68
+ }
69
+ function errorCode(error) {
70
+ if (typeof error !== 'object' || error === null || !('code' in error))
71
+ return undefined;
72
+ const code = error.code;
73
+ return typeof code === 'string' ? code : undefined;
74
+ }
75
+ function errorMessage(error) {
76
+ return error instanceof Error ? error.message : '';
77
+ }
78
+ /** HMAC page bound is retained/pageable length; evicted/omitted stay metadata. */
79
+ function pageableTotal(kind, page) {
80
+ if (kind === 'logs')
81
+ return Math.max(0, Number(page.total) - Number(page.evicted ?? 0));
82
+ if (kind === 'artifacts')
83
+ return Math.max(0, Number(page.total) - Number(page.omitted ?? 0));
84
+ return Number(page.total);
85
+ }
86
+ function unavailable(error, kind, extras) {
87
+ if (isAbort(error))
88
+ throw error;
89
+ const code = errorCode(error);
90
+ const message = errorMessage(error);
91
+ if (code === 'WORKFLOW_CURSOR_INVALID') {
92
+ return failure('invalid-cursor', 'workflow page cursor is invalid or belongs to another collection');
93
+ }
94
+ if (code === 'WORKFLOW_STALE_REVISION') {
95
+ if (kind === 'artifact') {
96
+ return failure('artifact-changed', 'workflow artifact collection changed; refresh it before reading', extras?.revision === undefined ? undefined : { revision: extras.revision });
97
+ }
98
+ return failure('stale-cursor', 'workflow page cursor is stale; refresh the collection');
99
+ }
100
+ if (code === 'WORKFLOW_LIMIT') {
101
+ if (kind === 'artifact' || /maxBytes/u.test(message)) {
102
+ return failure('invalid-artifact-limit', 'workflow artifact maxBytes must be a safe integer from 4 through 131072', { min: 4, max: 131_072 });
103
+ }
104
+ return failure('invalid-page-limit', 'workflow page limit must be a safe integer from 1 through 200', { min: 1, max: 200 });
105
+ }
106
+ if (code === 'WORKFLOW_STORAGE_CORRUPT') {
107
+ return failure('stale-cursor', 'workflow page cursor is stale; refresh the collection');
108
+ }
109
+ if (code === 'WORKFLOW_STORAGE_UNSUPPORTED' || code === 'WORKFLOW_STORAGE_LIMIT') {
110
+ return failure('storage-unavailable', kind === 'artifact'
111
+ ? 'workflow scratch artifacts are unavailable'
112
+ : 'workflow retained details are unavailable');
113
+ }
114
+ // Only authorization/identity misses become indistinguishable not-found.
115
+ // UNSAFE and unexpected faults stay outer so they are not laundered as a
116
+ // missing id.
117
+ if (code === 'WORKFLOW_RUN_NOT_FOUND' || code === 'WORKFLOW_RUN_NOT_OWNED' || code === 'WORKFLOW_INVALID_STATE') {
118
+ if (kind === 'member')
119
+ return failure('member-not-found', 'workflow member was not found in this run');
120
+ if (kind === 'artifact')
121
+ return failure('artifact-not-found', 'workflow scratch artifact was not found');
122
+ return failure('run-not-found', 'workflow run was not found');
123
+ }
124
+ throw error;
125
+ }
126
+ /** Direct Agent-authorized run API. Protected values are never event payloads. */
127
+ let WorkflowRunsRemote = (() => {
128
+ let _classSuper = TypertRemoteService;
129
+ let _instanceExtraInitializers = [];
130
+ let _list_decorators;
131
+ let _detail_decorators;
132
+ let _members_decorators;
133
+ let _memberDetail_decorators;
134
+ let _logs_decorators;
135
+ let _result_decorators;
136
+ let _artifacts_decorators;
137
+ let _artifact_decorators;
138
+ let _control_decorators;
139
+ return class WorkflowRunsRemote extends _classSuper {
140
+ static {
141
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
142
+ _list_decorators = [Remote('list')];
143
+ _detail_decorators = [Remote('detail')];
144
+ _members_decorators = [Remote('members')];
145
+ _memberDetail_decorators = [Remote('memberDetail')];
146
+ _logs_decorators = [Remote('logs')];
147
+ _result_decorators = [Remote('result')];
148
+ _artifacts_decorators = [Remote('artifacts')];
149
+ _artifact_decorators = [Remote('artifact')];
150
+ _control_decorators = [Remote('control')];
151
+ __esDecorate(this, null, _list_decorators, { kind: "method", name: "list", static: false, private: false, access: { has: obj => "list" in obj, get: obj => obj.list }, metadata: _metadata }, null, _instanceExtraInitializers);
152
+ __esDecorate(this, null, _detail_decorators, { kind: "method", name: "detail", static: false, private: false, access: { has: obj => "detail" in obj, get: obj => obj.detail }, metadata: _metadata }, null, _instanceExtraInitializers);
153
+ __esDecorate(this, null, _members_decorators, { kind: "method", name: "members", static: false, private: false, access: { has: obj => "members" in obj, get: obj => obj.members }, metadata: _metadata }, null, _instanceExtraInitializers);
154
+ __esDecorate(this, null, _memberDetail_decorators, { kind: "method", name: "memberDetail", static: false, private: false, access: { has: obj => "memberDetail" in obj, get: obj => obj.memberDetail }, metadata: _metadata }, null, _instanceExtraInitializers);
155
+ __esDecorate(this, null, _logs_decorators, { kind: "method", name: "logs", static: false, private: false, access: { has: obj => "logs" in obj, get: obj => obj.logs }, metadata: _metadata }, null, _instanceExtraInitializers);
156
+ __esDecorate(this, null, _result_decorators, { kind: "method", name: "result", static: false, private: false, access: { has: obj => "result" in obj, get: obj => obj.result }, metadata: _metadata }, null, _instanceExtraInitializers);
157
+ __esDecorate(this, null, _artifacts_decorators, { kind: "method", name: "artifacts", static: false, private: false, access: { has: obj => "artifacts" in obj, get: obj => obj.artifacts }, metadata: _metadata }, null, _instanceExtraInitializers);
158
+ __esDecorate(this, null, _artifact_decorators, { kind: "method", name: "artifact", static: false, private: false, access: { has: obj => "artifact" in obj, get: obj => obj.artifact }, metadata: _metadata }, null, _instanceExtraInitializers);
159
+ __esDecorate(this, null, _control_decorators, { kind: "method", name: "control", static: false, private: false, access: { has: obj => "control" in obj, get: obj => obj.control }, metadata: _metadata }, null, _instanceExtraInitializers);
160
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
161
+ }
162
+ static inject = ['workflowSupervisor'];
163
+ supervisor = __runInitializers(this, _instanceExtraInitializers);
164
+ cursorSecret = randomBytes(32);
165
+ processEpoch = randomBytes(16).toString('hex');
166
+ constructor(ctx) {
167
+ super(ctx, 'workflowRunsRemote', { namespace: 'workflowRuns' });
168
+ this.supervisor = ctx.workflowSupervisor;
169
+ }
170
+ cursorOffset(cursor, kind, sessionId, entityId, revision, total) {
171
+ if (cursor === undefined)
172
+ return { ok: true, value: 0 };
173
+ const decoded = decodeWorkflowCursor(this.cursorSecret, String(cursor), {
174
+ kind, sessionId, entityId, processEpoch: this.processEpoch, revision, total,
175
+ });
176
+ if (decoded.ok)
177
+ return { ok: true, value: decoded.value.offset };
178
+ return decoded.reason === 'stale'
179
+ ? failure('stale-cursor', 'workflow page cursor is stale; refresh the collection')
180
+ : failure('invalid-cursor', 'workflow page cursor is invalid or belongs to another collection');
181
+ }
182
+ nextCursor(kind, sessionId, entityId, revision, offset, returned, total) {
183
+ const next = offset + returned;
184
+ // A zero-length page must not mint a continuation token; that is the
185
+ // retained-vs-evicted-total loop that HMAC paging is here to prevent.
186
+ if (returned === 0 || next >= total)
187
+ return undefined;
188
+ return encodeWorkflowCursor(this.cursorSecret, {
189
+ version: 1, kind, sessionId, entityId, processEpoch: this.processEpoch,
190
+ revision, offset: next,
191
+ });
192
+ }
193
+ async list(agent, request, signal) {
194
+ signal.throwIfAborted();
195
+ const limit = validPageLimit(request?.limit);
196
+ if (limit === undefined) {
197
+ return failure('invalid-page-limit', 'workflow page limit must be a safe integer from 1 through 200', { min: 1, max: 200 });
198
+ }
199
+ try {
200
+ const sessionId = sessionIdOf(agent);
201
+ // A cursorless request defines a new snapshot, so its page is the
202
+ // baseline. Reading a one-row baseline first creates an avoidable race:
203
+ // an actively running workflow can advance between the two reads and
204
+ // make opening/refreshing the dashboard fail as a stale cursor even
205
+ // though the caller supplied no cursor at all.
206
+ if (request?.cursor === undefined) {
207
+ const page = await this.supervisor.list(agent, { limit }, signal);
208
+ signal.throwIfAborted();
209
+ const items = page.items.slice(0, limit);
210
+ const revision = page.sessionRevision;
211
+ const nextCursor = this.nextCursor('runs', sessionId, '', revision, 0, items.length, page.total);
212
+ return { ok: true, value: {
213
+ epoch: this.processEpoch,
214
+ sessionRevision: revision, items, total: page.total,
215
+ ...(nextCursor === undefined ? {} : { nextCursor }),
216
+ } };
217
+ }
218
+ // Obtain the current authorized baseline before accepting its cursor.
219
+ const baseline = await this.supervisor.list(agent, { limit: 1 }, signal);
220
+ signal.throwIfAborted();
221
+ const revision = baseline.sessionRevision;
222
+ const offsetResult = this.cursorOffset(request?.cursor, 'runs', sessionId, '', revision, baseline.total);
223
+ if (!offsetResult.ok)
224
+ return offsetResult;
225
+ const offset = offsetResult.value;
226
+ const page = offset === 0 && limit === 1
227
+ ? baseline
228
+ : await this.supervisor.list(agent, { limit, cursor: String(offset) }, signal);
229
+ signal.throwIfAborted();
230
+ // A mutation during the second read makes the requested baseline stale.
231
+ if (page.sessionRevision !== revision || String(page.epoch) !== String(baseline.epoch)) {
232
+ return failure('stale-cursor', 'workflow page cursor is stale; refresh the collection');
233
+ }
234
+ const items = page.items.slice(0, limit);
235
+ const nextCursor = this.nextCursor('runs', sessionId, '', revision, offset, items.length, baseline.total);
236
+ return { ok: true, value: {
237
+ epoch: this.processEpoch,
238
+ sessionRevision: revision, items, total: baseline.total,
239
+ ...(nextCursor === undefined ? {} : { nextCursor }),
240
+ } };
241
+ }
242
+ catch (error) {
243
+ return unavailable(error, 'run');
244
+ }
245
+ }
246
+ async detail(agent, request, signal) {
247
+ signal.throwIfAborted();
248
+ try {
249
+ const detail = await this.supervisor.detail(agent, request.runId, signal);
250
+ signal.throwIfAborted();
251
+ // Absolute script projections are Host-only execution authority.
252
+ const { scriptPath: _scriptPath, ...redacted } = detail;
253
+ return { ok: true, value: redacted };
254
+ }
255
+ catch (error) {
256
+ return unavailable(error, 'run');
257
+ }
258
+ }
259
+ async page(agent, request, signal, kind, read) {
260
+ const limit = validPageLimit(request.limit);
261
+ if (limit === undefined) {
262
+ return failure('invalid-page-limit', 'workflow page limit must be a safe integer from 1 through 200', { min: 1, max: 200 });
263
+ }
264
+ signal.throwIfAborted();
265
+ try {
266
+ // Authorize the selected run before any cursor distinction is exposed.
267
+ await this.supervisor.detail(agent, request.runId, signal);
268
+ // As with the run list, a cursorless page establishes (rather than
269
+ // continues) a snapshot. Use that one read both as the page and as the
270
+ // revision/total bound for the first authenticated continuation token.
271
+ if (request.cursor === undefined) {
272
+ const value = await read({ ...request, limit });
273
+ signal.throwIfAborted();
274
+ const items = value.items.slice(0, limit);
275
+ const hmac = this.nextCursor(kind, sessionIdOf(agent), String(request.runId), value.revision, 0, items.length, pageableTotal(kind, value));
276
+ const rest = { ...value, nextCursor: undefined };
277
+ delete rest.nextCursor;
278
+ return { ok: true, value: { ...rest, items, ...(hmac === undefined ? {} : { nextCursor: hmac }) } };
279
+ }
280
+ const baseline = await read({ ...request, cursor: undefined, limit: 1 });
281
+ signal.throwIfAborted();
282
+ const bound = pageableTotal(kind, baseline);
283
+ const offsetResult = this.cursorOffset(request.cursor, kind, sessionIdOf(agent), String(request.runId), baseline.revision, bound);
284
+ if (!offsetResult.ok)
285
+ return offsetResult;
286
+ const offset = offsetResult.value;
287
+ const value = await read({ ...request, cursor: String(offset), limit });
288
+ signal.throwIfAborted();
289
+ if (value.revision !== baseline.revision)
290
+ return failure('stale-cursor', 'workflow page cursor is stale; refresh the collection');
291
+ const items = value.items.slice(0, limit);
292
+ const hmac = this.nextCursor(kind, sessionIdOf(agent), String(request.runId), value.revision, offset, items.length, pageableTotal(kind, value));
293
+ const rest = { ...value, nextCursor: undefined };
294
+ delete rest.nextCursor;
295
+ return { ok: true, value: { ...rest, items, ...(hmac === undefined ? {} : { nextCursor: hmac }) } };
296
+ }
297
+ catch (error) {
298
+ return unavailable(error, 'run');
299
+ }
300
+ }
301
+ async members(agent, request, signal) {
302
+ if (this.supervisor.members === undefined)
303
+ return failure('storage-unavailable', 'workflow retained member details are unavailable');
304
+ return this.page(agent, request, signal, 'members', value => this.supervisor.members(agent, value, signal));
305
+ }
306
+ async memberDetail(agent, request, signal) {
307
+ signal.throwIfAborted();
308
+ try {
309
+ await this.supervisor.detail(agent, request.runId, signal);
310
+ }
311
+ catch (error) {
312
+ return unavailable(error, 'run');
313
+ }
314
+ try {
315
+ if (this.supervisor.memberDetail === undefined)
316
+ return failure('member-not-found', 'workflow member was not found in this run');
317
+ const value = await this.supervisor.memberDetail(agent, request, signal);
318
+ signal.throwIfAborted();
319
+ return { ok: true, value };
320
+ }
321
+ catch (error) {
322
+ return unavailable(error, 'member');
323
+ }
324
+ }
325
+ async logs(agent, request, signal) {
326
+ if (this.supervisor.logs === undefined)
327
+ return failure('storage-unavailable', 'workflow retained logs are unavailable');
328
+ return this.page(agent, request, signal, 'logs', value => this.supervisor.logs(agent, value, signal));
329
+ }
330
+ async result(agent, request, signal) {
331
+ signal.throwIfAborted();
332
+ try {
333
+ await this.supervisor.detail(agent, request.runId, signal);
334
+ }
335
+ catch (error) {
336
+ return unavailable(error, 'run');
337
+ }
338
+ try {
339
+ if (this.supervisor.result === undefined)
340
+ return failure('storage-unavailable', 'workflow retained result is unavailable');
341
+ const value = await this.supervisor.result(agent, request.runId, signal);
342
+ signal.throwIfAborted();
343
+ return { ok: true, value };
344
+ }
345
+ catch (error) {
346
+ return unavailable(error, 'run');
347
+ }
348
+ }
349
+ async artifacts(agent, request, signal) {
350
+ if (this.supervisor.artifacts === undefined)
351
+ return failure('storage-unavailable', 'workflow scratch artifacts are unavailable');
352
+ return this.page(agent, request, signal, 'artifacts', value => this.supervisor.artifacts(agent, value, signal));
353
+ }
354
+ async artifact(agent, request, signal) {
355
+ signal.throwIfAborted();
356
+ const maxBytes = validArtifactLimit(request.maxBytes);
357
+ if (maxBytes === undefined) {
358
+ return failure('invalid-artifact-limit', 'workflow artifact maxBytes must be a safe integer from 4 through 131072', { min: 4, max: 131_072 });
359
+ }
360
+ let revision = 0;
361
+ try {
362
+ const detail = await this.supervisor.detail(agent, request.runId, signal);
363
+ revision = detail.run.artifactsRevision;
364
+ }
365
+ catch (error) {
366
+ return unavailable(error, 'run');
367
+ }
368
+ try {
369
+ if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(request.name)) {
370
+ return failure('artifact-not-found', 'workflow scratch artifact was not found');
371
+ }
372
+ if (request.expectedRevision !== undefined && request.expectedRevision !== revision) {
373
+ return failure('artifact-changed', 'workflow artifact collection changed; refresh it before reading', { revision });
374
+ }
375
+ if (this.supervisor.artifact === undefined)
376
+ return failure('artifact-not-found', 'workflow scratch artifact was not found');
377
+ let offset = 0;
378
+ let first;
379
+ if (request.cursor !== undefined) {
380
+ // The backend will verify the exact current byte total. First read at
381
+ // offset zero obtains that protected total after run authorization.
382
+ first = await this.supervisor.artifact(agent, { ...request, cursor: undefined, maxBytes: ARTIFACT_MIN }, signal);
383
+ if (request.expectedRevision !== undefined && first.revision !== request.expectedRevision) {
384
+ return failure('artifact-changed', 'workflow artifact collection changed; refresh it before reading', { revision: first.revision });
385
+ }
386
+ const decoded = this.cursorOffset(request.cursor, 'artifact', sessionIdOf(agent), `${request.runId}\0${request.name}`, first.revision, first.totalBytes);
387
+ if (!decoded.ok)
388
+ return decoded;
389
+ offset = decoded.value;
390
+ }
391
+ const value = await this.supervisor.artifact(agent, { ...request, cursor: String(offset), maxBytes }, signal);
392
+ signal.throwIfAborted();
393
+ // Second-read CAS: a raced rewrite of identity/revision/length must not
394
+ // return mixed page bytes from two generations.
395
+ if ((request.expectedRevision !== undefined && value.revision !== request.expectedRevision)
396
+ || (first !== undefined && (value.revision !== first.revision
397
+ || value.totalBytes !== first.totalBytes
398
+ || value.artifact.name !== first.artifact.name
399
+ || value.artifact.bytes !== first.artifact.bytes))) {
400
+ return failure('artifact-changed', 'workflow artifact collection changed; refresh it before reading', { revision: value.revision });
401
+ }
402
+ const hmac = this.nextCursor('artifact', sessionIdOf(agent), `${request.runId}\0${request.name}`, value.revision, value.offsetBytes, value.returnedBytes, value.totalBytes);
403
+ const rest = { ...value, nextCursor: undefined };
404
+ delete rest.nextCursor;
405
+ return { ok: true, value: { ...rest, ...(hmac === undefined ? {} : { nextCursor: hmac }) } };
406
+ }
407
+ catch (error) {
408
+ return unavailable(error, 'artifact', { revision });
409
+ }
410
+ }
411
+ async control(agent, request, signal) {
412
+ signal.throwIfAborted();
413
+ let current;
414
+ try {
415
+ current = await this.supervisor.detail(agent, request.runId, signal);
416
+ }
417
+ catch (error) {
418
+ return unavailable(error, 'run');
419
+ }
420
+ const run = current.run;
421
+ if (!Number.isSafeInteger(request.expectedRevision) || request.expectedRevision !== run.revision) {
422
+ return failure('revision-conflict', 'workflow run changed; refresh it before applying a control', { run });
423
+ }
424
+ if (!run.allowedActions.includes(request.action)) {
425
+ if (request.action === 'resume' && run.status === 'budget-limited') {
426
+ return failure('action-unavailable', `workflow "${run.displayName}" requires a higher agent_budget to resume`, { reason: 'budget-limited', run });
427
+ }
428
+ const reason = request.action === 'save' ? 'save-ineligible' : 'invalid-state';
429
+ return failure('action-unavailable', `workflow action "${request.action}" is not available while run status is "${run.status}"`, { reason, run });
430
+ }
431
+ try {
432
+ let updated;
433
+ switch (request.action) {
434
+ case 'pause':
435
+ updated = await this.supervisor.pause(run.displayName, agent, signal);
436
+ break;
437
+ case 'resume':
438
+ updated = await this.supervisor.resume(run.displayName, agent, signal);
439
+ break;
440
+ case 'stop':
441
+ updated = await this.supervisor.stop(run.displayName, agent, signal);
442
+ break;
443
+ case 'save':
444
+ await this.supervisor.save(run.displayName, agent, undefined, signal);
445
+ updated = (await this.supervisor.detail(agent, request.runId, signal)).run;
446
+ break;
447
+ }
448
+ return { ok: true, value: { run: updated } };
449
+ }
450
+ catch (error) {
451
+ if (isAbort(error))
452
+ throw error;
453
+ const code = errorCode(error);
454
+ if (code === 'WORKFLOW_STALE_REVISION') {
455
+ try {
456
+ const latest = (await this.supervisor.detail(agent, request.runId, signal)).run;
457
+ return failure('revision-conflict', 'workflow run changed; refresh it before applying a control', { run: latest });
458
+ }
459
+ catch (reread) {
460
+ return unavailable(reread, 'run');
461
+ }
462
+ }
463
+ if (code === 'WORKFLOW_RUN_NOT_FOUND' || code === 'WORKFLOW_RUN_NOT_OWNED')
464
+ return unavailable(error, 'run');
465
+ if (code === 'WORKFLOW_INVALID_STATE' || code === 'WORKFLOW_LIMIT') {
466
+ const reason = request.action === 'save' ? 'save-ineligible' : 'invalid-state';
467
+ if (request.action === 'resume' && run.status === 'budget-limited') {
468
+ return failure('action-unavailable', `workflow "${run.displayName}" requires a higher agent_budget to resume`, { reason: 'budget-limited', run });
469
+ }
470
+ return failure('action-unavailable', `workflow action "${request.action}" is not available while run status is "${run.status}"`, { reason, run });
471
+ }
472
+ throw error;
473
+ }
474
+ }
475
+ };
476
+ })();
477
+ export { WorkflowRunsRemote };
478
+ //# sourceMappingURL=remote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../src/supervisor/remote.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { FsPrivateDirectory } from './private-root.js';
2
+ export type BoundedFileErrorCode = 'WORKFLOW_STORAGE_UNSAFE' | 'WORKFLOW_STORAGE_LIMIT' | 'WORKFLOW_STORAGE_CORRUPT' | 'WORKFLOW_STORAGE_UNSUPPORTED' | 'WORKFLOW_STORAGE_OWNED' | 'WORKFLOW_RUN_NOT_FOUND' | 'WORKFLOW_STALE_REVISION';
3
+ export declare class BoundedFileError extends Error {
4
+ readonly code: BoundedFileErrorCode;
5
+ constructor(message: string, code?: BoundedFileErrorCode, options?: ErrorOptions);
6
+ }
7
+ /** Structural equivalents of the compatible Host filesystem write vocabulary. */
8
+ export type OwnedFileWriteIntent = {
9
+ readonly kind: 'createIfAbsent';
10
+ } | {
11
+ readonly kind: 'replaceIfVersion';
12
+ readonly version: unknown;
13
+ };
14
+ export interface OwnedFileWriteOutcome {
15
+ readonly operation: string;
16
+ readonly version: unknown;
17
+ readonly before: unknown;
18
+ readonly after: unknown;
19
+ }
20
+ /** Validate a value before it is used as a descriptor-relative component. */
21
+ export declare function assertSafeComponent(value: string, label?: string): string;
22
+ /** Read through a retained private-directory authority with a fixed byte cap. */
23
+ export declare function readOwnedRegularFile(directory: FsPrivateDirectory, name: string, options: {
24
+ readonly maxBytes: number;
25
+ readonly signal?: AbortSignal;
26
+ }): Promise<Uint8Array>;
27
+ /** Publish through the compatible Host's guarded private-directory operation. */
28
+ export declare function writeOwnedFileAtomic(directory: FsPrivateDirectory, name: string, bytes: Uint8Array, options: {
29
+ readonly maxBytes: number;
30
+ readonly expected: OwnedFileWriteIntent;
31
+ readonly signal?: AbortSignal;
32
+ }): Promise<OwnedFileWriteOutcome>;
33
+ /** Legacy path-shaped bounded read, retained for compatibility with early consumers. */
34
+ export declare function readBoundedUtf8(path: string, maxBytes: number): Promise<string>;
35
+ /** Legacy path-shaped atomic publication with fsync and final-component checks. */
36
+ export declare function writeBoundedAtomic(path: string, content: string, options: {
37
+ readonly maxBytes: number;
38
+ readonly mode?: number;
39
+ readonly createOnly?: boolean;
40
+ }): Promise<void>;
41
+ //# sourceMappingURL=bounded-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounded-file.d.ts","sourceRoot":"","sources":["../../../../src/supervisor/storage/bounded-file.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE3D,MAAM,MAAM,oBAAoB,GAC5B,yBAAyB,GACzB,wBAAwB,GACxB,0BAA0B,GAC1B,8BAA8B,GAC9B,wBAAwB,GACxB,wBAAwB,GACxB,yBAAyB,CAAA;AAE7B,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;gBAEvB,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAgD,EAAE,OAAO,CAAC,EAAE,YAAY;CAK5G;AAED,iFAAiF;AACjF,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACnC;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAA;AACpE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB;AAwBD,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAmB,GAAG,MAAM,CAYnF;AAED,iFAAiF;AACjF,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,kBAAkB,EAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACpE,OAAO,CAAC,UAAU,CAAC,CAarB;AAED,iFAAiF;AACjF,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,kBAAkB,EAC7B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAC7G,OAAO,CAAC,qBAAqB,CAAC,CAmBhC;AAED,wFAAwF;AACxF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BrF;AAED,mFAAmF;AACnF,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5F,OAAO,CAAC,IAAI,CAAC,CAyDf"}