@atom-workflow-agent/workflow-planner 0.1.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 (64) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +39 -0
  3. package/README.zh-CN.md +39 -0
  4. package/dist/capabilities/capability-coverage-resolver.d.ts +5 -0
  5. package/dist/capabilities/capability-coverage-resolver.d.ts.map +1 -0
  6. package/dist/capabilities/capability-coverage-resolver.js +229 -0
  7. package/dist/capabilities/capability-coverage-resolver.js.map +1 -0
  8. package/dist/catalog/planner-catalog.d.ts +14 -0
  9. package/dist/catalog/planner-catalog.d.ts.map +1 -0
  10. package/dist/catalog/planner-catalog.js +47 -0
  11. package/dist/catalog/planner-catalog.js.map +1 -0
  12. package/dist/draft/planner-draft-normalizer.d.ts +20 -0
  13. package/dist/draft/planner-draft-normalizer.d.ts.map +1 -0
  14. package/dist/draft/planner-draft-normalizer.js +534 -0
  15. package/dist/draft/planner-draft-normalizer.js.map +1 -0
  16. package/dist/evaluation/planning-quality.d.ts +80 -0
  17. package/dist/evaluation/planning-quality.d.ts.map +1 -0
  18. package/dist/evaluation/planning-quality.js +120 -0
  19. package/dist/evaluation/planning-quality.js.map +1 -0
  20. package/dist/index.d.ts +13 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +13 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/model/planning-model-port.d.ts +41 -0
  25. package/dist/model/planning-model-port.d.ts.map +1 -0
  26. package/dist/model/planning-model-port.js +16 -0
  27. package/dist/model/planning-model-port.js.map +1 -0
  28. package/dist/planning/planning-controller.d.ts +77 -0
  29. package/dist/planning/planning-controller.d.ts.map +1 -0
  30. package/dist/planning/planning-controller.js +773 -0
  31. package/dist/planning/planning-controller.js.map +1 -0
  32. package/dist/store/local-plan-store.d.ts +57 -0
  33. package/dist/store/local-plan-store.d.ts.map +1 -0
  34. package/dist/store/local-plan-store.js +190 -0
  35. package/dist/store/local-plan-store.js.map +1 -0
  36. package/dist/store/plan-storage-layout.d.ts +14 -0
  37. package/dist/store/plan-storage-layout.d.ts.map +1 -0
  38. package/dist/store/plan-storage-layout.js +25 -0
  39. package/dist/store/plan-storage-layout.js.map +1 -0
  40. package/dist/validation/planning-draft-validator.d.ts +20 -0
  41. package/dist/validation/planning-draft-validator.d.ts.map +1 -0
  42. package/dist/validation/planning-draft-validator.js +76 -0
  43. package/dist/validation/planning-draft-validator.js.map +1 -0
  44. package/dist/workspace/map-aggregate-schema.d.ts +8 -0
  45. package/dist/workspace/map-aggregate-schema.d.ts.map +1 -0
  46. package/dist/workspace/map-aggregate-schema.js +20 -0
  47. package/dist/workspace/map-aggregate-schema.js.map +1 -0
  48. package/dist/workspace/planning-frontier.d.ts +15 -0
  49. package/dist/workspace/planning-frontier.d.ts.map +1 -0
  50. package/dist/workspace/planning-frontier.js +185 -0
  51. package/dist/workspace/planning-frontier.js.map +1 -0
  52. package/dist/workspace/planning-workspace-service.d.ts +72 -0
  53. package/dist/workspace/planning-workspace-service.d.ts.map +1 -0
  54. package/dist/workspace/planning-workspace-service.js +528 -0
  55. package/dist/workspace/planning-workspace-service.js.map +1 -0
  56. package/dist/workspace/semantic-plan-compiler.d.ts +19 -0
  57. package/dist/workspace/semantic-plan-compiler.d.ts.map +1 -0
  58. package/dist/workspace/semantic-plan-compiler.js +643 -0
  59. package/dist/workspace/semantic-plan-compiler.js.map +1 -0
  60. package/dist/workspace/strict-binding-validator.d.ts +9 -0
  61. package/dist/workspace/strict-binding-validator.d.ts.map +1 -0
  62. package/dist/workspace/strict-binding-validator.js +232 -0
  63. package/dist/workspace/strict-binding-validator.js.map +1 -0
  64. package/package.json +53 -0
