@ddse/acm-planner 0.5.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 DDSE Foundation
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,242 @@
1
+ # @ddse/acm-planner
2
+
3
+ Structured tool-call planner generating Plan-A/B alternatives with safe fallback.
4
+
5
+ ## Overview
6
+
7
+ The planner package uses LLM tool calls to generate execution plans from goals and contexts. It produces Plan-A and Plan-B alternatives as specified in ACM v0.5, with automatic fallback to a safe linear plan if the model fails to emit valid tool calls.
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ pnpm add @ddse/acm-planner @ddse/acm-llm @ddse/acm-sdk
13
+ ```
14
+
15
+ ## Features
16
+
17
+ - ✅ Structured tool-call planning loops
18
+ - ✅ Plan-A and Plan-B alternatives
19
+ - ✅ Context reference computation (SHA-256)
20
+ - ✅ Deterministic fallback when tool calls fail
21
+ - ✅ ACM v0.5 compliant plan format
22
+
23
+ ## Usage
24
+
25
+ ### Basic Planning
26
+
27
+ ```typescript
28
+ import { StructuredLLMPlanner } from '@ddse/acm-planner';
29
+ import { createOllamaClient } from '@ddse/acm-llm';
30
+
31
+ const llm = createOllamaClient('llama3.1');
32
+ const planner = new StructuredLLMPlanner();
33
+
34
+ const result = await planner.plan({
35
+ goal: {
36
+ id: 'goal-1',
37
+ intent: 'Process a customer refund',
38
+ constraints: { maxTimeSeconds: 120 },
39
+ },
40
+ context: {
41
+ id: 'ctx-1',
42
+ facts: {
43
+ orderId: 'O123',
44
+ amount: 49.99,
45
+ region: 'EU',
46
+ },
47
+ },
48
+ capabilities: [
49
+ { name: 'search', sideEffects: false },
50
+ { name: 'assess_risk', sideEffects: false },
51
+ { name: 'create_refund', sideEffects: true },
52
+ { name: 'notify_supervisor', sideEffects: true },
53
+ ],
54
+ llm,
55
+ });
56
+
57
+ console.log('Context Ref:', result.contextRef);
58
+ console.log('Plans generated:', result.plans.length);
59
+ console.log('Rationale:', result.rationale);
60
+
61
+ // Select Plan-A
62
+ const plan = result.plans[0];
63
+ ```
64
+
65
+ ### Tool-Call Telemetry
66
+
67
+ ```typescript
68
+ import { DefaultStreamSink } from '@ddse/acm-sdk';
69
+
70
+ const result = await planner.plan({ goal, context, capabilities, llm });
71
+
72
+ // Access emitted tool calls
73
+ console.log(result.plans.map(plan => plan.id));
74
+ ```
75
+
76
+ ### Custom Capability Map Version
77
+
78
+ ```typescript
79
+ const result = await planner.plan({
80
+ goal,
81
+ context,
82
+ capabilities,
83
+ llm,
84
+ capabilityMapVersion: 'v2.1',
85
+ });
86
+
87
+ console.log('Plan uses capability map:', result.plans[0].capabilityMapVersion);
88
+ ```
89
+
90
+ ## API Reference
91
+
92
+ ### StructuredLLMPlanner
93
+
94
+ #### plan(options): `Promise<PlannerResult>`
95
+
96
+ Generate Plan-A and Plan-B from a goal and context using structured tool calls.
97
+
98
+ **Options:**
99
+
100
+ ```typescript
101
+ {
102
+ goal: Goal; // The goal to plan for
103
+ context: Context; // Immutable context packet
104
+ capabilities: Capability[]; // Available capabilities
105
+ llm: LLM; // LLM client
106
+ stream?: StreamSink; // Optional streaming
107
+ capabilityMapVersion?: string; // Version (default: 'v1')
108
+ }
109
+ ```
110
+
111
+ **Returns:**
112
+
113
+ ```typescript
114
+ {
115
+ plans: Plan[]; // Plan-A and Plan-B (or fallback)
116
+ contextRef: string; // SHA-256 hash of context
117
+ rationale?: string; // LLM explanation
118
+ }
119
+ ```
120
+
121
+ ## Plan Format
122
+
123
+ Generated plans follow ACM v0.5 specification:
124
+
125
+ ```typescript
126
+ {
127
+ id: 'plan-a',
128
+ contextRef: '8f3a2b1c...', // SHA-256 hash
129
+ capabilityMapVersion: 'v1',
130
+ tasks: [
131
+ {
132
+ id: 't1',
133
+ capability: 'search',
134
+ input: { query: 'order O123' },
135
+ },
136
+ {
137
+ id: 't2',
138
+ capability: 'assess_risk',
139
+ input: { orderId: 'O123' },
140
+ retry: {
141
+ attempts: 3,
142
+ backoff: 'exp',
143
+ },
144
+ },
145
+ ],
146
+ edges: [
147
+ { from: 't1', to: 't2' },
148
+ { from: 't2', to: 't3', guard: 'outputs.t2.riskTier !== "HIGH"' },
149
+ ],
150
+ }
151
+ ```
152
+
153
+ ## Context Reference
154
+
155
+ The planner computes a deterministic context reference using SHA-256:
156
+
157
+ ```typescript
158
+ const contextRef = sha256(JSON.stringify(context)).substring(0, 16);
159
+ ```
160
+
161
+ This ensures:
162
+
163
+ - Plans are bound to specific contexts
164
+ - Replay audits can verify context integrity
165
+ - Context changes trigger re-planning
166
+
167
+ ## Fallback Behavior
168
+
169
+ If the LLM response cannot be parsed, the planner returns a safe linear plan:
170
+
171
+ ```typescript
172
+ {
173
+ id: 'plan-fallback',
174
+ contextRef: '<computed>',
175
+ capabilityMapVersion: 'v1',
176
+ tasks: [
177
+ { id: 't1', capability: 'search', input: {} },
178
+ ],
179
+ edges: [],
180
+ }
181
+ ```
182
+
183
+ This ensures the system remains operational even with unreliable LLM outputs.
184
+
185
+ ## Prompt Engineering
186
+
187
+ The planner uses a structured prompt that includes:
188
+
189
+ - Goal intent and constraints
190
+ - Context facts
191
+ - Available capability names
192
+ - Request for Plan-A and Plan-B in JSON format
193
+
194
+ Example prompt:
195
+
196
+ ```text
197
+ You are a task planner. Given a goal and context, generate two
198
+ alternative execution plans (Plan-A and Plan-B).
199
+
200
+ Goal: Process a customer refund
201
+ Constraints: {"maxTimeSeconds":120}
202
+
203
+ Context facts: {"orderId":"O123","amount":49.99}
204
+
205
+ Available capabilities: search, assess_risk, create_refund
206
+
207
+ Generate two plans in the following JSON format: ...
208
+ ```
209
+
210
+ ## Planner Events
211
+
212
+ When a `StreamSink` is supplied, the planner emits high-level events (for example, number of plans produced) once planning completes. Use these signals to update UIs without parsing raw JSON.
213
+
214
+ ## ACM v0.5 Compliance
215
+
216
+ - ✅ Section 5.4: Plan Graph format
217
+ - ✅ Section 4: Context Packet binding via contextRef
218
+ - ✅ Section 5.4.2: Plan alternatives (Plan-A, Plan-B)
219
+ - ✅ Section 6.1: Deterministic contextRef computation
220
+
221
+ ## Error Handling
222
+
223
+ The planner never throws errors. Instead:
224
+
225
+ - Invalid LLM responses trigger fallback plan
226
+ - Network errors are logged and fallback is used
227
+ - Malformed JSON is caught and fallback is used
228
+
229
+ This ensures robustness in production environments.
230
+
231
+ ## Performance
232
+
233
+ Typical planning times:
234
+
235
+ - Ollama (llama3.1): 2-5 seconds
236
+ - vLLM (qwen2.5:7b): 1-3 seconds
237
+
238
+ Tool-call responses are returned in a single completion, so UI updates occur as soon as the model responds.
239
+
240
+ ## License
241
+
242
+ Apache-2.0
@@ -0,0 +1,2 @@
1
+ export { StructuredLLMPlanner, StructuredLLMPlanner as Planner, type PlannerOptions, type PlannerResult, } from './structured-planner.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACN,oBAAoB,EACpB,oBAAoB,IAAI,OAAO,EAC/B,KAAK,cAAc,EACnB,KAAK,aAAa,GAClB,MAAM,yBAAyB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ // Planner exports (structured-only)
2
+ export { StructuredLLMPlanner, StructuredLLMPlanner as Planner, } from './structured-planner.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EACN,oBAAoB,EACpB,oBAAoB,IAAI,OAAO,GAG/B,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.js","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import { type Capability, type Context, type Goal, type NucleusConfig, type NucleusFactory, type Plan, type StreamSink } from '@ddse/acm-sdk';
2
+ export type PlannerOptions = {
3
+ goal: Goal;
4
+ context: Context;
5
+ capabilities: Capability[];
6
+ nucleusFactory: NucleusFactory;
7
+ nucleusConfig: {
8
+ llmCall: NucleusConfig['llmCall'];
9
+ hooks?: NucleusConfig['hooks'];
10
+ allowedTools?: string[];
11
+ };
12
+ stream?: StreamSink;
13
+ capabilityMapVersion?: string;
14
+ planCount?: 1 | 2;
15
+ planId?: string;
16
+ };
17
+ export type PlannerResult = {
18
+ plans: Plan[];
19
+ contextRef: string;
20
+ rationale?: string;
21
+ };
22
+ export declare class StructuredLLMPlanner {
23
+ plan(options: PlannerOptions): Promise<PlannerResult>;
24
+ private buildPrompt;
25
+ private convertToolCalls;
26
+ }
27
+ //# sourceMappingURL=structured-planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-planner.d.ts","sourceRoot":"","sources":["../src/structured-planner.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,cAAc,EAGnB,KAAK,IAAI,EACT,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE;QACb,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QAClC,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAC/B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAgDF,qBAAa,oBAAoB;IACzB,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IA0D3D,OAAO,CAAC,WAAW;IA8BnB,OAAO,CAAC,gBAAgB;CA2CzB"}
@@ -0,0 +1,146 @@
1
+ // Structured tool-call based planner (Phase 4)
2
+ import { ContextBuilder, } from '@ddse/acm-sdk';
3
+ const PLANNER_TOOLS = [
4
+ {
5
+ name: 'emit_plan',
6
+ description: 'Emit a plan with tasks and edges',
7
+ inputSchema: {
8
+ type: 'object',
9
+ properties: {
10
+ planId: { type: 'string', description: 'Plan identifier (plan-a, plan-b, etc.)' },
11
+ tasks: {
12
+ type: 'array',
13
+ items: {
14
+ type: 'object',
15
+ properties: {
16
+ id: { type: 'string' },
17
+ title: { type: 'string', description: 'Human-friendly task label' },
18
+ objective: { type: 'string', description: 'Task objective, authored by the Nucleus' },
19
+ successCriteria: {
20
+ type: 'array',
21
+ items: { type: 'string' },
22
+ description: 'Observable success criteria for the task',
23
+ },
24
+ capability: { type: 'string' },
25
+ input: { type: 'object' },
26
+ },
27
+ required: ['id', 'capability'],
28
+ },
29
+ },
30
+ edges: {
31
+ type: 'array',
32
+ items: {
33
+ type: 'object',
34
+ properties: {
35
+ from: { type: 'string' },
36
+ to: { type: 'string' },
37
+ guard: { type: 'string' },
38
+ },
39
+ required: ['from', 'to'],
40
+ },
41
+ },
42
+ rationale: { type: 'string', description: 'Explanation for this plan' },
43
+ },
44
+ required: ['planId', 'tasks', 'edges'],
45
+ },
46
+ },
47
+ ];
48
+ export class StructuredLLMPlanner {
49
+ async plan(options) {
50
+ const { goal, context, capabilities, nucleusFactory, nucleusConfig, stream, capabilityMapVersion = 'v1', } = options;
51
+ const planCount = options.planCount ?? 1;
52
+ const contextRef = ContextBuilder.computeContextRef(context);
53
+ const nucleus = nucleusFactory({
54
+ goalId: goal.id,
55
+ goalIntent: goal.intent,
56
+ planId: options.planId ?? `planner-${Date.now()}`,
57
+ contextRef,
58
+ context,
59
+ llmCall: nucleusConfig.llmCall,
60
+ hooks: nucleusConfig.hooks,
61
+ allowedTools: Array.from(new Set([...(nucleusConfig.allowedTools ?? []), 'emit_plan'])),
62
+ });
63
+ const preflight = await nucleus.preflight();
64
+ if (preflight.status === 'NEEDS_CONTEXT') {
65
+ throw new Error(`Planner requires additional context retrieval before proceeding: ${preflight.retrievalDirectives.join(', ')}`);
66
+ }
67
+ const prompt = this.buildPrompt(goal, context, capabilities, planCount);
68
+ const result = await nucleus.invoke({ prompt, tools: PLANNER_TOOLS });
69
+ const plans = this.convertToolCalls(result, contextRef, capabilityMapVersion);
70
+ if (plans.length === 0) {
71
+ throw new Error('Nucleus did not emit any structured plans.');
72
+ }
73
+ await nucleus.postcheck({ plans: plans.map(plan => ({ id: plan.id, tasks: plan.tasks.length })) });
74
+ const rationale = result.reasoning ?? plans.map(p => p.rationale).find(Boolean);
75
+ if (stream) {
76
+ stream.emit('planner', {
77
+ done: true,
78
+ plans: plans.length,
79
+ rationale,
80
+ });
81
+ }
82
+ return {
83
+ plans,
84
+ contextRef,
85
+ rationale,
86
+ };
87
+ }
88
+ buildPrompt(goal, context, capabilities, planCount) {
89
+ const capList = capabilities.map(c => `- ${c.name}`).join('\n');
90
+ return `You are an expert task planner. Given a goal and context, create ${planCount === 2 ? 'two alternative' : 'one'} execution plan${planCount === 2 ? 's' : ''}.
91
+
92
+ **Goal:**
93
+ ${goal.intent}
94
+ ${goal.constraints ? `\n**Constraints:**\n${JSON.stringify(goal.constraints, null, 2)}` : ''}
95
+
96
+ **Context Facts:**
97
+ ${JSON.stringify(context.facts, null, 2)}
98
+
99
+ **Available Capabilities:**
100
+ ${capList}
101
+
102
+ **Instructions:**
103
+ ${planCount === 2
104
+ ? '1. Create TWO different plans (plan-a and plan-b) by calling emit_plan twice\n2. Each plan should take a different approach to achieve the goal'
105
+ : '1. Create ONE plan (plan-a) by calling emit_plan'}
106
+ ${planCount === 2 ? '3' : '2'}. Each task must reference a capability from the available list
107
+ ${planCount === 2 ? '4' : '3'}. Define edges to show task dependencies
108
+ ${planCount === 2 ? '5' : '4'}. Include a rationale explaining your planning decisions
109
+
110
+ Call the emit_plan tool ${planCount === 2 ? 'twice (once for each plan)' : 'once'} with the plan structure.`;
111
+ }
112
+ convertToolCalls(result, contextRef, capabilityMapVersion) {
113
+ const plans = [];
114
+ for (const call of result.toolCalls) {
115
+ if (call.name !== 'emit_plan') {
116
+ continue;
117
+ }
118
+ const args = call.input ?? {};
119
+ const planId = args.planId || `plan-${plans.length + 1}`;
120
+ const tasks = Array.isArray(args.tasks)
121
+ ? args.tasks.map((task, index) => ({
122
+ id: task.id ?? `task-${index + 1}`,
123
+ title: typeof task.title === 'string' ? task.title : undefined,
124
+ objective: typeof task.objective === 'string' ? task.objective : undefined,
125
+ successCriteria: Array.isArray(task.successCriteria)
126
+ ? task.successCriteria.filter((item) => typeof item === 'string')
127
+ : undefined,
128
+ capability: task.capability,
129
+ capabilityRef: task.capability,
130
+ input: task.input ?? {},
131
+ }))
132
+ : [];
133
+ const edges = Array.isArray(args.edges) ? args.edges : [];
134
+ plans.push({
135
+ id: planId,
136
+ contextRef,
137
+ capabilityMapVersion,
138
+ tasks,
139
+ edges,
140
+ rationale: typeof args.rationale === 'string' ? args.rationale : undefined,
141
+ });
142
+ }
143
+ return plans;
144
+ }
145
+ }
146
+ //# sourceMappingURL=structured-planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-planner.js","sourceRoot":"","sources":["../src/structured-planner.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@ddse/acm-planner",
3
+ "version": "0.5.0",
4
+ "description": "ACM v0.5 Planner - LLM-based plan generation",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "dependencies": {
15
+ "@ddse/acm-sdk": "0.5.0",
16
+ "@ddse/acm-llm": "0.5.0"
17
+ },
18
+ "keywords": [
19
+ "acm",
20
+ "planner",
21
+ "llm"
22
+ ],
23
+ "license": "MIT",
24
+ "scripts": {
25
+ "build": "tsc",
26
+ "clean": "rm -rf dist",
27
+ "dev": "tsc --watch"
28
+ }
29
+ }
package/src/index.ts ADDED
@@ -0,0 +1,7 @@
1
+ // Planner exports (structured-only)
2
+ export {
3
+ StructuredLLMPlanner,
4
+ StructuredLLMPlanner as Planner,
5
+ type PlannerOptions,
6
+ type PlannerResult,
7
+ } from './structured-planner.js';
package/src/planner.ts ADDED
@@ -0,0 +1,2 @@
1
+ // Legacy planner removed in favor of StructuredLLMPlanner.
2
+ export {};
@@ -0,0 +1,215 @@
1
+ // Structured tool-call based planner (Phase 4)
2
+ import {
3
+ ContextBuilder,
4
+ type Capability,
5
+ type Context,
6
+ type Goal,
7
+ type NucleusConfig,
8
+ type NucleusFactory,
9
+ type NucleusInvokeResult,
10
+ type NucleusToolDefinition,
11
+ type Plan,
12
+ type StreamSink,
13
+ } from '@ddse/acm-sdk';
14
+
15
+ export type PlannerOptions = {
16
+ goal: Goal;
17
+ context: Context;
18
+ capabilities: Capability[];
19
+ nucleusFactory: NucleusFactory;
20
+ nucleusConfig: {
21
+ llmCall: NucleusConfig['llmCall'];
22
+ hooks?: NucleusConfig['hooks'];
23
+ allowedTools?: string[];
24
+ };
25
+ stream?: StreamSink;
26
+ capabilityMapVersion?: string;
27
+ planCount?: 1 | 2;
28
+ planId?: string;
29
+ };
30
+
31
+ export type PlannerResult = {
32
+ plans: Plan[];
33
+ contextRef: string;
34
+ rationale?: string;
35
+ };
36
+
37
+ const PLANNER_TOOLS: NucleusToolDefinition[] = [
38
+ {
39
+ name: 'emit_plan',
40
+ description: 'Emit a plan with tasks and edges',
41
+ inputSchema: {
42
+ type: 'object',
43
+ properties: {
44
+ planId: { type: 'string', description: 'Plan identifier (plan-a, plan-b, etc.)' },
45
+ tasks: {
46
+ type: 'array',
47
+ items: {
48
+ type: 'object',
49
+ properties: {
50
+ id: { type: 'string' },
51
+ title: { type: 'string', description: 'Human-friendly task label' },
52
+ objective: { type: 'string', description: 'Task objective, authored by the Nucleus' },
53
+ successCriteria: {
54
+ type: 'array',
55
+ items: { type: 'string' },
56
+ description: 'Observable success criteria for the task',
57
+ },
58
+ capability: { type: 'string' },
59
+ input: { type: 'object' },
60
+ },
61
+ required: ['id', 'capability'],
62
+ },
63
+ },
64
+ edges: {
65
+ type: 'array',
66
+ items: {
67
+ type: 'object',
68
+ properties: {
69
+ from: { type: 'string' },
70
+ to: { type: 'string' },
71
+ guard: { type: 'string' },
72
+ },
73
+ required: ['from', 'to'],
74
+ },
75
+ },
76
+ rationale: { type: 'string', description: 'Explanation for this plan' },
77
+ },
78
+ required: ['planId', 'tasks', 'edges'],
79
+ },
80
+ },
81
+ ];
82
+
83
+ export class StructuredLLMPlanner {
84
+ async plan(options: PlannerOptions): Promise<PlannerResult> {
85
+ const {
86
+ goal,
87
+ context,
88
+ capabilities,
89
+ nucleusFactory,
90
+ nucleusConfig,
91
+ stream,
92
+ capabilityMapVersion = 'v1',
93
+ } = options;
94
+ const planCount: 1 | 2 = options.planCount ?? 1;
95
+
96
+ const contextRef = ContextBuilder.computeContextRef(context);
97
+ const nucleus = nucleusFactory({
98
+ goalId: goal.id,
99
+ goalIntent: goal.intent,
100
+ planId: options.planId ?? `planner-${Date.now()}`,
101
+ contextRef,
102
+ context,
103
+ llmCall: nucleusConfig.llmCall,
104
+ hooks: nucleusConfig.hooks,
105
+ allowedTools: Array.from(new Set([...(nucleusConfig.allowedTools ?? []), 'emit_plan'])),
106
+ });
107
+
108
+ const preflight = await nucleus.preflight();
109
+ if (preflight.status === 'NEEDS_CONTEXT') {
110
+ throw new Error(
111
+ `Planner requires additional context retrieval before proceeding: ${preflight.retrievalDirectives.join(', ')}`
112
+ );
113
+ }
114
+
115
+ const prompt = this.buildPrompt(goal, context, capabilities, planCount);
116
+ const result = await nucleus.invoke({ prompt, tools: PLANNER_TOOLS });
117
+ const plans = this.convertToolCalls(result, contextRef, capabilityMapVersion);
118
+
119
+ if (plans.length === 0) {
120
+ throw new Error('Nucleus did not emit any structured plans.');
121
+ }
122
+
123
+ await nucleus.postcheck({ plans: plans.map(plan => ({ id: plan.id, tasks: plan.tasks.length })) });
124
+
125
+ const rationale = result.reasoning ?? plans.map(p => p.rationale).find(Boolean);
126
+
127
+ if (stream) {
128
+ stream.emit('planner', {
129
+ done: true,
130
+ plans: plans.length,
131
+ rationale,
132
+ });
133
+ }
134
+
135
+ return {
136
+ plans,
137
+ contextRef,
138
+ rationale,
139
+ };
140
+ }
141
+
142
+ private buildPrompt(goal: Goal, context: Context, capabilities: Capability[], planCount: 1 | 2): string {
143
+ const capList = capabilities.map(c => `- ${c.name}`).join('\n');
144
+
145
+ return `You are an expert task planner. Given a goal and context, create ${
146
+ planCount === 2 ? 'two alternative' : 'one'
147
+ } execution plan${planCount === 2 ? 's' : ''}.
148
+
149
+ **Goal:**
150
+ ${goal.intent}
151
+ ${goal.constraints ? `\n**Constraints:**\n${JSON.stringify(goal.constraints, null, 2)}` : ''}
152
+
153
+ **Context Facts:**
154
+ ${JSON.stringify(context.facts, null, 2)}
155
+
156
+ **Available Capabilities:**
157
+ ${capList}
158
+
159
+ **Instructions:**
160
+ ${
161
+ planCount === 2
162
+ ? '1. Create TWO different plans (plan-a and plan-b) by calling emit_plan twice\n2. Each plan should take a different approach to achieve the goal'
163
+ : '1. Create ONE plan (plan-a) by calling emit_plan'
164
+ }
165
+ ${planCount === 2 ? '3' : '2'}. Each task must reference a capability from the available list
166
+ ${planCount === 2 ? '4' : '3'}. Define edges to show task dependencies
167
+ ${planCount === 2 ? '5' : '4'}. Include a rationale explaining your planning decisions
168
+
169
+ Call the emit_plan tool ${planCount === 2 ? 'twice (once for each plan)' : 'once'} with the plan structure.`;
170
+ }
171
+
172
+ private convertToolCalls(
173
+ result: NucleusInvokeResult,
174
+ contextRef: string,
175
+ capabilityMapVersion: string
176
+ ): Plan[] {
177
+ const plans: Plan[] = [];
178
+
179
+ for (const call of result.toolCalls) {
180
+ if (call.name !== 'emit_plan') {
181
+ continue;
182
+ }
183
+
184
+ const args = call.input ?? {};
185
+ const planId = (args.planId as string) || `plan-${plans.length + 1}`;
186
+
187
+ const tasks = Array.isArray(args.tasks)
188
+ ? args.tasks.map((task: any, index: number) => ({
189
+ id: task.id ?? `task-${index + 1}`,
190
+ title: typeof task.title === 'string' ? task.title : undefined,
191
+ objective: typeof task.objective === 'string' ? task.objective : undefined,
192
+ successCriteria: Array.isArray(task.successCriteria)
193
+ ? task.successCriteria.filter((item: any) => typeof item === 'string')
194
+ : undefined,
195
+ capability: task.capability,
196
+ capabilityRef: task.capability,
197
+ input: task.input ?? {},
198
+ }))
199
+ : [];
200
+
201
+ const edges = Array.isArray(args.edges) ? args.edges : [];
202
+
203
+ plans.push({
204
+ id: planId,
205
+ contextRef,
206
+ capabilityMapVersion,
207
+ tasks,
208
+ edges,
209
+ rationale: typeof args.rationale === 'string' ? args.rationale : undefined,
210
+ });
211
+ }
212
+
213
+ return plans;
214
+ }
215
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "rootDir": "./src",
5
+ "outDir": "./dist"
6
+ },
7
+ "include": ["src/**/*"],
8
+ "references": [
9
+ { "path": "../acm-sdk" },
10
+ { "path": "../acm-llm" }
11
+ ]
12
+ }
@@ -0,0 +1 @@
1
+ {"fileNames":["../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../acm-sdk/dist/src/nucleus.d.ts","../acm-sdk/dist/src/types.d.ts","../acm-sdk/dist/src/tool.d.ts","../acm-sdk/dist/src/task.d.ts","../acm-sdk/dist/src/capability.d.ts","../acm-sdk/dist/src/registry.d.ts","../acm-sdk/dist/src/policy.d.ts","../acm-sdk/dist/src/stream.d.ts","../acm-sdk/dist/src/context.d.ts","../acm-sdk/dist/src/context-provider.d.ts","../acm-sdk/dist/src/utils.d.ts","../acm-sdk/dist/src/index.d.ts","./src/structured-planner.ts","./src/index.ts","./src/planner.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/compatibility/disposable.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/compatibility/index.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/globals.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/web-globals/domexception.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/web-globals/events.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/web-globals/fetch.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/assert.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/assert/strict.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/async_hooks.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/buffer.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/child_process.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/cluster.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/console.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/constants.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/crypto.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/dgram.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/dns.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/dns/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/domain.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/events.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/fs.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/fs/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/http.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/http2.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/https.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/inspector.generated.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/module.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/net.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/os.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/path.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/perf_hooks.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/process.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/punycode.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/querystring.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/readline.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/readline/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/repl.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/sea.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/stream.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/stream/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/stream/consumers.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/stream/web.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/string_decoder.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/test.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/timers.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/timers/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/tls.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/trace_events.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/tty.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/url.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/util.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/v8.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/vm.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/wasi.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/worker_threads.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/zlib.d.ts","../../node_modules/.pnpm/@types+node@20.19.19/node_modules/@types/node/index.d.ts"],"fileIdsList":[[78,121,124],[78,123,124],[124],[78,124,129,157],[78,124,125,130,135,143,154,165],[78,124,125,126,135,143],[78,124],[73,74,75,78,124],[78,124,127,166],[78,124,128,129,136,144],[78,124,129,154,162],[78,124,130,132,135,143],[78,123,124,131],[78,124,132,133],[78,124,134,135],[78,123,124,135],[78,124,135,136,137,154,165],[78,124,135,136,137,150,154,157],[78,124,132,135,138,143,154,165],[78,124,135,136,138,139,143,154,162,165],[78,124,138,140,154,162,165],[76,77,78,79,80,81,82,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171],[78,124,135,141],[78,124,142,165,170],[78,124,132,135,143,154],[78,124,144],[78,124,145],[78,123,124,146],[78,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171],[78,124,148],[78,124,149],[78,124,135,150,151],[78,124,150,152,166,168],[78,124,135,154,155,157],[78,124,156,157],[78,124,154,155],[78,124,157],[78,124,158],[78,121,124,154,159],[78,124,135,160,161],[78,124,160,161],[78,124,129,143,154,162],[78,124,163],[78,124,143,164],[78,124,138,149,165],[78,124,129,166],[78,124,154,167],[78,124,142,168],[78,124,169],[78,119,124],[78,119,124,135,137,146,154,157,165,168,170],[78,124,154,171],[78,91,95,124,165],[78,91,124,154,165],[78,86,124],[78,88,91,124,162,165],[78,124,143,162],[78,124,172],[78,86,124,172],[78,88,91,124,143,165],[78,83,84,87,90,124,135,154,165],[78,91,98,124],[78,83,89,124],[78,91,112,113,124],[78,87,91,124,157,165,172],[78,112,124,172],[78,85,86,124,172],[78,91,124],[78,85,86,87,88,89,90,91,92,93,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,115,116,117,118,124],[78,91,106,124],[78,91,98,99,124],[78,89,91,99,100,124],[78,90,124],[78,83,86,91,124],[78,91,95,99,100,124],[78,95,124],[78,89,91,94,124,165],[78,83,88,91,98,124],[78,124,154],[78,86,91,112,124,170,172],[70,78,124],[69,78,124],[59,61,78,124],[58,59,60,78,124],[59,78,124],[58,59,60,61,62,63,64,65,66,67,68,78,124],[60,78,124],[58,59,78,124],[58,78,124],[59,62,78,124]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"5ad07c262dfb2f14353e2f3ffc096600cad7c02a36f8bfb1011f0a034377feb0","777102e8edbfc06dd3f1b71ec30ee7d694ebb29f20f8e413383a41fe6804e1b2","d11a4c7da78f3ca2be8e9dcdbe007e5abd0dbd2ab82ae686c76772346bf8c620","75e2ff50a8320c8f80aef345259ee659ccc9d40504f848e9b24b1e304fc55352","1a88dfa5ab3bdecb302f94b4abdf1510c68699cf3437347a3462116cf37d8fb4","5d5df716a2e624c74357b49383a950b8ff0567890c28e62d3787011dd26eaf4d","4e863ccf9bf55d8b9120ce28e4faee052e191fa9fa2c9637d427682a9a72059c","45b1108af4c5adaa8e1cf58e6fcaa73fde57c72254c7ae5603673c04b364c522","e99d408704752e8bab84079cec1c33682b98715949145f0a95d2c98997d565ac","17d36096aa97a3177dbced126f752049a19e11778345a280227eb64c33972518","ca8bd23c8b8a2e6fc15fb248bfbc2db70faac477c5780265cc2ce96445f8fc8d","fbf4f020dab462fed68d3623ea47d3c9376b462d5d199ba4992351c6830e4f8c",{"version":"eb5a8be8a450e5785d9e37a042bd97e4c4576359f765045560124dba39e20e8f","signature":"b43b545481454b2b118fc65433f416814ad7abd3d672f0de9aa3ab7b120fedc0"},{"version":"2210dfd71cab3a78da711fb1dcb50c599ffc20b35db36464387205c574fbc7d3","signature":"da1e9ee2ad14319ad4317f89b974502869a694e064ddc446d58858e688b62530"},{"version":"aff7795964c9ae76e5854bff931543aa798ca24b15189fecc9b2c39eded88d8b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"49a5a44f2e68241a1d2bd9ec894535797998841c09729e506a7cbfcaa40f2180","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e2e0a2dfc6bfabffacba3cc3395aa8197f30893942a2625bd9923ea34a27a3c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"567b7f607f400873151d7bc63a049514b53c3c00f5f56e9e95695d93b66a138e","affectsGlobalScope":true,"impliedFormat":1},{"version":"823f9c08700a30e2920a063891df4e357c64333fdba6889522acc5b7ae13fc08","impliedFormat":1},{"version":"84c1930e33d1bb12ad01bcbe11d656f9646bd21b2fb2afd96e8e10615a021aef","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4b87f767c7bc841511113c876a6b8bf1fd0cb0b718c888ad84478b372ec486b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d04e3640dd9eb67f7f1e5bd3d0bf96c784666f7aefc8ac1537af6f2d38d4c29","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"2bf469abae4cc9c0f340d4e05d9d26e37f936f9c8ca8f007a6534f109dcc77e4","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"1d140fe7e071ea06038b6c5e01fea83f72d9d6d68e0d606a3d824323f5133388","affectsGlobalScope":true,"impliedFormat":1},{"version":"4c21aaa8257d7950a5b75a251d9075b6a371208fc948c9c8402f6690ef3b5b55","impliedFormat":1},{"version":"685657a3ec619ef12aa7f754eee3b28598d3bf9749da89839a72a343fffef5ff","impliedFormat":1},{"version":"0c52340a45f6a46b67d766210f921aed61a5f1defe9e708fa5d3389bdf743d98","impliedFormat":1},{"version":"de735eca2c51dd8b860254e9fdb6d9ec19fe402dfe597c23090841ce3937cfc5","impliedFormat":1},{"version":"fed70ffbe859d54d8c7e1ef8cc2bc38af99b00a273ebb69ac293d2cb656210bd","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"5155da3047ef977944d791a2188ff6e6c225f6975cc1910ab7bb6838ab84cede","impliedFormat":1},{"version":"93f437e1398a4f06a984f441f7fa7a9f0535c04399619b5c22e0b87bdee182cb","impliedFormat":1},{"version":"afbe24ab0d74694372baa632ecb28bb375be53f3be53f9b07ecd7fc994907de5","impliedFormat":1},{"version":"e16d218a30f6a6810b57f7e968124eaa08c7bb366133ea34bbf01e7cd6b8c0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb8692dea24c27821f77e397272d9ed2eda0b95e4a75beb0fdda31081d15a8ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"5b6844ad931dcc1d3aca53268f4bd671428421464b1286746027aede398094f2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"0225ecb9ed86bdb7a2c7fd01f1556906902929377b44483dc4b83e03b3ef227d","affectsGlobalScope":true,"impliedFormat":1},{"version":"1851a3b4db78664f83901bb9cac9e45e03a37bb5933cc5bf37e10bb7e91ab4eb","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"e31e51c55800014d926e3f74208af49cb7352803619855c89296074d1ecbb524","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"dfb96ba5177b68003deec9e773c47257da5c4c8a74053d8956389d832df72002","affectsGlobalScope":true,"impliedFormat":1},{"version":"92d3070580cf72b4bb80959b7f16ede9a3f39e6f4ef2ac87cfa4561844fdc69f","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3dffd70e6375b872f0b4e152de4ae682d762c61a24881ecc5eb9f04c5caf76f","impliedFormat":1},{"version":"613deebaec53731ff6b74fe1a89f094b708033db6396b601df3e6d5ab0ec0a47","impliedFormat":1},{"version":"d91a7d8b5655c42986f1bdfe2105c4408f472831c8f20cf11a8c3345b6b56c8c","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"e8a979b8af001c9fc2e774e7809d233c8ca955a28756f52ee5dee88ccb0611d2","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1}],"root":[[70,72]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":7,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[121,1],[122,1],[123,2],[78,3],[124,4],[125,5],[126,6],[73,7],[76,8],[74,7],[75,7],[127,9],[128,10],[129,11],[130,12],[131,13],[132,14],[133,14],[134,15],[135,16],[136,17],[137,18],[79,7],[77,7],[138,19],[139,20],[140,21],[172,22],[141,23],[142,24],[143,25],[144,26],[145,27],[146,28],[147,29],[148,30],[149,31],[150,32],[151,32],[152,33],[153,7],[154,34],[156,35],[155,36],[157,37],[158,38],[159,39],[160,40],[161,41],[162,42],[163,43],[164,44],[165,45],[166,46],[167,47],[168,48],[169,49],[80,7],[81,7],[82,7],[120,50],[170,51],[171,52],[56,7],[57,7],[11,7],[10,7],[2,7],[12,7],[13,7],[14,7],[15,7],[16,7],[17,7],[18,7],[19,7],[3,7],[20,7],[21,7],[4,7],[22,7],[26,7],[23,7],[24,7],[25,7],[27,7],[28,7],[29,7],[5,7],[30,7],[31,7],[32,7],[33,7],[6,7],[37,7],[34,7],[35,7],[36,7],[38,7],[7,7],[39,7],[44,7],[45,7],[40,7],[41,7],[42,7],[43,7],[8,7],[49,7],[46,7],[47,7],[48,7],[50,7],[9,7],[51,7],[52,7],[53,7],[55,7],[54,7],[1,7],[98,53],[108,54],[97,53],[118,55],[89,56],[88,57],[117,58],[111,59],[116,60],[91,61],[105,62],[90,63],[114,64],[86,65],[85,58],[115,66],[87,67],[92,68],[93,7],[96,68],[83,7],[119,69],[109,70],[100,71],[101,72],[103,73],[99,74],[102,75],[112,58],[94,76],[95,77],[104,78],[84,79],[107,70],[106,68],[110,7],[113,80],[71,81],[72,7],[70,82],[62,83],[67,84],[66,85],[69,86],[58,85],[64,85],[63,87],[65,85],[61,88],[60,7],[59,89],[68,90]],"latestChangedDtsFile":"./dist/planner.d.ts","version":"5.9.3"}