skyloom 1.14.8 → 1.15.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 (156) hide show
  1. package/.github/workflows/ci.yml +2 -2
  2. package/.github/workflows/publish.yml +51 -4
  3. package/CONVERSION_PLAN.md +191 -191
  4. package/config/default.yaml +46 -43
  5. package/config/models.yaml +928 -155
  6. package/config/providers.yaml +109 -6
  7. package/dist/agents/snow.d.ts +2 -0
  8. package/dist/agents/snow.d.ts.map +1 -1
  9. package/dist/agents/snow.js +36 -5
  10. package/dist/agents/snow.js.map +1 -1
  11. package/dist/cli/loom_chat.d.ts.map +1 -1
  12. package/dist/cli/loom_chat.js +207 -1
  13. package/dist/cli/loom_chat.js.map +1 -1
  14. package/dist/cli/main.js +190 -40
  15. package/dist/cli/main.js.map +1 -1
  16. package/dist/cli/tui.d.ts.map +1 -1
  17. package/dist/cli/tui.js +6 -31
  18. package/dist/cli/tui.js.map +1 -1
  19. package/dist/core/agent.d.ts +6 -4
  20. package/dist/core/agent.d.ts.map +1 -1
  21. package/dist/core/agent.js +61 -20
  22. package/dist/core/agent.js.map +1 -1
  23. package/dist/core/catalog.d.ts.map +1 -1
  24. package/dist/core/catalog.js +30 -9
  25. package/dist/core/catalog.js.map +1 -1
  26. package/dist/core/commands.d.ts +110 -0
  27. package/dist/core/commands.d.ts.map +1 -0
  28. package/dist/core/commands.js +633 -0
  29. package/dist/core/commands.js.map +1 -0
  30. package/dist/core/concurrency.d.ts +38 -0
  31. package/dist/core/concurrency.d.ts.map +1 -0
  32. package/dist/core/concurrency.js +65 -0
  33. package/dist/core/concurrency.js.map +1 -0
  34. package/dist/core/factory.js +16 -16
  35. package/dist/core/file_checkpoint.d.ts +9 -0
  36. package/dist/core/file_checkpoint.d.ts.map +1 -1
  37. package/dist/core/file_checkpoint.js +33 -1
  38. package/dist/core/file_checkpoint.js.map +1 -1
  39. package/dist/core/llm.d.ts.map +1 -1
  40. package/dist/core/llm.js +66 -13
  41. package/dist/core/llm.js.map +1 -1
  42. package/dist/core/memory.js +51 -51
  43. package/dist/core/schemas.d.ts +16 -0
  44. package/dist/core/schemas.d.ts.map +1 -1
  45. package/dist/core/schemas.js +32 -0
  46. package/dist/core/schemas.js.map +1 -1
  47. package/dist/core/security.d.ts.map +1 -1
  48. package/dist/core/security.js +27 -0
  49. package/dist/core/security.js.map +1 -1
  50. package/dist/core/skymd.js +14 -14
  51. package/dist/core/trace.d.ts +105 -0
  52. package/dist/core/trace.d.ts.map +1 -0
  53. package/dist/core/trace.js +213 -0
  54. package/dist/core/trace.js.map +1 -0
  55. package/dist/tools/builtin.d.ts +2 -6
  56. package/dist/tools/builtin.d.ts.map +1 -1
  57. package/dist/tools/builtin.js +18 -111
  58. package/dist/tools/builtin.js.map +1 -1
  59. package/dist/tools/extra.d.ts +13 -0
  60. package/dist/tools/extra.d.ts.map +1 -0
  61. package/dist/tools/extra.js +827 -0
  62. package/dist/tools/extra.js.map +1 -0
  63. package/dist/tools/guards.d.ts +12 -0
  64. package/dist/tools/guards.d.ts.map +1 -0
  65. package/dist/tools/guards.js +143 -0
  66. package/dist/tools/guards.js.map +1 -0
  67. package/dist/tools/model_tool.d.ts.map +1 -1
  68. package/dist/tools/model_tool.js +24 -4
  69. package/dist/tools/model_tool.js.map +1 -1
  70. package/dist/web/markdown.d.ts +32 -0
  71. package/dist/web/markdown.d.ts.map +1 -0
  72. package/dist/web/markdown.js +202 -0
  73. package/dist/web/markdown.js.map +1 -0
  74. package/dist/web/server.d.ts +4 -0
  75. package/dist/web/server.d.ts.map +1 -1
  76. package/dist/web/server.js +14 -582
  77. package/dist/web/server.js.map +1 -1
  78. package/dist/web/ui.d.ts +31 -0
  79. package/dist/web/ui.d.ts.map +1 -0
  80. package/dist/web/ui.js +1009 -0
  81. package/dist/web/ui.js.map +1 -0
  82. package/docs/AESTHETIC_DESIGN.md +152 -152
  83. package/docs/OPTIMIZATION_PLAN.md +178 -178
  84. package/package.json +1 -1
  85. package/src/agents/snow.ts +38 -5
  86. package/src/cli/commands_md.ts +112 -112
  87. package/src/cli/input_macros.ts +83 -83
  88. package/src/cli/loom.ts +1041 -1041
  89. package/src/cli/loom_chat.ts +772 -603
  90. package/src/cli/main.ts +853 -723
  91. package/src/cli/tui.ts +264 -289
  92. package/src/core/agent/guard.ts +133 -133
  93. package/src/core/agent/task.ts +100 -100
  94. package/src/core/agent.ts +1630 -1590
  95. package/src/core/agent_helpers.ts +500 -500
  96. package/src/core/bus.ts +221 -221
  97. package/src/core/cache.ts +153 -153
  98. package/src/core/catalog.ts +199 -178
  99. package/src/core/circuit_breaker.ts +119 -119
  100. package/src/core/commands.ts +704 -0
  101. package/src/core/concurrency.ts +73 -0
  102. package/src/core/config.ts +365 -365
  103. package/src/core/constants.ts +95 -95
  104. package/src/core/factory.ts +656 -656
  105. package/src/core/file_checkpoint.ts +163 -136
  106. package/src/core/hooks.ts +126 -126
  107. package/src/core/llm.ts +972 -915
  108. package/src/core/logger.ts +143 -143
  109. package/src/core/mcp.ts +1001 -1001
  110. package/src/core/memory.ts +1201 -1201
  111. package/src/core/middleware.ts +350 -350
  112. package/src/core/model_config.ts +159 -159
  113. package/src/core/pipelines.ts +424 -424
  114. package/src/core/schemas.ts +319 -282
  115. package/src/core/security.ts +27 -0
  116. package/src/core/semantic.ts +211 -211
  117. package/src/core/skill.ts +384 -384
  118. package/src/core/skymd.ts +143 -143
  119. package/src/core/theme.ts +65 -65
  120. package/src/core/tool.ts +457 -457
  121. package/src/core/trace.ts +236 -0
  122. package/src/core/verify.ts +71 -71
  123. package/src/plugins/loader.ts +91 -91
  124. package/src/skills/loader.ts +75 -75
  125. package/src/tools/builtin.ts +571 -642
  126. package/src/tools/computer.ts +279 -279
  127. package/src/tools/extra.ts +662 -0
  128. package/src/tools/guards.ts +82 -0
  129. package/src/tools/model_tool.ts +93 -74
  130. package/src/tools/todo.ts +76 -76
  131. package/src/web/markdown.ts +193 -0
  132. package/src/web/server.ts +117 -693
  133. package/src/web/ui.ts +949 -0
  134. package/tests/agent.test.ts +211 -159
  135. package/tests/agent_helpers.test.ts +48 -48
  136. package/tests/catalog.test.ts +86 -86
  137. package/tests/checkpoint_commands.test.ts +124 -124
  138. package/tests/claude_compat.test.ts +110 -110
  139. package/tests/commands.test.ts +103 -0
  140. package/tests/concurrency.test.ts +102 -0
  141. package/tests/config.test.ts +41 -41
  142. package/tests/extra_tools.test.ts +212 -0
  143. package/tests/fence_plugin.test.ts +52 -52
  144. package/tests/guard.test.ts +75 -75
  145. package/tests/loom.test.ts +337 -337
  146. package/tests/memory.test.ts +170 -170
  147. package/tests/model_config.test.ts +109 -109
  148. package/tests/skymd.test.ts +146 -146
  149. package/tests/ssrf.test.ts +38 -38
  150. package/tests/structured_retry.test.ts +87 -0
  151. package/tests/task.test.ts +60 -60
  152. package/tests/todo_toolstats.test.ts +94 -94
  153. package/tests/trace.test.ts +128 -0
  154. package/tests/tui.test.ts +67 -67
  155. package/tests/web.test.ts +169 -0
  156. package/tsconfig.json +38 -38