@@ -0,0 +1,528 @@
1
+ import { createHash } from "node:crypto";
2
+ import { AtomWorkflowError, PlanningDraftRevisionSchema, PlanningDraftTransactionSchema, PlanningGapReportSchema, PlanningTransactionRecordSchema, PlanningTransactionRejectedResultSchema, PlanningWorkspaceSchema, PlanningWorkspaceSnapshotSchema, RuntimePolicySchema, } from "@atom-workflow-agent/contracts";
3
+ import { validateAndCompilePlannerDraft } from "../validation/planning-draft-validator.js";
4
+ import { buildPlanningFrontier, findUndescribedNamedFields } from "./planning-frontier.js";
5
+ import { validateStrictBindings } from "./strict-binding-validator.js";
6
+ import { compileSemanticPlan } from "./semantic-plan-compiler.js";
7
+ function canonicalize(value) {
8
+ if (Array.isArray(value))
9
+ return value.map(canonicalize);
10
+ if (value !== null && typeof value === "object") {
11
+ return Object.fromEntries(Object.entries(value)
12
+ .filter(([, nested]) => nested !== undefined)
13
+ .sort(([left], [right]) => left.localeCompare(right))
14
+ .map(([key, nested]) => [key, canonicalize(nested)]));
15
+ }
16
+ return value;
17
+ }
18
+ function contentHash(value) {
19
+ return `sha256:${createHash("sha256").update(JSON.stringify(canonicalize(value))).digest("hex")}`;
20
+ }
21
+ function clone(value) {
22
+ return JSON.parse(JSON.stringify(value));
23
+ }
24
+ function schemaDescriptions(value) {
25
+ if (Array.isArray(value))
26
+ return value.flatMap(schemaDescriptions);
27
+ if (value === null || typeof value !== "object")
28
+ return [];
29
+ const object = value;
30
+ return [
31
+ ...(typeof object.description === "string" ? [object.description] : []),
32
+ ...Object.values(object).flatMap(schemaDescriptions),
33
+ ];
34
+ }
35
+ const EMPTY_DRAFT_HASH = contentHash({ regions: [], outputs: {} });
36
+ function capabilityRealizationErrors(workflow, requiredAtomKeys) {
37
+ const used = new Set(workflow.nodes.flatMap((node) => node.kind === "merge" ? [] : [node.atom]));
38
+ return requiredAtomKeys.filter((key) => !used.has(key)).map((key) => ({
39
+ code: "PLANNING_REQUIRED_CAPABILITY_NOT_REALIZED",
40
+ stage: "capability-resolution",
41
+ path: `$.requiredAtomKeys[${JSON.stringify(key)}]`,
42
+ message: `Required capability Atom is selected but absent from the final Workflow: ${key}`,
43
+ atomId: key.split("@")[0],
44
+ expected: key,
45
+ received: [...used].sort(),
46
+ hint: "Add this exact Atom to a reachable control region and wire its required inputs/outputs before finalizing; conditional capabilities must remain in frozen branches even when the current input may not select them",
47
+ }));
48
+ }
49
+ function workflowOutputContractErrors(workflow) {
50
+ if (Object.keys(workflow.outputs).length > 0)
51
+ return [];
52
+ return [{
53
+ code: "PLANNING_WORKFLOW_OUTPUT_REQUIRED",
54
+ stage: "data-link",
55
+ path: "$.outputs",
56
+ message: "A dynamically planned Workflow must declare at least one stable user-visible output",
57
+ expected: { minProperties: 1 },
58
+ received: {},
59
+ hint: "Submit a set-workflow-output operation that references a guaranteed final Atom output, then finalize the same Workspace Revision",
60
+ }];
61
+ }
62
+ function validationFailure(transaction, transactionHash, snapshot, code, message, errors = []) {
63
+ return PlanningTransactionRejectedResultSchema.parse({
64
+ schemaVersion: "1.0",
65
+ status: "rejected",
66
+ operationId: transaction.operationId,
67
+ transactionHash,
68
+ code,
69
+ message,
70
+ retryable: false,
71
+ currentRevision: snapshot.workspace.currentRevision,
72
+ currentDraftHash: snapshot.workspace.currentDraftHash,
73
+ errors,
74
+ });
75
+ }
76
+ function bindingFailureCode(errors) {
77
+ if (errors.some(({ code }) => code === "PLANNING_BINDING_AMBIGUOUS" || code === "PLANNER_DRAFT_REFERENCE_AMBIGUOUS")) {
78
+ return "PLANNING_BINDING_AMBIGUOUS";
79
+ }
80
+ if (errors.some(({ code }) => code === "PLANNING_BINDING_SOURCE_OPTIONAL")) {
81
+ return "PLANNING_BINDING_SOURCE_OPTIONAL";
82
+ }
83
+ return "PLANNING_REQUIRED_INPUT_UNAVAILABLE";
84
+ }
85
+ /**
86
+ * Runtime-owned, provider-neutral editor for one global semantic plan.
87
+ * Planner transactions contain business regions and semantic source selectors;
88
+ * Runtime deterministically binds them into one internal PlannerDraft and only
89
+ * commits after PlannerDraft -> WorkflowSpec -> WorkflowIR accepts the whole plan.
90
+ */
91
+ export class PlanningWorkspaceService {
92
+ registry;
93
+ limits;
94
+ state;
95
+ now;
96
+ constructor(registry, snapshot, now, limits) {
97
+ this.registry = registry;
98
+ this.limits = limits;
99
+ this.state = PlanningWorkspaceSnapshotSchema.parse(clone(snapshot));
100
+ this.now = now;
101
+ }
102
+ static create(registry, input, options = {}) {
103
+ const entries = new Map(registry.list().map((entry) => [entry.plannerDescriptor.key, entry]));
104
+ const selectedAtomKeys = [...new Set(input.selectedAtomKeys)];
105
+ const requiredAtomKeys = [...new Set(input.requiredAtomKeys)];
106
+ const descriptorHashes = Object.fromEntries(selectedAtomKeys.map((key) => {
107
+ const entry = entries.get(key);
108
+ if (!entry)
109
+ throw new AtomWorkflowError("PLANNING_ATOM_UNAVAILABLE", `Selected Atom is unavailable: ${key}`);
110
+ const missingDescriptions = [
111
+ ...findUndescribedNamedFields(entry.plannerDescriptor.inputSchema, `${key}.input`),
112
+ ...findUndescribedNamedFields(entry.plannerDescriptor.outputSchema, `${key}.output`),
113
+ ];
114
+ if (missingDescriptions.length > 0) {
115
+ throw new AtomWorkflowError("PLANNING_ATOM_SCHEMA_DESCRIPTION_REQUIRED", `Selected Atom has fields without description: ${missingDescriptions.join(", ")}`);
116
+ }
117
+ return [key, entry.plannerDescriptor.hash];
118
+ }));
119
+ const timestamp = (options.now?.() ?? new Date()).toISOString();
120
+ const catalogHash = input.catalogHash ?? contentHash(selectedAtomKeys.map((key) => ({ key, descriptorHash: descriptorHashes[key] })));
121
+ const workspace = PlanningWorkspaceSchema.parse({
122
+ schemaVersion: "1.0",
123
+ workspaceId: input.workspaceId,
124
+ requestId: input.requestId,
125
+ goal: input.goal,
126
+ workflowName: input.workflowName,
127
+ workflowInputs: input.workflowInputs,
128
+ context: input.context,
129
+ runtimePolicy: RuntimePolicySchema.parse(input.runtimePolicy),
130
+ catalogHash,
131
+ selectedAtomKeys,
132
+ requiredAtomKeys,
133
+ descriptorHashes,
134
+ status: "editing",
135
+ currentRevision: 0,
136
+ currentDraftHash: EMPTY_DRAFT_HASH,
137
+ createdAt: timestamp,
138
+ updatedAt: timestamp,
139
+ });
140
+ const runtimePolicy = RuntimePolicySchema.parse(input.runtimePolicy);
141
+ const limits = {
142
+ maxOperationsPerTransaction: options.limits?.maxOperationsPerTransaction ?? 64,
143
+ maxRevisions: options.limits?.maxRevisions ?? 256,
144
+ maxNodes: options.limits?.maxNodes ?? runtimePolicy.maxNodes,
145
+ };
146
+ return new PlanningWorkspaceService(registry, {
147
+ schemaVersion: "1.0",
148
+ workspace,
149
+ revisions: [],
150
+ transactions: [],
151
+ }, options.now ?? (() => new Date()), limits);
152
+ }
153
+ static restore(registry, snapshot, options = {}) {
154
+ return new PlanningWorkspaceService(registry, snapshot, options.now ?? (() => new Date()), {
155
+ maxOperationsPerTransaction: options.limits?.maxOperationsPerTransaction ?? 64,
156
+ maxRevisions: options.limits?.maxRevisions ?? 256,
157
+ maxNodes: options.limits?.maxNodes ?? snapshot.workspace.runtimePolicy.maxNodes,
158
+ });
159
+ }
160
+ snapshot() {
161
+ return PlanningWorkspaceSnapshotSchema.parse(clone(this.state));
162
+ }
163
+ inspect() {
164
+ return this.snapshot();
165
+ }
166
+ searchCatalog(query, limit = 20) {
167
+ const terms = query.toLowerCase().split(/\s+/).filter(Boolean);
168
+ return this.registry.list().map(({ plannerDescriptor }) => ({
169
+ descriptor: plannerDescriptor,
170
+ score: terms.reduce((score, term) => score + ([
171
+ plannerDescriptor.title,
172
+ plannerDescriptor.purpose,
173
+ ...schemaDescriptions(plannerDescriptor.inputSchema),
174
+ ...schemaDescriptions(plannerDescriptor.outputSchema),
175
+ ].join(" ").toLowerCase().includes(term) ? 1 : 0), 0),
176
+ })).filter(({ score }) => terms.length === 0 || score > 0)
177
+ .sort((left, right) => right.score - left.score || left.descriptor.key.localeCompare(right.descriptor.key))
178
+ .slice(0, Math.max(1, Math.min(limit, 100)))
179
+ .map(({ descriptor }) => clone(descriptor));
180
+ }
181
+ describeAtom(key) {
182
+ const entry = this.registry.list().find(({ plannerDescriptor }) => plannerDescriptor.key === key);
183
+ if (!entry)
184
+ throw new AtomWorkflowError("PLANNING_ATOM_UNAVAILABLE", `Atom is unavailable: ${key}`);
185
+ return clone(entry.plannerDescriptor);
186
+ }
187
+ updateCatalogAuthority(selectedAtomKeys, requiredAtomKeys, catalogHash) {
188
+ if (this.state.workspace.status !== "blocked_missing_atom") {
189
+ throw new AtomWorkflowError("PLANNING_WORKSPACE_NOT_EDITABLE", "Catalog Authority can only change while blocked by a missing Atom");
190
+ }
191
+ const entries = new Map(this.registry.list().map((entry) => [entry.plannerDescriptor.key, entry]));
192
+ const keys = [...new Set(selectedAtomKeys)];
193
+ const requiredKeys = [...new Set(requiredAtomKeys)];
194
+ const descriptorHashes = Object.fromEntries(keys.map((key) => {
195
+ const entry = entries.get(key);
196
+ if (!entry)
197
+ throw new AtomWorkflowError("PLANNING_ATOM_UNAVAILABLE", `Selected Atom is unavailable: ${key}`);
198
+ const missing = [
199
+ ...findUndescribedNamedFields(entry.plannerDescriptor.inputSchema, `${key}.input`),
200
+ ...findUndescribedNamedFields(entry.plannerDescriptor.outputSchema, `${key}.output`),
201
+ ];
202
+ if (missing.length)
203
+ throw new AtomWorkflowError("PLANNING_ATOM_SCHEMA_DESCRIPTION_REQUIRED", `Selected Atom has fields without description: ${missing.join(", ")}`);
204
+ return [key, entry.plannerDescriptor.hash];
205
+ }));
206
+ this.state = PlanningWorkspaceSnapshotSchema.parse({
207
+ ...this.state,
208
+ workspace: {
209
+ ...this.state.workspace,
210
+ selectedAtomKeys: keys,
211
+ requiredAtomKeys: requiredKeys,
212
+ descriptorHashes,
213
+ catalogHash,
214
+ status: "editing",
215
+ updatedAt: this.now().toISOString(),
216
+ },
217
+ gapReport: undefined,
218
+ });
219
+ return this.snapshot();
220
+ }
221
+ frontier() {
222
+ const revision = this.state.revisions.at(-1);
223
+ return buildPlanningFrontier({
224
+ workspaceId: this.state.workspace.workspaceId,
225
+ revision: this.state.workspace.currentRevision,
226
+ draftHash: this.state.workspace.currentDraftHash,
227
+ blockIds: revision?.blocks.map(({ blockId }) => blockId) ?? [],
228
+ ...(revision ? { flow: revision.plannerDraft.flow } : {}),
229
+ workflowInputs: this.state.workspace.workflowInputs,
230
+ registry: this.registry,
231
+ });
232
+ }
233
+ applyTransaction(raw) {
234
+ const parsed = PlanningDraftTransactionSchema.safeParse(raw);
235
+ if (!parsed.success) {
236
+ throw new AtomWorkflowError("PLANNING_TRANSACTION_INVALID", "Planning transaction does not match the contract", false, {
237
+ cause: parsed.error,
238
+ });
239
+ }
240
+ const transaction = parsed.data;
241
+ const transactionHash = contentHash(transaction);
242
+ const previous = this.state.transactions.find((record) => record.transaction.operationId === transaction.operationId);
243
+ if (previous) {
244
+ if (previous.transactionHash !== transactionHash) {
245
+ return validationFailure(transaction, transactionHash, this.state, "PLANNING_OPERATION_CONFLICT", `operationId ${transaction.operationId} was already used by a different transaction`);
246
+ }
247
+ return previous.result.status === "committed"
248
+ ? { ...clone(previous.result), replayed: true }
249
+ : clone(previous.result);
250
+ }
251
+ if (this.state.workspace.status !== "editing") {
252
+ return this.record(transaction, transactionHash, validationFailure(transaction, transactionHash, this.state, "PLANNING_WORKSPACE_NOT_EDITABLE", `Planning Workspace is ${this.state.workspace.status}`));
253
+ }
254
+ if (transaction.operations.length > this.limits.maxOperationsPerTransaction) {
255
+ return this.record(transaction, transactionHash, validationFailure(transaction, transactionHash, this.state, "PLANNING_TRANSACTION_LIMIT_EXCEEDED", `Transaction has ${transaction.operations.length} operations; maximum is ${this.limits.maxOperationsPerTransaction}`));
256
+ }
257
+ if (this.state.workspace.currentRevision >= this.limits.maxRevisions) {
258
+ return this.record(transaction, transactionHash, validationFailure(transaction, transactionHash, this.state, "PLANNING_REVISION_LIMIT_EXCEEDED", `Workspace Revision limit exhausted: ${this.limits.maxRevisions}`));
259
+ }
260
+ if (transaction.baseRevision !== this.state.workspace.currentRevision
261
+ || transaction.baseDraftHash !== this.state.workspace.currentDraftHash) {
262
+ return this.record(transaction, transactionHash, validationFailure(transaction, transactionHash, this.state, "PLANNING_REVISION_CONFLICT", "Transaction base Revision or Draft hash does not match the current Workspace"));
263
+ }
264
+ const current = this.state.revisions.at(-1);
265
+ const blocks = current ? clone(current.blocks) : [];
266
+ const outputs = current ? clone(current.outputs) : {};
267
+ const operationFailure = this.applyOperations(transaction, blocks, outputs);
268
+ if (operationFailure) {
269
+ return this.record(transaction, transactionHash, validationFailure(transaction, transactionHash, this.state, operationFailure.code, operationFailure.message));
270
+ }
271
+ const semantic = compileSemanticPlan({
272
+ blocks,
273
+ outputs,
274
+ workflowName: this.state.workspace.workflowName,
275
+ workflowInputs: this.state.workspace.workflowInputs,
276
+ selectedAtomKeys: this.state.workspace.selectedAtomKeys,
277
+ registry: this.registry,
278
+ });
279
+ if (!semantic.success) {
280
+ return this.record(transaction, transactionHash, validationFailure(transaction, transactionHash, this.state, bindingFailureCode(semantic.errors), "Runtime could not deterministically compile or bind the semantic plan", semantic.errors));
281
+ }
282
+ const draft = semantic.plannerDraft;
283
+ const strict = validateStrictBindings(draft, this.registry, semantic.evidence);
284
+ if (strict.errors.length > 0) {
285
+ return this.record(transaction, transactionHash, validationFailure(transaction, transactionHash, this.state, bindingFailureCode(strict.errors), "Transaction violates strict global data availability or semantic binding rules", strict.errors));
286
+ }
287
+ const validated = validateAndCompilePlannerDraft(draft, {
288
+ workflowInputs: this.state.workspace.workflowInputs,
289
+ runtimePolicy: this.state.workspace.runtimePolicy,
290
+ }, this.state.workspace.selectedAtomKeys, this.registry);
291
+ if (!validated.success) {
292
+ return this.record(transaction, transactionHash, validationFailure(transaction, transactionHash, this.state, "PLANNING_TRANSACTION_VALIDATION_FAILED", "Transaction would make the global PlannerDraft invalid", validated.errors));
293
+ }
294
+ if (validated.workflow.nodes.length > this.limits.maxNodes) {
295
+ return this.record(transaction, transactionHash, validationFailure(transaction, transactionHash, this.state, "PLANNING_NODE_LIMIT_EXCEEDED", `Transaction would produce ${validated.workflow.nodes.length} nodes; maximum is ${this.limits.maxNodes}`));
296
+ }
297
+ const revision = PlanningDraftRevisionSchema.parse({
298
+ schemaVersion: "1.0",
299
+ revision: this.state.workspace.currentRevision + 1,
300
+ parentRevision: this.state.workspace.currentRevision,
301
+ operationId: transaction.operationId,
302
+ draftHash: contentHash(validated.plannerDraft),
303
+ blocks,
304
+ outputs,
305
+ bindingEvidence: strict.usedEvidence,
306
+ plannerDraft: validated.plannerDraft,
307
+ validation: {
308
+ workflowName: validated.workflow.name,
309
+ workflowNodeCount: validated.workflow.nodes.length,
310
+ workflowIrHash: validated.ir.hash,
311
+ },
312
+ createdAt: this.now().toISOString(),
313
+ });
314
+ const result = {
315
+ schemaVersion: "1.0",
316
+ status: "committed",
317
+ operationId: transaction.operationId,
318
+ transactionHash,
319
+ replayed: false,
320
+ revision,
321
+ };
322
+ this.state = PlanningWorkspaceSnapshotSchema.parse({
323
+ ...this.state,
324
+ workspace: {
325
+ ...this.state.workspace,
326
+ currentRevision: revision.revision,
327
+ currentDraftHash: revision.draftHash,
328
+ updatedAt: revision.createdAt,
329
+ },
330
+ revisions: [...this.state.revisions, revision],
331
+ transactions: [...this.state.transactions, PlanningTransactionRecordSchema.parse({
332
+ schemaVersion: "1.0",
333
+ transaction,
334
+ transactionHash,
335
+ result,
336
+ recordedAt: revision.createdAt,
337
+ })],
338
+ });
339
+ return clone(result);
340
+ }
341
+ validate() {
342
+ const revision = this.state.revisions.at(-1);
343
+ if (!revision)
344
+ return {
345
+ ok: false,
346
+ revision: 0,
347
+ draftHash: this.state.workspace.currentDraftHash,
348
+ errors: [{
349
+ code: "PLANNING_DRAFT_EMPTY",
350
+ stage: "draft-schema",
351
+ path: "$.flow",
352
+ message: "Planning Workspace does not contain a committed control region",
353
+ hint: "Commit at least one complete block before finalizing",
354
+ }],
355
+ };
356
+ const strict = validateStrictBindings(revision.plannerDraft, this.registry, revision.bindingEvidence);
357
+ const checked = validateAndCompilePlannerDraft(revision.plannerDraft, { workflowInputs: this.state.workspace.workflowInputs, runtimePolicy: this.state.workspace.runtimePolicy }, this.state.workspace.selectedAtomKeys, this.registry);
358
+ const errors = [
359
+ ...strict.errors,
360
+ ...(checked.success ? [
361
+ ...capabilityRealizationErrors(checked.workflow, this.state.workspace.requiredAtomKeys),
362
+ ...workflowOutputContractErrors(checked.workflow),
363
+ ] : checked.errors),
364
+ ];
365
+ return {
366
+ ok: errors.length === 0,
367
+ revision: revision.revision,
368
+ draftHash: revision.draftHash,
369
+ errors,
370
+ ...(checked.success ? { workflowNodeCount: checked.workflow.nodes.length, workflowIrHash: checked.ir.hash } : {}),
371
+ };
372
+ }
373
+ reportGap(raw) {
374
+ const report = PlanningGapReportSchema.parse(raw);
375
+ if (this.state.workspace.status === "finalized") {
376
+ throw new AtomWorkflowError("PLANNING_WORKSPACE_NOT_EDITABLE", "A finalized Planning Workspace cannot report a new gap");
377
+ }
378
+ const status = report.kind === "missing-atom" ? "blocked_missing_atom" : "blocked_missing_input";
379
+ this.state = PlanningWorkspaceSnapshotSchema.parse({
380
+ ...this.state,
381
+ workspace: { ...this.state.workspace, status, updatedAt: this.now().toISOString() },
382
+ gapReport: report,
383
+ });
384
+ return this.snapshot();
385
+ }
386
+ resumeEditing(workflowInputs) {
387
+ if (!["blocked_missing_atom", "blocked_missing_input"].includes(this.state.workspace.status))
388
+ return this.snapshot();
389
+ this.state = PlanningWorkspaceSnapshotSchema.parse({
390
+ ...this.state,
391
+ workspace: {
392
+ ...this.state.workspace,
393
+ ...(workflowInputs ? { workflowInputs: clone(workflowInputs) } : {}),
394
+ status: "editing",
395
+ updatedAt: this.now().toISOString(),
396
+ },
397
+ gapReport: undefined,
398
+ });
399
+ return this.snapshot();
400
+ }
401
+ finalize(expected) {
402
+ if (this.state.workspace.status === "finalized") {
403
+ return this.finalizedResult();
404
+ }
405
+ if (this.state.workspace.status !== "editing") {
406
+ throw new AtomWorkflowError("PLANNING_WORKSPACE_NOT_FINALIZABLE", `Planning Workspace is ${this.state.workspace.status}`);
407
+ }
408
+ const revision = this.state.revisions.at(-1);
409
+ if (!revision)
410
+ throw new AtomWorkflowError("PLANNING_DRAFT_EMPTY", "Cannot finalize an empty Planning Workspace");
411
+ if (expected && (expected.revision !== revision.revision || expected.draftHash !== revision.draftHash)) {
412
+ throw new AtomWorkflowError("PLANNING_FINALIZE_CONFLICT", "Finalize receipt does not match the current Workspace Revision and Draft hash");
413
+ }
414
+ const validated = validateAndCompilePlannerDraft(revision.plannerDraft, {
415
+ workflowInputs: this.state.workspace.workflowInputs,
416
+ runtimePolicy: this.state.workspace.runtimePolicy,
417
+ }, this.state.workspace.selectedAtomKeys, this.registry);
418
+ if (!validated.success) {
419
+ throw new AtomWorkflowError("PLANNING_FINAL_VALIDATION_FAILED", "Final PlannerDraft validation failed", false, {
420
+ cause: validated.errors,
421
+ });
422
+ }
423
+ const unrealized = capabilityRealizationErrors(validated.workflow, this.state.workspace.requiredAtomKeys);
424
+ if (unrealized.length > 0) {
425
+ throw new AtomWorkflowError("PLANNING_REQUIRED_CAPABILITY_NOT_REALIZED", `Final Workflow omits ${unrealized.length} required capability Atom${unrealized.length === 1 ? "" : "s"}`, false, { cause: unrealized });
426
+ }
427
+ const outputErrors = workflowOutputContractErrors(validated.workflow);
428
+ if (outputErrors.length > 0) {
429
+ throw new AtomWorkflowError("PLANNING_WORKFLOW_OUTPUT_REQUIRED", "Final Workflow does not declare a user-visible output", false, { cause: outputErrors });
430
+ }
431
+ const strict = validateStrictBindings(revision.plannerDraft, this.registry, revision.bindingEvidence);
432
+ if (strict.errors.length > 0) {
433
+ throw new AtomWorkflowError("PLANNING_FINAL_VALIDATION_FAILED", "Final PlannerDraft strict binding validation failed", false, {
434
+ cause: strict.errors,
435
+ });
436
+ }
437
+ this.state = PlanningWorkspaceSnapshotSchema.parse({
438
+ ...this.state,
439
+ workspace: {
440
+ ...this.state.workspace,
441
+ status: "finalized",
442
+ finalizedRevision: revision.revision,
443
+ updatedAt: this.now().toISOString(),
444
+ },
445
+ });
446
+ return {
447
+ workspace: clone(this.state.workspace),
448
+ revision: clone(revision),
449
+ workflow: clone(validated.workflow),
450
+ ir: validated.ir,
451
+ };
452
+ }
453
+ finalizedResult() {
454
+ const revision = this.state.revisions.find(({ revision }) => revision === this.state.workspace.finalizedRevision);
455
+ if (!revision)
456
+ throw new AtomWorkflowError("PLANNING_FINALIZED_REVISION_MISSING", "Finalized Draft Revision is missing");
457
+ const validated = validateAndCompilePlannerDraft(revision.plannerDraft, {
458
+ workflowInputs: this.state.workspace.workflowInputs,
459
+ runtimePolicy: this.state.workspace.runtimePolicy,
460
+ }, this.state.workspace.selectedAtomKeys, this.registry);
461
+ if (!validated.success)
462
+ throw new AtomWorkflowError("PLANNING_FINAL_VALIDATION_FAILED", "Finalized PlannerDraft is no longer valid");
463
+ const unrealized = capabilityRealizationErrors(validated.workflow, this.state.workspace.requiredAtomKeys);
464
+ if (unrealized.length > 0) {
465
+ throw new AtomWorkflowError("PLANNING_REQUIRED_CAPABILITY_NOT_REALIZED", "Finalized PlannerDraft no longer realizes every required capability", false, { cause: unrealized });
466
+ }
467
+ const outputErrors = workflowOutputContractErrors(validated.workflow);
468
+ if (outputErrors.length > 0) {
469
+ throw new AtomWorkflowError("PLANNING_WORKFLOW_OUTPUT_REQUIRED", "Finalized PlannerDraft does not declare a user-visible output", false, { cause: outputErrors });
470
+ }
471
+ const strict = validateStrictBindings(revision.plannerDraft, this.registry, revision.bindingEvidence);
472
+ if (strict.errors.length > 0)
473
+ throw new AtomWorkflowError("PLANNING_FINAL_VALIDATION_FAILED", "Finalized PlannerDraft strict binding validation failed");
474
+ return {
475
+ workspace: clone(this.state.workspace),
476
+ revision: clone(revision),
477
+ workflow: clone(validated.workflow),
478
+ ir: validated.ir,
479
+ };
480
+ }
481
+ applyOperations(transaction, blocks, outputs) {
482
+ for (const operation of transaction.operations) {
483
+ switch (operation.op) {
484
+ case "add-region":
485
+ if (blocks.some(({ blockId }) => blockId === operation.block.blockId)) {
486
+ return { code: "PLANNING_BLOCK_DUPLICATE", message: `Block already exists: ${operation.block.blockId}` };
487
+ }
488
+ blocks.push(clone(operation.block));
489
+ break;
490
+ case "replace-region": {
491
+ const index = blocks.findIndex(({ blockId }) => blockId === operation.blockId);
492
+ if (index < 0)
493
+ return { code: "PLANNING_BLOCK_NOT_FOUND", message: `Block not found: ${operation.blockId}` };
494
+ blocks[index] = { blockId: operation.blockId, plan: clone(operation.plan) };
495
+ break;
496
+ }
497
+ case "remove-region": {
498
+ const index = blocks.findIndex(({ blockId }) => blockId === operation.blockId);
499
+ if (index < 0)
500
+ return { code: "PLANNING_BLOCK_NOT_FOUND", message: `Block not found: ${operation.blockId}` };
501
+ blocks.splice(index, 1);
502
+ break;
503
+ }
504
+ case "set-workflow-output":
505
+ outputs[operation.name] = clone(operation.value);
506
+ break;
507
+ case "remove-workflow-output":
508
+ delete outputs[operation.name];
509
+ break;
510
+ }
511
+ }
512
+ return undefined;
513
+ }
514
+ record(transaction, transactionHash, result) {
515
+ this.state = PlanningWorkspaceSnapshotSchema.parse({
516
+ ...this.state,
517
+ transactions: [...this.state.transactions, PlanningTransactionRecordSchema.parse({
518
+ schemaVersion: "1.0",
519
+ transaction,
520
+ transactionHash,
521
+ result,
522
+ recordedAt: this.now().toISOString(),
523
+ })],
524
+ });
525
+ return clone(result);
526
+ }
527
+ }
528
+ //# sourceMappingURL=planning-workspace-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning-workspace-service.js","sourceRoot":"","sources":["../../src/workspace/planning-workspace-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type JsonValue, type PlannerDraft, type PlanningBindingEvidence, type PlanningPlanBlock, type PlanningSource, type WorkflowValidationError } from "@atom-workflow-agent/contracts";
2
+ import type { AtomRegistry } from "@atom-workflow-agent/atom-catalog";
3
+ export type SemanticPlanCompilationResult = {
4
+ readonly success: true;
5
+ readonly plannerDraft: PlannerDraft;
6
+ readonly evidence: readonly PlanningBindingEvidence[];
7
+ } | {
8
+ readonly success: false;
9
+ readonly errors: readonly WorkflowValidationError[];
10
+ };
11
+ export declare function compileSemanticPlan(input: {
12
+ readonly blocks: readonly PlanningPlanBlock[];
13
+ readonly outputs: Readonly<Record<string, PlanningSource>>;
14
+ readonly workflowName: string;
15
+ readonly workflowInputs: Readonly<Record<string, JsonValue>>;
16
+ readonly selectedAtomKeys: readonly string[];
17
+ readonly registry: AtomRegistry;
18
+ }): SemanticPlanCompilationResult;
19
+ //# sourceMappingURL=semantic-plan-compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-plan-compiler.d.ts","sourceRoot":"","sources":["../../src/workspace/semantic-plan-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,YAAY,EAIjB,KAAK,uBAAuB,EAE5B,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAEnB,KAAK,uBAAuB,EAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAwBtE,MAAM,MAAM,6BAA6B,GACrC;IAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,uBAAuB,EAAE,CAAA;CAAE,GACtH;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,uBAAuB,EAAE,CAAA;CAAE,CAAC;AAipBrF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAC3D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACjC,GAAG,6BAA6B,CAEhC"}