@framers/agentos 0.1.121 → 0.1.123

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 (136) hide show
  1. package/dist/api/TextToolCallParser.d.ts +61 -0
  2. package/dist/api/TextToolCallParser.d.ts.map +1 -0
  3. package/dist/api/TextToolCallParser.js +137 -0
  4. package/dist/api/TextToolCallParser.js.map +1 -0
  5. package/dist/api/agent.d.ts +7 -0
  6. package/dist/api/agent.d.ts.map +1 -1
  7. package/dist/api/agent.js +1 -0
  8. package/dist/api/agent.js.map +1 -1
  9. package/dist/api/generateText.d.ts +105 -0
  10. package/dist/api/generateText.d.ts.map +1 -1
  11. package/dist/api/generateText.js +191 -2
  12. package/dist/api/generateText.js.map +1 -1
  13. package/dist/cognitive_substrate/GMI.d.ts.map +1 -1
  14. package/dist/cognitive_substrate/GMI.js +27 -1
  15. package/dist/cognitive_substrate/GMI.js.map +1 -1
  16. package/dist/cognitive_substrate/IGMI.d.ts +5 -0
  17. package/dist/cognitive_substrate/IGMI.d.ts.map +1 -1
  18. package/dist/cognitive_substrate/IGMI.js.map +1 -1
  19. package/dist/emergent/AdaptPersonalityTool.d.ts +142 -0
  20. package/dist/emergent/AdaptPersonalityTool.d.ts.map +1 -0
  21. package/dist/emergent/AdaptPersonalityTool.js +198 -0
  22. package/dist/emergent/AdaptPersonalityTool.js.map +1 -0
  23. package/dist/emergent/CreateWorkflowTool.d.ts +182 -0
  24. package/dist/emergent/CreateWorkflowTool.d.ts.map +1 -0
  25. package/dist/emergent/CreateWorkflowTool.js +330 -0
  26. package/dist/emergent/CreateWorkflowTool.js.map +1 -0
  27. package/dist/emergent/EmergentCapabilityEngine.d.ts +68 -0
  28. package/dist/emergent/EmergentCapabilityEngine.d.ts.map +1 -1
  29. package/dist/emergent/EmergentCapabilityEngine.js +99 -0
  30. package/dist/emergent/EmergentCapabilityEngine.js.map +1 -1
  31. package/dist/emergent/ManageSkillsTool.d.ts +154 -0
  32. package/dist/emergent/ManageSkillsTool.d.ts.map +1 -0
  33. package/dist/emergent/ManageSkillsTool.js +241 -0
  34. package/dist/emergent/ManageSkillsTool.js.map +1 -0
  35. package/dist/emergent/PersonalityMutationStore.d.ts +183 -0
  36. package/dist/emergent/PersonalityMutationStore.d.ts.map +1 -0
  37. package/dist/emergent/PersonalityMutationStore.js +222 -0
  38. package/dist/emergent/PersonalityMutationStore.js.map +1 -0
  39. package/dist/emergent/SelfEvaluateTool.d.ts +199 -0
  40. package/dist/emergent/SelfEvaluateTool.d.ts.map +1 -0
  41. package/dist/emergent/SelfEvaluateTool.js +410 -0
  42. package/dist/emergent/SelfEvaluateTool.js.map +1 -0
  43. package/dist/emergent/SelfImprovementConfig.d.ts +177 -0
  44. package/dist/emergent/SelfImprovementConfig.d.ts.map +1 -0
  45. package/dist/emergent/SelfImprovementConfig.js +43 -0
  46. package/dist/emergent/SelfImprovementConfig.js.map +1 -0
  47. package/dist/emergent/index.d.ts +8 -0
  48. package/dist/emergent/index.d.ts.map +1 -1
  49. package/dist/emergent/index.js +6 -0
  50. package/dist/emergent/index.js.map +1 -1
  51. package/dist/emergent/types.d.ts +9 -0
  52. package/dist/emergent/types.d.ts.map +1 -1
  53. package/dist/emergent/types.js.map +1 -1
  54. package/dist/memory/AgentMemory.d.ts +2 -2
  55. package/dist/memory/AgentMemory.d.ts.map +1 -1
  56. package/dist/memory/AgentMemory.js +4 -3
  57. package/dist/memory/AgentMemory.js.map +1 -1
  58. package/dist/memory/consolidation/ConsolidationLoop.d.ts +31 -4
  59. package/dist/memory/consolidation/ConsolidationLoop.d.ts.map +1 -1
  60. package/dist/memory/consolidation/ConsolidationLoop.js +112 -69
  61. package/dist/memory/consolidation/ConsolidationLoop.js.map +1 -1
  62. package/dist/memory/facade/Memory.d.ts +12 -6
  63. package/dist/memory/facade/Memory.d.ts.map +1 -1
  64. package/dist/memory/facade/Memory.js +216 -212
  65. package/dist/memory/facade/Memory.js.map +1 -1
  66. package/dist/memory/facade/types.d.ts +11 -1
  67. package/dist/memory/facade/types.d.ts.map +1 -1
  68. package/dist/memory/feedback/RetrievalFeedbackSignal.d.ts +7 -10
  69. package/dist/memory/feedback/RetrievalFeedbackSignal.d.ts.map +1 -1
  70. package/dist/memory/feedback/RetrievalFeedbackSignal.js +40 -36
  71. package/dist/memory/feedback/RetrievalFeedbackSignal.js.map +1 -1
  72. package/dist/memory/io/ChatGptImporter.d.ts.map +1 -1
  73. package/dist/memory/io/ChatGptImporter.js +24 -18
  74. package/dist/memory/io/ChatGptImporter.js.map +1 -1
  75. package/dist/memory/io/CsvImporter.d.ts.map +1 -1
  76. package/dist/memory/io/CsvImporter.js +21 -8
  77. package/dist/memory/io/CsvImporter.js.map +1 -1
  78. package/dist/memory/io/JsonExporter.d.ts.map +1 -1
  79. package/dist/memory/io/JsonExporter.js +6 -17
  80. package/dist/memory/io/JsonExporter.js.map +1 -1
  81. package/dist/memory/io/JsonImporter.d.ts +3 -0
  82. package/dist/memory/io/JsonImporter.d.ts.map +1 -1
  83. package/dist/memory/io/JsonImporter.js +58 -29
  84. package/dist/memory/io/JsonImporter.js.map +1 -1
  85. package/dist/memory/io/MarkdownExporter.d.ts.map +1 -1
  86. package/dist/memory/io/MarkdownExporter.js +1 -4
  87. package/dist/memory/io/MarkdownExporter.js.map +1 -1
  88. package/dist/memory/io/MarkdownImporter.d.ts.map +1 -1
  89. package/dist/memory/io/MarkdownImporter.js +12 -7
  90. package/dist/memory/io/MarkdownImporter.js.map +1 -1
  91. package/dist/memory/io/ObsidianExporter.d.ts +14 -9
  92. package/dist/memory/io/ObsidianExporter.d.ts.map +1 -1
  93. package/dist/memory/io/ObsidianExporter.js +35 -23
  94. package/dist/memory/io/ObsidianExporter.js.map +1 -1
  95. package/dist/memory/io/ObsidianImporter.d.ts.map +1 -1
  96. package/dist/memory/io/ObsidianImporter.js +34 -27
  97. package/dist/memory/io/ObsidianImporter.js.map +1 -1
  98. package/dist/memory/io/SqliteExporter.d.ts +1 -2
  99. package/dist/memory/io/SqliteExporter.d.ts.map +1 -1
  100. package/dist/memory/io/SqliteExporter.js +2 -3
  101. package/dist/memory/io/SqliteExporter.js.map +1 -1
  102. package/dist/memory/io/SqliteImporter.d.ts +3 -0
  103. package/dist/memory/io/SqliteImporter.d.ts.map +1 -1
  104. package/dist/memory/io/SqliteImporter.js +62 -27
  105. package/dist/memory/io/SqliteImporter.js.map +1 -1
  106. package/dist/memory/store/SqliteBrain.d.ts +84 -24
  107. package/dist/memory/store/SqliteBrain.d.ts.map +1 -1
  108. package/dist/memory/store/SqliteBrain.js +139 -55
  109. package/dist/memory/store/SqliteBrain.js.map +1 -1
  110. package/dist/memory/store/SqliteKnowledgeGraph.d.ts +6 -2
  111. package/dist/memory/store/SqliteKnowledgeGraph.d.ts.map +1 -1
  112. package/dist/memory/store/SqliteKnowledgeGraph.js +94 -120
  113. package/dist/memory/store/SqliteKnowledgeGraph.js.map +1 -1
  114. package/dist/memory/store/SqliteMemoryGraph.d.ts +4 -5
  115. package/dist/memory/store/SqliteMemoryGraph.d.ts.map +1 -1
  116. package/dist/memory/store/SqliteMemoryGraph.js +31 -41
  117. package/dist/memory/store/SqliteMemoryGraph.js.map +1 -1
  118. package/dist/memory/tools/MemoryAddTool.d.ts.map +1 -1
  119. package/dist/memory/tools/MemoryAddTool.js +12 -16
  120. package/dist/memory/tools/MemoryAddTool.js.map +1 -1
  121. package/dist/memory/tools/MemoryDeleteTool.d.ts.map +1 -1
  122. package/dist/memory/tools/MemoryDeleteTool.js +1 -3
  123. package/dist/memory/tools/MemoryDeleteTool.js.map +1 -1
  124. package/dist/memory/tools/MemoryMergeTool.d.ts.map +1 -1
  125. package/dist/memory/tools/MemoryMergeTool.js +13 -22
  126. package/dist/memory/tools/MemoryMergeTool.js.map +1 -1
  127. package/dist/memory/tools/MemorySearchTool.js +4 -4
  128. package/dist/memory/tools/MemorySearchTool.js.map +1 -1
  129. package/dist/memory/tools/MemoryUpdateTool.d.ts.map +1 -1
  130. package/dist/memory/tools/MemoryUpdateTool.js +10 -18
  131. package/dist/memory/tools/MemoryUpdateTool.js.map +1 -1
  132. package/dist/orchestration/runtime/LoopController.d.ts +7 -0
  133. package/dist/orchestration/runtime/LoopController.d.ts.map +1 -1
  134. package/dist/orchestration/runtime/LoopController.js +7 -0
  135. package/dist/orchestration/runtime/LoopController.js.map +1 -1
  136. package/package.json +1 -1