@@ -135,16 +135,16 @@ class Memory {
135
135
  this.db.run('PRAGMA journal_mode = MEMORY');
136
136
  this.db.run('PRAGMA busy_timeout = 100');
137
137
  // Create tables
138
- this.db.run(`
139
- CREATE TABLE IF NOT EXISTS memories (
140
- id INTEGER PRIMARY KEY AUTOINCREMENT,
141
- agent TEXT NOT NULL,
142
- key TEXT NOT NULL,
143
- value TEXT NOT NULL,
144
- category TEXT DEFAULT 'general',
145
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
146
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
147
- )
138
+ this.db.run(`
139
+ CREATE TABLE IF NOT EXISTS memories (
140
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
141
+ agent TEXT NOT NULL,
142
+ key TEXT NOT NULL,
143
+ value TEXT NOT NULL,
144
+ category TEXT DEFAULT 'general',
145
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
146
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
147
+ )
148
148
  `);
149
149
  // Migrate existing DBs
150
150
  try {
@@ -168,19 +168,19 @@ class Memory {
168
168
  }
169
169
  this.db.run('CREATE UNIQUE INDEX IF NOT EXISTS idx_agent_key ON memories(agent, key)');
170
170
  this.db.run('CREATE INDEX IF NOT EXISTS idx_agent_category ON memories(agent, category)');
171
- this.db.run(`
172
- CREATE TABLE IF NOT EXISTS messages (
173
- id INTEGER PRIMARY KEY AUTOINCREMENT,
174
- agent TEXT NOT NULL,
175
- role TEXT NOT NULL,
176
- content TEXT NOT NULL,
177
- name TEXT,
178
- tool_call_id TEXT,
179
- tool_calls TEXT,
180
- reasoning_content TEXT,
181
- session_id TEXT,
182
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
183
- )
171
+ this.db.run(`
172
+ CREATE TABLE IF NOT EXISTS messages (
173
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
174
+ agent TEXT NOT NULL,
175
+ role TEXT NOT NULL,
176
+ content TEXT NOT NULL,
177
+ name TEXT,
178
+ tool_call_id TEXT,
179
+ tool_calls TEXT,
180
+ reasoning_content TEXT,
181
+ session_id TEXT,
182
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
183
+ )
184
184
  `);
185
185
  this.db.run('CREATE INDEX IF NOT EXISTS idx_messages_agent ON messages(agent, created_at)');
186
186
  try {
@@ -201,26 +201,26 @@ class Memory {
201
201
  catch {
202
202
  // Column already exists
203
203
  }
204
- this.db.run(`
205
- CREATE TABLE IF NOT EXISTS sessions (
206
- id TEXT PRIMARY KEY,
207
- agent TEXT NOT NULL,
208
- name TEXT,
209
- preview TEXT DEFAULT '',
210
- message_count INTEGER DEFAULT 0,
211
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
212
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
213
- )
204
+ this.db.run(`
205
+ CREATE TABLE IF NOT EXISTS sessions (
206
+ id TEXT PRIMARY KEY,
207
+ agent TEXT NOT NULL,
208
+ name TEXT,
209
+ preview TEXT DEFAULT '',
210
+ message_count INTEGER DEFAULT 0,
211
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
212
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
213
+ )
214
214
  `);
215
215
  this.db.run('CREATE INDEX IF NOT EXISTS idx_sessions_agent ON sessions(agent, updated_at DESC)');
216
- this.db.run(`
217
- CREATE TABLE IF NOT EXISTS working_data (
218
- agent TEXT NOT NULL,
219
- key TEXT NOT NULL,
220
- value TEXT NOT NULL,
221
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
222
- PRIMARY KEY (agent, key)
223
- )
216
+ this.db.run(`
217
+ CREATE TABLE IF NOT EXISTS working_data (
218
+ agent TEXT NOT NULL,
219
+ key TEXT NOT NULL,
220
+ value TEXT NOT NULL,
221
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
222
+ PRIMARY KEY (agent, key)
223
+ )
224
224
  `);
225
225
  this.loadShortTerm();
226
226
  this.loadWorking();
@@ -319,9 +319,9 @@ class Memory {
319
319
  }
320
320
  let rows = [];
321
321
  if (this.activeSession) {
322
- rows = this.dbAll(`SELECT role, content, name, tool_call_id, tool_calls, reasoning_content, created_at
323
- FROM messages
324
- WHERE agent = ? AND session_id = ?
322
+ rows = this.dbAll(`SELECT role, content, name, tool_call_id, tool_calls, reasoning_content, created_at
323
+ FROM messages
324
+ WHERE agent = ? AND session_id = ?
325
325
  ORDER BY id DESC LIMIT ?`, [this.agentName, this.activeSession, this.config.shortTermLimit]);
326
326
  }
327
327
  else {
@@ -557,7 +557,7 @@ class Memory {
557
557
  return;
558
558
  }
559
559
  try {
560
- this.dbRun(`INSERT INTO messages (agent, role, content, name, tool_call_id, tool_calls, reasoning_content, session_id)
560
+ this.dbRun(`INSERT INTO messages (agent, role, content, name, tool_call_id, tool_calls, reasoning_content, session_id)
561
561
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [this.agentName, role, content, name, toolCallId, toolCalls, reasoningContent, sessionId]);
562
562
  if (sessionId) {
563
563
  this.dbRun('UPDATE sessions SET message_count = message_count + 1, updated_at = CURRENT_TIMESTAMP WHERE id = ?', [sessionId]);
@@ -568,9 +568,9 @@ class Memory {
568
568
  const row = this.dbGet('SELECT COUNT(*) as count FROM messages WHERE agent = ? AND session_id = ? AND role != ?', [this.agentName, sessionId, 'system']);
569
569
  if (row && row.count > maxPersisted) {
570
570
  const excess = row.count - maxPersisted;
571
- this.dbRun(`DELETE FROM messages WHERE id IN (
572
- SELECT id FROM messages WHERE agent = ? AND session_id = ? AND role != ?
573
- ORDER BY id ASC LIMIT ?
571
+ this.dbRun(`DELETE FROM messages WHERE id IN (
572
+ SELECT id FROM messages WHERE agent = ? AND session_id = ? AND role != ?
573
+ ORDER BY id ASC LIMIT ?
574
574
  )`, [this.agentName, sessionId, 'system', excess]);
575
575
  }
576
576
  }
@@ -704,7 +704,7 @@ class Memory {
704
704
  if (!this.db) {
705
705
  return;
706
706
  }
707
- this.dbRun(`INSERT INTO memories (agent, key, value, category) VALUES (?, ?, ?, ?)
707
+ this.dbRun(`INSERT INTO memories (agent, key, value, category) VALUES (?, ?, ?, ?)
708
708
  ON CONFLICT(agent, key) DO UPDATE SET value = excluded.value, category = excluded.category, updated_at = CURRENT_TIMESTAMP`, [this.agentName, key, JSON.stringify(value), category]);
709
709
  }
710
710
  /**
@@ -783,8 +783,8 @@ class Memory {
783
783
  params.push(pattern, pattern);
784
784
  }
785
785
  params.push(limit * 2);
786
- const sql = `SELECT key, value, category, updated_at FROM memories
787
- WHERE agent = ? AND (${likeClauses})
786
+ const sql = `SELECT key, value, category, updated_at FROM memories
787
+ WHERE agent = ? AND (${likeClauses})
788
788
  ORDER BY updated_at DESC LIMIT ?`;
789
789
  const rows = this.dbAll(sql, params);
790
790
  for (const r of rows) {
@@ -79,4 +79,20 @@ export declare function validateTaskPlan(data: unknown): TaskPlanSchema;
79
79
  * Validate extraction result schema
80
80
  */
81
81
  export declare function validateExtractionResult(data: unknown): ExtractionResultSchema;
82
+ /**
83
+ * Ask an LLM for structured output and validate it, retrying with the parse
84
+ * error fed back as a correction when it comes back malformed — the pattern
85
+ * every production agent framework uses (LangGraph structured output, Pydantic
86
+ * AI, OpenAI Agents SDK output types). Without it, a single bad JSON response
87
+ * silently degrades the run (e.g. a multi-step plan collapses to one task).
88
+ *
89
+ * `ask(priorError, attempt)` produces the raw model text; on a retry it receives
90
+ * the previous validation error so the caller can append a correction to the
91
+ * prompt. `parse` must THROW (ideally SchemaValidationError) on invalid input.
92
+ * Returns the first valid value, or throws after exhausting `retries`.
93
+ */
94
+ export declare function parseWithRetry<T>(ask: (priorError: string | null, attempt: number) => Promise<string>, parse: (raw: string) => T, opts?: {
95
+ retries?: number;
96
+ onRetry?: (attempt: number, error: string) => void;
97
+ }): Promise<T>;
82
98
  //# sourceMappingURL=schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,GAAG,EAAE,MAAM,CAAC;gBAEA,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAW;CAK9C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAuFD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,UAAU,CAAC,GACvB,CAAC,CAuBH;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CA4C9D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,sBAAsB,CA+B9E"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,GAAG,EAAE,MAAM,CAAC;gBAEA,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAW;CAK9C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAuFD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,UAAU,CAAC,GACvB,CAAC,CAuBH;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CA4C9D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,sBAAsB,CA+B9E;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EACpE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,EACzB,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAC9E,OAAO,CAAC,CAAC,CAAC,CAeZ"}
@@ -15,6 +15,7 @@ exports.SchemaValidationError = void 0;
15
15
  exports.parseSchema = parseSchema;
16
16
  exports.validateTaskPlan = validateTaskPlan;
17
17
  exports.validateExtractionResult = validateExtractionResult;
18
+ exports.parseWithRetry = parseWithRetry;
18
19
  /**
19
20
  * Error raised when an LLM response fails schema validation.
20
21
  * Carries both a human-readable message and the raw text so callers
@@ -197,4 +198,35 @@ function validateExtractionResult(data) {
197
198
  });
198
199
  return { facts };
199
200
  }
201
+ /* ════════════════════════════════════════
202
+ Structured-output retry
203
+ ════════════════════════════════════════ */
204
+ /**
205
+ * Ask an LLM for structured output and validate it, retrying with the parse
206
+ * error fed back as a correction when it comes back malformed — the pattern
207
+ * every production agent framework uses (LangGraph structured output, Pydantic
208
+ * AI, OpenAI Agents SDK output types). Without it, a single bad JSON response
209
+ * silently degrades the run (e.g. a multi-step plan collapses to one task).
210
+ *
211
+ * `ask(priorError, attempt)` produces the raw model text; on a retry it receives
212
+ * the previous validation error so the caller can append a correction to the
213
+ * prompt. `parse` must THROW (ideally SchemaValidationError) on invalid input.
214
+ * Returns the first valid value, or throws after exhausting `retries`.
215
+ */
216
+ async function parseWithRetry(ask, parse, opts) {
217
+ const retries = Math.max(0, opts?.retries ?? 2);
218
+ let lastError = "";
219
+ for (let attempt = 0; attempt <= retries; attempt++) {
220
+ const raw = await ask(attempt === 0 ? null : lastError, attempt);
221
+ try {
222
+ return parse(raw);
223
+ }
224
+ catch (e) {
225
+ lastError = e instanceof Error ? e.message : String(e);
226
+ if (attempt < retries)
227
+ opts?.onRetry?.(attempt + 1, lastError);
228
+ }
229
+ }
230
+ throw new SchemaValidationError(`structured output still invalid after ${retries + 1} attempt(s): ${lastError}`);
231
+ }
200
232
  //# sourceMappingURL=schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/core/security.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,oBAAY,WAAW;IACrB,iDAAiD;IACjD,IAAI,IAAI;IACR,kEAAkE;IAClE,GAAG,IAAI;IACP,sEAAsE;IACtE,MAAM,IAAI;IACV,6DAA6D;IAC7D,IAAI,IAAI;IACR,yDAAyD;IACzD,QAAQ,IAAI;CACb;AAKD,QAAA,MAAM,gBAAgB,UAMrB,CAAC;AAEF,QAAA,MAAM,gBAAgB,UAGrB,CAAC;AAyDF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,qBAAa,eAAe;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAM;IAC5B,WAAW,SAAK;IAChB,iBAAiB,SAAK;IACtB,mBAAmB,SAAK;IACxB,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAU;IAEhE,OAAO,CAAC,gBAAgB,CAAoG;gBAEhH,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC;QAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE;IAK9J,2EAA2E;IAC3E,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAI7C,sEAAsE;IACtE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI;IAYxE,8EAA8E;IACxE,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAsC/G,6BAA6B;IAC7B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAsBlL,8BAA8B;IAC9B,QAAQ;;;;;;;;;;;;;;IAiBR,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC;CAG1G;AAKD,wBAAgB,WAAW,IAAI,eAAe,CAG7C;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,qEAAqE;AACrE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/core/security.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,oBAAY,WAAW;IACrB,iDAAiD;IACjD,IAAI,IAAI;IACR,kEAAkE;IAClE,GAAG,IAAI;IACP,sEAAsE;IACtE,MAAM,IAAI;IACV,6DAA6D;IAC7D,IAAI,IAAI;IACR,yDAAyD;IACzD,QAAQ,IAAI;CACb;AAKD,QAAA,MAAM,gBAAgB,UAMrB,CAAC;AAEF,QAAA,MAAM,gBAAgB,UAGrB,CAAC;AAoFF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,qBAAa,eAAe;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAM;IAC5B,WAAW,SAAK;IAChB,iBAAiB,SAAK;IACtB,mBAAmB,SAAK;IACxB,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAU;IAEhE,OAAO,CAAC,gBAAgB,CAAoG;gBAEhH,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC;QAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE;IAK9J,2EAA2E;IAC3E,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAI7C,sEAAsE;IACtE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI;IAYxE,8EAA8E;IACxE,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAsC/G,6BAA6B;IAC7B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAsBlL,8BAA8B;IAC9B,QAAQ;;;;;;;;;;;;;;IAiBR,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC;CAG1G;AAKD,wBAAgB,WAAW,IAAI,eAAe,CAG7C;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,qEAAqE;AACrE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -61,10 +61,33 @@ const TOOL_DANGER_MAP = {
61
61
  list_skills: DangerLevel.SAFE,
62
62
  recall_facts: DangerLevel.SAFE,
63
63
  mcp_list_servers: DangerLevel.SAFE,
64
+ // read-only introspection (extra.ts)
65
+ file_info: DangerLevel.SAFE,
66
+ hash: DangerLevel.SAFE,
67
+ base64: DangerLevel.SAFE,
68
+ json_query: DangerLevel.SAFE,
69
+ dns_lookup: DangerLevel.SAFE,
70
+ port_check: DangerLevel.SAFE,
71
+ env_get: DangerLevel.SAFE,
72
+ disk_usage: DangerLevel.SAFE,
73
+ clipboard_read: DangerLevel.SAFE,
74
+ which: DangerLevel.SAFE,
75
+ diff_files: DangerLevel.SAFE,
76
+ uuid: DangerLevel.SAFE,
77
+ random_string: DangerLevel.SAFE,
78
+ current_time: DangerLevel.SAFE,
64
79
  write_file: DangerLevel.LOW,
65
80
  edit_file: DangerLevel.LOW,
66
81
  copy_file: DangerLevel.LOW,
67
82
  move_file: DangerLevel.LOW,
83
+ make_directory: DangerLevel.LOW,
84
+ append_file: DangerLevel.LOW,
85
+ replace_in_file: DangerLevel.LOW,
86
+ sqlite_query: DangerLevel.LOW,
87
+ gzip_file: DangerLevel.LOW,
88
+ gunzip_file: DangerLevel.LOW,
89
+ clipboard_write: DangerLevel.LOW,
90
+ git_branch: DangerLevel.LOW,
68
91
  http_get: DangerLevel.LOW,
69
92
  fetch_page: DangerLevel.LOW,
70
93
  web_search: DangerLevel.LOW,
@@ -76,6 +99,8 @@ const TOOL_DANGER_MAP = {
76
99
  git_commit: DangerLevel.MEDIUM,
77
100
  git_checkout: DangerLevel.MEDIUM,
78
101
  http_post: DangerLevel.MEDIUM,
102
+ http_request: DangerLevel.MEDIUM,
103
+ download_file: DangerLevel.MEDIUM,
79
104
  mcp_add_server: DangerLevel.MEDIUM,
80
105
  mcp_remove_server: DangerLevel.MEDIUM,
81
106
  launch_app: DangerLevel.MEDIUM,
@@ -87,6 +112,8 @@ const TOOL_DANGER_MAP = {
87
112
  package_manager: DangerLevel.HIGH,
88
113
  service_control: DangerLevel.HIGH,
89
114
  delegate_to: DangerLevel.HIGH,
115
+ git_push: DangerLevel.HIGH,
116
+ git_pull: DangerLevel.HIGH,
90
117
  mcp_scaffold_server: DangerLevel.HIGH,
91
118
  };
92
119
  /* ═══════════════════════════════════════
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/core/security.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/core/security.ts"],"names":[],"mappings":"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"}
@@ -109,11 +109,11 @@ function loadProjectMemory(cwd = process.cwd()) {
109
109
  text = text.slice(0, MAX_MEMORY_CHARS) + '\n…[truncated]';
110
110
  return { text, files };
111
111
  }
112
- const SKY_MD_HEADER = `# SKY.md — 项目记忆
113
-
114
- > Skyloom agents 启动时自动加载本文件。写团队约定、构建/测试命令、代码风格。
115
- > 对话中输入 \`#内容\` 可快速追加一条。
116
-
112
+ const SKY_MD_HEADER = `# SKY.md — 项目记忆
113
+
114
+ > Skyloom agents 启动时自动加载本文件。写团队约定、构建/测试命令、代码风格。
115
+ > 对话中输入 \`#内容\` 可快速追加一条。
116
+
117
117
  `;
118
118
  /**
119
119
  * Append a one-line note (the \`#\` quick-memory flow).
@@ -164,14 +164,14 @@ function parseVerifyCommands(memoryText) {
164
164
  return cmds;
165
165
  }
166
166
  /** The prompt behind /init — asks the agent to study the repo and write SKY.md. */
167
- exports.INIT_PROMPT = `请为当前项目生成一份 SKY.md 项目记忆文件(如已存在则改进它):
168
-
169
- 1. 用工具调研项目:读 README、package.json/pyproject.toml/Cargo.toml 等清单文件,list_directory 看结构,必要时读关键入口源码
170
- 2. 写出一份**短而精**的 SKY.md(每一行都占用所有 agent 的上下文,宁缺毋滥),包含:
171
- - 项目一句话定位与技术栈
172
- - 构建/测试/lint 命令(放在 "## Verify" 小节的代码块里,agents 会用它自动验证)
173
- - 目录结构要点(只列关键目录)
174
- - 代码风格与硬性约束(如「禁止 any」「提交信息格式」)
175
- 3. 用 write_file 写到项目根目录 SKY.md
167
+ exports.INIT_PROMPT = `请为当前项目生成一份 SKY.md 项目记忆文件(如已存在则改进它):
168
+
169
+ 1. 用工具调研项目:读 README、package.json/pyproject.toml/Cargo.toml 等清单文件,list_directory 看结构,必要时读关键入口源码
170
+ 2. 写出一份**短而精**的 SKY.md(每一行都占用所有 agent 的上下文,宁缺毋滥),包含:
171
+ - 项目一句话定位与技术栈
172
+ - 构建/测试/lint 命令(放在 "## Verify" 小节的代码块里,agents 会用它自动验证)
173
+ - 目录结构要点(只列关键目录)
174
+ - 代码风格与硬性约束(如「禁止 any」「提交信息格式」)
175
+ 3. 用 write_file 写到项目根目录 SKY.md
176
176
  4. 最后简要汇报你写了什么`;
177
177
  //# sourceMappingURL=skymd.js.map
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Run tracing — span-based observability for the agent loop.
3
+ *
4
+ * Every leading agent framework (LangGraph/LangSmith, AutoGen, OpenAI Agents
5
+ * SDK) exposes a hierarchical trace of a run: the turn, the LLM calls inside it,
6
+ * the tool calls inside those, each with timing, token/cost accounting and
7
+ * ok/error status. Skyloom logged these as flat, uncorrelated JSON lines, so a
8
+ * latency spike or cost blowup couldn't be attributed to a step.
9
+ *
10
+ * This module is a dependency-free, in-process tracer:
11
+ * - a `Trace` is one turn; it holds a flat list of `Span`s linked by parentId
12
+ * - the `Tracer` keeps the active trace + a span stack, and a ring buffer of
13
+ * recently-finished traces for `/trace` and programmatic inspection
14
+ * - it is pure and clock-injectable, so it is fully unit-testable
15
+ *
16
+ * It never throws into the caller: a disabled tracer hands back no-op handles,
17
+ * and finishing a span/trace is idempotent.
18
+ */
19
+ export type SpanKind = 'turn' | 'llm' | 'tool' | 'orchestration' | 'task' | 'recall' | 'other';
20
+ export type SpanStatus = 'running' | 'ok' | 'error';
21
+ export interface Span {
22
+ id: string;
23
+ parentId: string | null;
24
+ name: string;
25
+ kind: SpanKind;
26
+ startMs: number;
27
+ endMs: number | null;
28
+ status: SpanStatus;
29
+ /** free-form: tokens, cost, model, tool args preview, error message, … */
30
+ attrs: Record<string, any>;
31
+ }
32
+ export interface Trace {
33
+ traceId: string;
34
+ label: string;
35
+ agent: string;
36
+ startMs: number;
37
+ endMs: number | null;
38
+ spans: Span[];
39
+ }
40
+ export interface TraceTotals {
41
+ durationMs: number;
42
+ spans: number;
43
+ llmCalls: number;
44
+ toolCalls: number;
45
+ errors: number;
46
+ promptTokens: number;
47
+ completionTokens: number;
48
+ totalTokens: number;
49
+ cost: number;
50
+ }
51
+ /** A handle to one open span. `end()` is idempotent; child spans nest under it. */
52
+ export declare class SpanHandle {
53
+ private tracer;
54
+ readonly span: Span | null;
55
+ constructor(tracer: Tracer | null, span: Span | null);
56
+ /** Merge attributes into the span (e.g. token usage learned mid-flight). */
57
+ set(attrs: Record<string, any>): this;
58
+ /** Finish the span. Safe to call more than once. */
59
+ end(status?: SpanStatus, attrs?: Record<string, any>): void;
60
+ }
61
+ export declare class Tracer {
62
+ enabled: boolean;
63
+ private now;
64
+ private maxFinished;
65
+ private active;
66
+ private stack;
67
+ private finished;
68
+ constructor(opts?: {
69
+ now?: () => number;
70
+ maxFinished?: number;
71
+ enabled?: boolean;
72
+ });
73
+ /** Begin a trace (one turn). Returns the root span handle. */
74
+ startTrace(label: string, agent?: string): SpanHandle;
75
+ /**
76
+ * Open a child span under the current span (or the root).
77
+ * `leaf: true` attaches the span to the current parent but does NOT push it
78
+ * onto the nesting stack — use it for work that runs concurrently (e.g. tools
79
+ * executed in parallel), so siblings don't accidentally nest under each other.
80
+ */
81
+ startSpan(name: string, kind: SpanKind, attrs?: Record<string, any>, opts?: {
82
+ leaf?: boolean;
83
+ }): SpanHandle;
84
+ /** @internal — used by SpanHandle.end(). Idempotent. */
85
+ _endSpan(span: Span, status: SpanStatus, attrs?: Record<string, any>): void;
86
+ /** Finalize the active trace, closing any still-open spans, and archive it. */
87
+ endTrace(): Trace | null;
88
+ /** The most recently finished trace (or the active one if none finished). */
89
+ last(): Trace | null;
90
+ /** Recent finished traces, newest last. */
91
+ recent(n?: number): Trace[];
92
+ clear(): void;
93
+ }
94
+ /** Sum token/cost/status across a trace's spans. */
95
+ export declare function traceTotals(trace: Trace): TraceTotals;
96
+ /**
97
+ * Render a trace as an indented tree. `color`/`dim`/`ok`/`err` are optional
98
+ * stylers (so the TUI can pass chalk; tests get plain text).
99
+ */
100
+ export declare function renderTrace(trace: Trace, style?: {
101
+ dim?: (s: string) => string;
102
+ ok?: (s: string) => string;
103
+ err?: (s: string) => string;
104
+ }): string;
105
+ //# sourceMappingURL=trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/core/trace.ts"],"names":[],"mappings":"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"}