@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,185 @@
1
+ import { PlanningFrontierSchema, } from "@atom-workflow-agent/contracts";
2
+ import { mapAggregateSchema } from "./map-aggregate-schema.js";
3
+ function schemaObject(schema) {
4
+ return schema !== null && typeof schema === "object" && !Array.isArray(schema) ? schema : undefined;
5
+ }
6
+ export function findUndescribedNamedFields(schema, prefix) {
7
+ const object = schemaObject(schema);
8
+ if (!object)
9
+ return [];
10
+ const properties = schemaObject(object.properties);
11
+ const missing = [];
12
+ if (properties) {
13
+ for (const [name, nested] of Object.entries(properties)) {
14
+ const path = `${prefix}.${name}`;
15
+ const child = schemaObject(nested);
16
+ if (!child || typeof child.description !== "string" || child.description.trim() === "")
17
+ missing.push(path);
18
+ if (child)
19
+ missing.push(...findUndescribedNamedFields(child, path));
20
+ }
21
+ }
22
+ const items = schemaObject(object.items);
23
+ if (items)
24
+ missing.push(...findUndescribedNamedFields(items, `${prefix}[]`));
25
+ return missing;
26
+ }
27
+ function collectAliases(step, aliases = new Map(), mapGroup) {
28
+ switch (step.kind) {
29
+ case "atom":
30
+ aliases.set(step.as, { atomKey: step.use, ...(mapGroup ? { mapGroup } : {}) });
31
+ break;
32
+ case "decision":
33
+ aliases.set(step.as, { atomKey: step.use, ...(mapGroup ? { mapGroup } : {}) });
34
+ Object.values(step.branches).forEach((branch) => {
35
+ if (branch.kind === "continue" || branch.kind === "terminal")
36
+ return;
37
+ collectAliases(branch.kind === "revisit" ? branch.body : branch, aliases, mapGroup);
38
+ });
39
+ break;
40
+ case "sequence":
41
+ step.steps.forEach((nested) => collectAliases(nested, aliases, mapGroup));
42
+ break;
43
+ case "parallel":
44
+ step.branches.forEach((nested) => collectAliases(nested, aliases, mapGroup));
45
+ break;
46
+ case "map":
47
+ collectAliases(step.body, aliases, step.as);
48
+ break;
49
+ case "repeat":
50
+ collectAliases(step.body, aliases, mapGroup);
51
+ aliases.set(step.decision.as, { atomKey: step.decision.use, ...(mapGroup ? { mapGroup } : {}) });
52
+ break;
53
+ }
54
+ return aliases;
55
+ }
56
+ function intersection(values) {
57
+ const [first, ...rest] = values;
58
+ if (!first)
59
+ return new Set();
60
+ return new Set([...first].filter((value) => rest.every((set) => set.has(value))));
61
+ }
62
+ /** Aliases whose outputs are guaranteed after the structured control region completes. */
63
+ export function guaranteedAliasesAfter(step, before = new Set()) {
64
+ const current = new Set(before);
65
+ switch (step.kind) {
66
+ case "atom":
67
+ current.add(step.as);
68
+ return current;
69
+ case "sequence": return step.steps.reduce((available, nested) => guaranteedAliasesAfter(nested, available), current);
70
+ case "parallel": {
71
+ const branches = step.branches.map((branch) => guaranteedAliasesAfter(branch, current));
72
+ return new Set([...current, ...branches.flatMap((set) => [...set])]);
73
+ }
74
+ case "decision": {
75
+ current.add(step.as);
76
+ const branches = Object.values(step.branches).flatMap((branch) => {
77
+ if (branch.kind === "revisit" || branch.kind === "terminal")
78
+ return [];
79
+ return [branch.kind === "continue" ? new Set(current) : guaranteedAliasesAfter(branch, current)];
80
+ });
81
+ if (branches.length === 0)
82
+ return current;
83
+ return new Set([...current, ...intersection(branches)]);
84
+ }
85
+ case "map": return guaranteedAliasesAfter(step.body, current);
86
+ case "repeat": {
87
+ const afterBody = guaranteedAliasesAfter(step.body, current);
88
+ afterBody.add(step.decision.as);
89
+ return afterBody;
90
+ }
91
+ }
92
+ }
93
+ function inferSchema(value) {
94
+ if (value === null)
95
+ return { type: "null" };
96
+ if (Array.isArray(value))
97
+ return { type: "array", items: value.length ? inferSchema(value[0]) : {} };
98
+ if (typeof value === "object")
99
+ return {
100
+ type: "object",
101
+ properties: Object.fromEntries(Object.entries(value).map(([name, nested]) => [name, inferSchema(nested)])),
102
+ required: Object.keys(value),
103
+ additionalProperties: true,
104
+ };
105
+ if (typeof value === "number")
106
+ return { type: Number.isInteger(value) ? "integer" : "number" };
107
+ return { type: typeof value };
108
+ }
109
+ function schemaValues(refPrefix, pathPrefix, schema, producerAlias, mapGroup) {
110
+ const object = schemaObject(schema);
111
+ if (!object)
112
+ return [];
113
+ const rootSchema = mapGroup ? mapAggregateSchema(schema, mapGroup) : schema;
114
+ const rootDescription = typeof schemaObject(rootSchema)?.description === "string"
115
+ ? schemaObject(rootSchema).description
116
+ : producerAlias ? `Atom 节点 ${producerAlias} 的完整结构化输出。` : "Workflow 输入对象。";
117
+ const root = producerAlias && pathPrefix === "" ? [{
118
+ ref: refPrefix,
119
+ producerAlias,
120
+ path: ".",
121
+ schema: rootSchema,
122
+ description: rootDescription,
123
+ required: true,
124
+ guaranteed: true,
125
+ controlEvidence: mapGroup
126
+ ? `Atom alias ${producerAlias} is a processor in Map ${mapGroup}; this reference is its ordered aggregate after the Map completes.`
127
+ : `Atom alias ${producerAlias} is guaranteed after the committed control flow.`,
128
+ }] : [];
129
+ const properties = schemaObject(object.properties);
130
+ if (!properties)
131
+ return root;
132
+ const required = new Set(Array.isArray(object.required) ? object.required.filter((name) => typeof name === "string") : []);
133
+ return [...root, ...Object.entries(properties).flatMap(([name, nested]) => {
134
+ const child = schemaObject(nested);
135
+ if (!child || typeof child.description !== "string" || child.description.trim() === "")
136
+ return [];
137
+ const path = pathPrefix ? `${pathPrefix}.${name}` : name;
138
+ const ref = `${refPrefix}.${name}`;
139
+ const exposedSchema = mapGroup ? mapAggregateSchema(nested, mapGroup) : nested;
140
+ const exposedDescription = schemaObject(exposedSchema)?.description;
141
+ return [{
142
+ ref,
143
+ ...(producerAlias ? { producerAlias } : {}),
144
+ path,
145
+ schema: exposedSchema,
146
+ description: exposedDescription,
147
+ required: required.has(name),
148
+ guaranteed: true,
149
+ controlEvidence: producerAlias && mapGroup
150
+ ? `Atom alias ${producerAlias} is a processor in Map ${mapGroup}; this reference is its ordered aggregate after the Map completes.`
151
+ : producerAlias
152
+ ? `Atom alias ${producerAlias} is guaranteed after the committed control flow.`
153
+ : "The Workflow input is present in the frozen planning request.",
154
+ }, ...schemaValues(ref, path, nested, producerAlias, mapGroup)];
155
+ })];
156
+ }
157
+ export function buildPlanningFrontier(input) {
158
+ const aliases = input.flow ? guaranteedAliasesAfter(input.flow) : new Set();
159
+ const atomByAlias = input.flow ? collectAliases(input.flow) : new Map();
160
+ const descriptorByKey = new Map(input.registry.list().map((entry) => [entry.plannerDescriptor.key, entry.plannerDescriptor]));
161
+ const workflowValues = Object.entries(input.workflowInputs).map(([name, value]) => ({
162
+ ref: `$input.${name}`,
163
+ path: name,
164
+ schema: inferSchema(value),
165
+ description: `用户提供的 Workflow 输入字段 ${name}。`,
166
+ required: true,
167
+ guaranteed: true,
168
+ controlEvidence: "The Workflow input is present in the frozen planning request.",
169
+ }));
170
+ const outputValues = [...aliases].flatMap((alias) => {
171
+ const source = atomByAlias.get(alias);
172
+ const descriptor = source ? descriptorByKey.get(source.atomKey) : undefined;
173
+ return descriptor ? schemaValues(`$output.${alias}`, "", descriptor.outputSchema, alias, source?.mapGroup) : [];
174
+ });
175
+ return PlanningFrontierSchema.parse({
176
+ schemaVersion: "1.0",
177
+ workspaceId: input.workspaceId,
178
+ revision: input.revision,
179
+ draftHash: input.draftHash,
180
+ blockIds: input.blockIds,
181
+ guaranteedAliases: [...aliases].sort(),
182
+ availableValues: [...workflowValues, ...outputValues].sort((left, right) => left.ref.localeCompare(right.ref)),
183
+ });
184
+ }
185
+ //# sourceMappingURL=planning-frontier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning-frontier.js","sourceRoot":"","sources":["../../src/workspace/planning-frontier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { type JsonValue, type PlanningDraftRevision, type PlanningFrontier, type PlanningTransactionResult, type PlanningWorkspaceSnapshot, type RuntimePolicyInput, type WorkflowIR, type WorkflowSpec, type WorkflowValidationError } from "@atom-workflow-agent/contracts";
2
+ import type { AtomRegistry } from "@atom-workflow-agent/atom-catalog";
3
+ export interface CreatePlanningWorkspaceInput {
4
+ readonly workspaceId: string;
5
+ readonly requestId: string;
6
+ readonly goal: string;
7
+ readonly workflowName: string;
8
+ readonly workflowInputs: Readonly<Record<string, JsonValue>>;
9
+ readonly context: JsonValue;
10
+ readonly runtimePolicy: RuntimePolicyInput;
11
+ readonly selectedAtomKeys: readonly string[];
12
+ readonly requiredAtomKeys: readonly string[];
13
+ readonly catalogHash?: string;
14
+ }
15
+ export interface PlanningWorkspaceFinalization {
16
+ readonly workspace: PlanningWorkspaceSnapshot["workspace"];
17
+ readonly revision: PlanningDraftRevision;
18
+ readonly workflow: WorkflowSpec;
19
+ readonly ir: WorkflowIR;
20
+ }
21
+ export interface PlanningWorkspaceLimits {
22
+ readonly maxOperationsPerTransaction?: number;
23
+ readonly maxRevisions?: number;
24
+ readonly maxNodes?: number;
25
+ }
26
+ export interface PlanningWorkspaceValidation {
27
+ readonly ok: boolean;
28
+ readonly revision: number;
29
+ readonly draftHash: string;
30
+ readonly errors: readonly WorkflowValidationError[];
31
+ readonly workflowNodeCount?: number;
32
+ readonly workflowIrHash?: string;
33
+ }
34
+ /**
35
+ * Runtime-owned, provider-neutral editor for one global semantic plan.
36
+ * Planner transactions contain business regions and semantic source selectors;
37
+ * Runtime deterministically binds them into one internal PlannerDraft and only
38
+ * commits after PlannerDraft -> WorkflowSpec -> WorkflowIR accepts the whole plan.
39
+ */
40
+ export declare class PlanningWorkspaceService {
41
+ private readonly registry;
42
+ private readonly limits;
43
+ private state;
44
+ private readonly now;
45
+ private constructor();
46
+ static create(registry: AtomRegistry, input: CreatePlanningWorkspaceInput, options?: {
47
+ readonly now?: () => Date;
48
+ readonly limits?: PlanningWorkspaceLimits;
49
+ }): PlanningWorkspaceService;
50
+ static restore(registry: AtomRegistry, snapshot: PlanningWorkspaceSnapshot, options?: {
51
+ readonly now?: () => Date;
52
+ readonly limits?: PlanningWorkspaceLimits;
53
+ }): PlanningWorkspaceService;
54
+ snapshot(): PlanningWorkspaceSnapshot;
55
+ inspect(): PlanningWorkspaceSnapshot;
56
+ searchCatalog(query: string, limit?: number): readonly JsonValue[];
57
+ describeAtom(key: string): JsonValue;
58
+ updateCatalogAuthority(selectedAtomKeys: readonly string[], requiredAtomKeys: readonly string[], catalogHash: string): PlanningWorkspaceSnapshot;
59
+ frontier(): PlanningFrontier;
60
+ applyTransaction(raw: unknown): PlanningTransactionResult;
61
+ validate(): PlanningWorkspaceValidation;
62
+ reportGap(raw: unknown): PlanningWorkspaceSnapshot;
63
+ resumeEditing(workflowInputs?: Readonly<Record<string, JsonValue>>): PlanningWorkspaceSnapshot;
64
+ finalize(expected?: {
65
+ readonly revision: number;
66
+ readonly draftHash: string;
67
+ }): PlanningWorkspaceFinalization;
68
+ private finalizedResult;
69
+ private applyOperations;
70
+ private record;
71
+ }
72
+ //# sourceMappingURL=planning-workspace-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning-workspace-service.d.ts","sourceRoot":"","sources":["../../src/workspace/planning-workspace-service.ts"],"names":[],"mappings":"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"}