@@ -0,0 +1,198 @@
1
+ /**
2
+ * @fileoverview AdaptPersonalityTool — ITool implementation that enables agents
3
+ * to mutate their own HEXACO personality traits at runtime with per-session
4
+ * budget enforcement.
5
+ *
6
+ * @module @framers/agentos/emergent/AdaptPersonalityTool
7
+ *
8
+ * Agents call `adapt_personality` to shift a specific trait dimension (e.g.
9
+ * openness, conscientiousness) by a bounded delta. The tool enforces:
10
+ * - Only valid HEXACO trait names are accepted.
11
+ * - Reasoning must be provided for every mutation (audit trail).
12
+ * - Per-session budgets cap the total absolute delta per trait.
13
+ * - Values are always clamped to the [0, 1] range.
14
+ *
15
+ * All mutations are recorded in the injected {@link PersonalityMutationStore}
16
+ * for durability and downstream analysis.
17
+ */
18
+ // ============================================================================
19
+ // VALID TRAITS
20
+ // ============================================================================
21
+ /**
22
+ * The six HEXACO personality dimensions that agents may self-modify.
23
+ *
24
+ * Each trait is a continuous value in the range [0, 1]:
25
+ * - `openness` — curiosity, creativity, willingness to explore
26
+ * - `conscientiousness` — discipline, thoroughness, reliability
27
+ * - `emotionality` — emotional reactivity, empathy, anxiety
28
+ * - `extraversion` — sociability, energy, assertiveness
29
+ * - `agreeableness` — patience, tolerance, cooperation
30
+ * - `honesty` — sincerity, fairness, modesty
31
+ */
32
+ export const VALID_TRAITS = [
33
+ 'openness',
34
+ 'conscientiousness',
35
+ 'emotionality',
36
+ 'extraversion',
37
+ 'agreeableness',
38
+ 'honesty',
39
+ ];
40
+ // ============================================================================
41
+ // TOOL IMPLEMENTATION
42
+ // ============================================================================
43
+ /**
44
+ * ITool implementation enabling agents to self-modify their HEXACO personality
45
+ * traits within per-session budgets.
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * const tool = new AdaptPersonalityTool({
50
+ * config: { maxDeltaPerSession: 0.3 },
51
+ * mutationStore: myStore,
52
+ * getPersonality: () => agent.personality,
53
+ * setPersonality: (t, v) => { agent.personality[t] = v; },
54
+ * });
55
+ *
56
+ * const result = await tool.execute(
57
+ * { trait: 'openness', delta: 0.1, reasoning: 'User prefers creative responses.' },
58
+ * context,
59
+ * );
60
+ * ```
61
+ */
62
+ export class AdaptPersonalityTool {
63
+ /**
64
+ * Create a new AdaptPersonalityTool.
65
+ *
66
+ * @param deps - Injected dependencies including config, mutation store,
67
+ * and personality getter/setter.
68
+ */
69
+ constructor(deps) {
70
+ /** @inheritdoc */
71
+ this.id = 'com.framers.emergent.adapt-personality';
72
+ /** @inheritdoc */
73
+ this.name = 'adapt_personality';
74
+ /** @inheritdoc */
75
+ this.displayName = 'Adapt Personality';
76
+ /** @inheritdoc */
77
+ this.description = 'Adjust a HEXACO personality trait by a bounded delta. Requires reasoning ' +
78
+ 'for every mutation. Per-session budgets prevent runaway drift.';
79
+ /** @inheritdoc */
80
+ this.category = 'emergent';
81
+ /** @inheritdoc */
82
+ this.hasSideEffects = true;
83
+ /** @inheritdoc */
84
+ this.inputSchema = {
85
+ type: 'object',
86
+ properties: {
87
+ trait: {
88
+ type: 'string',
89
+ enum: [...VALID_TRAITS],
90
+ description: 'The HEXACO personality trait to modify.',
91
+ },
92
+ delta: {
93
+ type: 'number',
94
+ description: 'Signed delta to apply (positive = increase, negative = decrease).',
95
+ },
96
+ reasoning: {
97
+ type: 'string',
98
+ description: 'Why this personality adaptation is warranted.',
99
+ },
100
+ },
101
+ required: ['trait', 'delta', 'reasoning'],
102
+ };
103
+ /** Per-session accumulated |delta| per trait. Reset on tool construction. */
104
+ this.sessionDeltas = new Map();
105
+ this.deps = deps;
106
+ }
107
+ // --------------------------------------------------------------------------
108
+ // EXECUTE
109
+ // --------------------------------------------------------------------------
110
+ /**
111
+ * Apply a personality trait mutation within session budget constraints.
112
+ *
113
+ * @param args - The trait, delta, and reasoning for the mutation.
114
+ * @param _context - Tool execution context (unused but required by ITool).
115
+ * @returns A {@link ToolExecutionResult} wrapping the mutation outcome.
116
+ */
117
+ async execute(args, context) {
118
+ const { trait, delta, reasoning } = args;
119
+ // 1. Validate trait name
120
+ if (!VALID_TRAITS.includes(trait)) {
121
+ return {
122
+ success: false,
123
+ error: `Invalid trait "${trait}". Must be one of: ${VALID_TRAITS.join(', ')}`,
124
+ };
125
+ }
126
+ // 2. Validate reasoning is non-empty
127
+ if (!reasoning || typeof reasoning !== 'string' || reasoning.trim().length === 0) {
128
+ return {
129
+ success: false,
130
+ error: 'reasoning is required and must be a non-empty string',
131
+ };
132
+ }
133
+ if (typeof delta !== 'number' || !Number.isFinite(delta)) {
134
+ return {
135
+ success: false,
136
+ error: 'delta is required and must be a finite number',
137
+ };
138
+ }
139
+ // 3. Check session budget — track total |delta| per trait
140
+ const { maxDeltaPerSession } = this.deps.config;
141
+ const currentSessionTotal = this.sessionDeltas.get(trait) ?? 0;
142
+ const remainingBudget = maxDeltaPerSession - currentSessionTotal;
143
+ // 4. Clamp delta to remaining budget
144
+ let effectiveDelta = delta;
145
+ let clamped = false;
146
+ if (Math.abs(effectiveDelta) > remainingBudget) {
147
+ effectiveDelta = remainingBudget * Math.sign(effectiveDelta);
148
+ clamped = true;
149
+ }
150
+ // If no budget remains, the effective delta is 0
151
+ if (remainingBudget <= 0) {
152
+ effectiveDelta = 0;
153
+ clamped = true;
154
+ }
155
+ // 5. Get current value, compute new value (clamped 0–1), apply
156
+ const personality = this.deps.getPersonality();
157
+ const previousValue = personality[trait] ?? 0.5;
158
+ let newValue = previousValue + effectiveDelta;
159
+ // Clamp to [0, 1] range — may further reduce the effective delta
160
+ if (newValue < 0) {
161
+ newValue = 0;
162
+ effectiveDelta = newValue - previousValue;
163
+ clamped = true;
164
+ }
165
+ else if (newValue > 1) {
166
+ newValue = 1;
167
+ effectiveDelta = newValue - previousValue;
168
+ clamped = true;
169
+ }
170
+ this.deps.setPersonality(trait, newValue);
171
+ // Update session tracking
172
+ const newSessionTotal = currentSessionTotal + Math.abs(effectiveDelta);
173
+ this.sessionDeltas.set(trait, newSessionTotal);
174
+ // 6. Record in mutation store when persistence is enabled.
175
+ if (this.deps.mutationStore) {
176
+ await Promise.resolve(this.deps.mutationStore.record({
177
+ agentId: context.gmiId,
178
+ trait,
179
+ delta: effectiveDelta,
180
+ reasoning,
181
+ baselineValue: previousValue,
182
+ mutatedValue: newValue,
183
+ }));
184
+ }
185
+ // 7. Return result
186
+ const output = {
187
+ trait,
188
+ previousValue,
189
+ newValue,
190
+ delta: effectiveDelta,
191
+ clamped,
192
+ sessionTotal: newSessionTotal,
193
+ remainingBudget: maxDeltaPerSession - newSessionTotal,
194
+ };
195
+ return { success: true, output };
196
+ }
197
+ }
198
+ //# sourceMappingURL=AdaptPersonalityTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdaptPersonalityTool.js","sourceRoot":"","sources":["../../src/emergent/AdaptPersonalityTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * @fileoverview CreateWorkflowTool — ITool implementation that enables agents
3
+ * to compose multi-step tool workflows at runtime and execute them as a unit.
4
+ *
5
+ * @module @framers/agentos/emergent/CreateWorkflowTool
6
+ *
7
+ * Agents call `create_workflow` to define, run, and list workflows. A workflow
8
+ * is a named sequence of tool invocations with reference resolution:
9
+ * - `$input` — the workflow's input argument
10
+ * - `$prev` — the output of the immediately preceding step
11
+ * - `$steps[N]` — the output of the Nth step (zero-indexed)
12
+ *
13
+ * Constraints:
14
+ * - Maximum step count is enforced via `config.maxSteps`.
15
+ * - Only tools from `config.allowedTools` may be used in steps.
16
+ * - Recursive workflow creation is blocked (`create_workflow` cannot appear in steps).
17
+ * - Each step execution has a 30-second timeout enforced via `Promise.race`.
18
+ */
19
+ import type { ITool, ToolExecutionResult, ToolExecutionContext, JSONSchemaObject } from '../core/tools/ITool.js';
20
+ /**
21
+ * A single step in a workflow definition.
22
+ */
23
+ export interface WorkflowStep {
24
+ /** The tool name to invoke for this step. */
25
+ tool: string;
26
+ /** Arguments to pass to the tool (may contain $input, $prev, $steps[N] references). */
27
+ args: Record<string, unknown>;
28
+ }
29
+ /**
30
+ * A stored workflow definition with execution metadata.
31
+ */
32
+ export interface Workflow {
33
+ /** Unique workflow ID. */
34
+ id: string;
35
+ /** Human-readable workflow name. */
36
+ name: string;
37
+ /** Natural language description. */
38
+ description: string;
39
+ /** Ordered list of steps to execute. */
40
+ steps: WorkflowStep[];
41
+ /** ISO-8601 timestamp of creation. */
42
+ createdAt: string;
43
+ /** Number of times this workflow has been run. */
44
+ runCount: number;
45
+ }
46
+ /**
47
+ * Input arguments accepted by the `create_workflow` tool.
48
+ * Discriminated on the `action` field.
49
+ */
50
+ export interface CreateWorkflowInput extends Record<string, any> {
51
+ /** The action to perform: create, run, or list. */
52
+ action: 'create' | 'run' | 'list';
53
+ /** Workflow name (required for create). */
54
+ name?: string;
55
+ /** Workflow description (required for create). */
56
+ description?: string;
57
+ /** Workflow steps (required for create). */
58
+ steps?: WorkflowStep[];
59
+ /** Workflow ID (required for run). */
60
+ workflowId?: string;
61
+ /** Input data passed into the workflow when running. */
62
+ input?: unknown;
63
+ }
64
+ /**
65
+ * Dependencies injected into the {@link CreateWorkflowTool} constructor.
66
+ */
67
+ export interface CreateWorkflowDeps {
68
+ /** Configuration controlling step limits and tool allowlists. */
69
+ config: {
70
+ /** Maximum number of steps allowed in a single workflow. */
71
+ maxSteps: number;
72
+ /** List of tool names that are permitted in workflow steps. */
73
+ allowedTools: string[];
74
+ };
75
+ /** Execute a tool by name with the given arguments. */
76
+ executeTool: (name: string, args: unknown) => Promise<unknown>;
77
+ /** Return the list of all currently available tool names. */
78
+ listTools: () => string[];
79
+ }
80
+ /**
81
+ * ITool implementation enabling agents to compose, execute, and list
82
+ * multi-step tool workflows at runtime.
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * const tool = new CreateWorkflowTool({
87
+ * config: { maxSteps: 10, allowedTools: ['web_search', 'summarize'] },
88
+ * executeTool: (name, args) => orchestrator.execute(name, args),
89
+ * listTools: () => orchestrator.listToolNames(),
90
+ * });
91
+ *
92
+ * // Create a workflow
93
+ * const createResult = await tool.execute({
94
+ * action: 'create',
95
+ * name: 'search-and-summarize',
96
+ * description: 'Search the web and summarize results.',
97
+ * steps: [
98
+ * { tool: 'web_search', args: { query: '$input' } },
99
+ * { tool: 'summarize', args: { text: '$prev' } },
100
+ * ],
101
+ * }, context);
102
+ * ```
103
+ */
104
+ export declare class CreateWorkflowTool implements ITool<CreateWorkflowInput> {
105
+ /** @inheritdoc */
106
+ readonly id = "com.framers.emergent.create-workflow";
107
+ /** @inheritdoc */
108
+ readonly name = "create_workflow";
109
+ /** @inheritdoc */
110
+ readonly displayName = "Create Workflow";
111
+ /** @inheritdoc */
112
+ readonly description: string;
113
+ /** @inheritdoc */
114
+ readonly category = "emergent";
115
+ /** @inheritdoc */
116
+ readonly hasSideEffects = true;
117
+ /** @inheritdoc */
118
+ readonly inputSchema: JSONSchemaObject;
119
+ /** Session-scoped workflow storage. */
120
+ private readonly workflows;
121
+ /** Monotonic counter for generating workflow IDs. */
122
+ private nextId;
123
+ /** Injected dependencies. */
124
+ private readonly deps;
125
+ /**
126
+ * Create a new CreateWorkflowTool.
127
+ *
128
+ * @param deps - Injected dependencies including config, tool executor,
129
+ * and tool lister.
130
+ */
131
+ constructor(deps: CreateWorkflowDeps);
132
+ /**
133
+ * Execute the requested workflow action.
134
+ *
135
+ * @param args - Action type and associated parameters.
136
+ * @param _context - Tool execution context (unused but required by ITool).
137
+ * @returns A {@link ToolExecutionResult} wrapping the action outcome.
138
+ */
139
+ execute(args: CreateWorkflowInput, _context: ToolExecutionContext): Promise<ToolExecutionResult>;
140
+ /**
141
+ * Create and store a new workflow definition.
142
+ *
143
+ * Validates:
144
+ * - Required fields (name, description, steps) are present
145
+ * - Step count does not exceed maxSteps
146
+ * - No step references `create_workflow` (prevent recursion)
147
+ * - All step tools exist in the available tool list
148
+ */
149
+ private handleCreate;
150
+ /**
151
+ * Run a stored workflow, executing steps sequentially with reference resolution.
152
+ *
153
+ * Reference resolution:
154
+ * - `$input` — the workflow's input argument
155
+ * - `$prev` — the output of the immediately preceding step
156
+ * - `$steps[N]` — the output of the Nth step (zero-indexed)
157
+ *
158
+ * Each step has a 30-second timeout enforced via Promise.race.
159
+ */
160
+ private handleRun;
161
+ /**
162
+ * List all stored workflows.
163
+ */
164
+ private handleList;
165
+ /**
166
+ * Resolve `$input`, `$prev`, and `$steps[N]` references in step arguments.
167
+ *
168
+ * Uses JSON.stringify → string replacement → JSON.parse cycle for simple
169
+ * reference resolution. References appearing as standalone string values
170
+ * are replaced with the actual object; references embedded in larger strings
171
+ * are serialized inline.
172
+ *
173
+ * @param args - The step arguments potentially containing references.
174
+ * @param input - The workflow input value.
175
+ * @param prev - The output of the previous step.
176
+ * @param stepResults - Array of all completed step outputs.
177
+ * @returns Resolved arguments with references replaced by actual values.
178
+ */
179
+ private resolveReferences;
180
+ private executeStepWithTimeout;
181
+ }
182
+ //# sourceMappingURL=CreateWorkflowTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateWorkflowTool.d.ts","sourceRoot":"","sources":["../../src/emergent/CreateWorkflowTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EACV,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAMhC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC9D,mDAAmD;IACnD,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAClC,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,MAAM,EAAE;QACN,4DAA4D;QAC5D,QAAQ,EAAE,MAAM,CAAC;QACjB,+DAA+D;QAC/D,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IACF,uDAAuD;IACvD,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,6DAA6D;IAC7D,SAAS,EAAE,MAAM,MAAM,EAAE,CAAC;CAC3B;AAaD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,kBAAmB,YAAW,KAAK,CAAC,mBAAmB,CAAC;IACnE,kBAAkB;IAClB,QAAQ,CAAC,EAAE,0CAA0C;IAErD,kBAAkB;IAClB,QAAQ,CAAC,IAAI,qBAAqB;IAElC,kBAAkB;IAClB,QAAQ,CAAC,WAAW,qBAAqB;IAEzC,kBAAkB;IAClB,QAAQ,CAAC,WAAW,SAEsC;IAE1D,kBAAkB;IAClB,QAAQ,CAAC,QAAQ,cAAc;IAE/B,kBAAkB;IAClB,QAAQ,CAAC,cAAc,QAAQ;IAE/B,kBAAkB;IAClB,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAqCpC;IAEF,uCAAuC;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAE9D,qDAAqD;IACrD,OAAO,CAAC,MAAM,CAAK;IAEnB,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAE1C;;;;;OAKG;gBACS,IAAI,EAAE,kBAAkB;IAQpC;;;;;;OAMG;IACG,OAAO,CACX,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IAoB/B;;;;;;;;OAQG;YACW,YAAY;IAmE1B;;;;;;;;;OASG;YACW,SAAS;IAgDvB;;OAEG;YACW,UAAU;IAiBxB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,iBAAiB;YA4BX,sBAAsB;CA0BrC"}