@shardworks/nexus-core 0.1.99 → 0.1.101

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 (166) hide show
  1. package/README.md +95 -166
  2. package/dist/guild-config.d.ts +14 -52
  3. package/dist/guild-config.d.ts.map +1 -1
  4. package/dist/guild-config.js +7 -10
  5. package/dist/guild-config.js.map +1 -1
  6. package/dist/guild.d.ts +83 -0
  7. package/dist/guild.d.ts.map +1 -0
  8. package/dist/guild.js +45 -0
  9. package/dist/guild.js.map +1 -0
  10. package/dist/id.d.ts +14 -0
  11. package/dist/id.d.ts.map +1 -0
  12. package/dist/id.js +19 -0
  13. package/dist/id.js.map +1 -0
  14. package/dist/index.d.ts +6 -30
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +7 -32
  17. package/dist/index.js.map +1 -1
  18. package/dist/nexus-home.d.ts +0 -4
  19. package/dist/nexus-home.d.ts.map +1 -1
  20. package/dist/nexus-home.js +1 -9
  21. package/dist/nexus-home.js.map +1 -1
  22. package/dist/plugin.d.ts +115 -0
  23. package/dist/plugin.d.ts.map +1 -0
  24. package/dist/plugin.js +39 -0
  25. package/dist/plugin.js.map +1 -0
  26. package/dist/resolve-package.d.ts +58 -0
  27. package/dist/resolve-package.d.ts.map +1 -0
  28. package/dist/resolve-package.js +123 -0
  29. package/dist/resolve-package.js.map +1 -0
  30. package/package.json +5 -14
  31. package/dist/book.d.ts +0 -110
  32. package/dist/book.d.ts.map +0 -1
  33. package/dist/book.js +0 -16
  34. package/dist/book.js.map +0 -1
  35. package/dist/legacy/1/anima.d.ts +0 -79
  36. package/dist/legacy/1/anima.d.ts.map +0 -1
  37. package/dist/legacy/1/anima.js +0 -285
  38. package/dist/legacy/1/anima.js.map +0 -1
  39. package/dist/legacy/1/audit.d.ts +0 -23
  40. package/dist/legacy/1/audit.d.ts.map +0 -1
  41. package/dist/legacy/1/audit.js +0 -61
  42. package/dist/legacy/1/audit.js.map +0 -1
  43. package/dist/legacy/1/bundle.d.ts +0 -111
  44. package/dist/legacy/1/bundle.d.ts.map +0 -1
  45. package/dist/legacy/1/bundle.js +0 -452
  46. package/dist/legacy/1/bundle.js.map +0 -1
  47. package/dist/legacy/1/clock-daemon.d.ts +0 -2
  48. package/dist/legacy/1/clock-daemon.d.ts.map +0 -1
  49. package/dist/legacy/1/clock-daemon.js +0 -72
  50. package/dist/legacy/1/clock-daemon.js.map +0 -1
  51. package/dist/legacy/1/clockworks.d.ts +0 -98
  52. package/dist/legacy/1/clockworks.d.ts.map +0 -1
  53. package/dist/legacy/1/clockworks.js +0 -359
  54. package/dist/legacy/1/clockworks.js.map +0 -1
  55. package/dist/legacy/1/conversation.d.ts +0 -165
  56. package/dist/legacy/1/conversation.d.ts.map +0 -1
  57. package/dist/legacy/1/conversation.js +0 -457
  58. package/dist/legacy/1/conversation.js.map +0 -1
  59. package/dist/legacy/1/engine.d.ts +0 -90
  60. package/dist/legacy/1/engine.d.ts.map +0 -1
  61. package/dist/legacy/1/engine.js +0 -89
  62. package/dist/legacy/1/engine.js.map +0 -1
  63. package/dist/legacy/1/events.d.ts +0 -88
  64. package/dist/legacy/1/events.d.ts.map +0 -1
  65. package/dist/legacy/1/events.js +0 -239
  66. package/dist/legacy/1/events.js.map +0 -1
  67. package/dist/legacy/1/guild-config.d.ts +0 -74
  68. package/dist/legacy/1/guild-config.d.ts.map +0 -1
  69. package/dist/legacy/1/guild-config.js +0 -51
  70. package/dist/legacy/1/guild-config.js.map +0 -1
  71. package/dist/legacy/1/id.d.ts +0 -8
  72. package/dist/legacy/1/id.d.ts.map +0 -1
  73. package/dist/legacy/1/id.js +0 -27
  74. package/dist/legacy/1/id.js.map +0 -1
  75. package/dist/legacy/1/index.d.ts +0 -28
  76. package/dist/legacy/1/index.d.ts.map +0 -1
  77. package/dist/legacy/1/index.js +0 -32
  78. package/dist/legacy/1/index.js.map +0 -1
  79. package/dist/legacy/1/init-guild.d.ts +0 -24
  80. package/dist/legacy/1/init-guild.d.ts.map +0 -1
  81. package/dist/legacy/1/init-guild.js +0 -230
  82. package/dist/legacy/1/init-guild.js.map +0 -1
  83. package/dist/legacy/1/install-tool.d.ts +0 -73
  84. package/dist/legacy/1/install-tool.d.ts.map +0 -1
  85. package/dist/legacy/1/install-tool.js +0 -436
  86. package/dist/legacy/1/install-tool.js.map +0 -1
  87. package/dist/legacy/1/instantiate.d.ts +0 -33
  88. package/dist/legacy/1/instantiate.d.ts.map +0 -1
  89. package/dist/legacy/1/instantiate.js +0 -137
  90. package/dist/legacy/1/instantiate.js.map +0 -1
  91. package/dist/legacy/1/manifest.d.ts +0 -132
  92. package/dist/legacy/1/manifest.d.ts.map +0 -1
  93. package/dist/legacy/1/manifest.js +0 -321
  94. package/dist/legacy/1/manifest.js.map +0 -1
  95. package/dist/legacy/1/migrate.d.ts +0 -84
  96. package/dist/legacy/1/migrate.d.ts.map +0 -1
  97. package/dist/legacy/1/migrate.js +0 -228
  98. package/dist/legacy/1/migrate.js.map +0 -1
  99. package/dist/legacy/1/nexus-home.d.ts +0 -11
  100. package/dist/legacy/1/nexus-home.d.ts.map +0 -1
  101. package/dist/legacy/1/nexus-home.js +0 -16
  102. package/dist/legacy/1/nexus-home.js.map +0 -1
  103. package/dist/legacy/1/plugin-descriptor.d.ts +0 -3
  104. package/dist/legacy/1/plugin-descriptor.d.ts.map +0 -1
  105. package/dist/legacy/1/plugin-descriptor.js +0 -2
  106. package/dist/legacy/1/plugin-descriptor.js.map +0 -1
  107. package/dist/legacy/1/preconditions.d.ts +0 -100
  108. package/dist/legacy/1/preconditions.d.ts.map +0 -1
  109. package/dist/legacy/1/preconditions.js +0 -189
  110. package/dist/legacy/1/preconditions.js.map +0 -1
  111. package/dist/legacy/1/rehydrate.d.ts +0 -22
  112. package/dist/legacy/1/rehydrate.d.ts.map +0 -1
  113. package/dist/legacy/1/rehydrate.js +0 -109
  114. package/dist/legacy/1/rehydrate.js.map +0 -1
  115. package/dist/legacy/1/remove-tool.d.ts +0 -19
  116. package/dist/legacy/1/remove-tool.d.ts.map +0 -1
  117. package/dist/legacy/1/remove-tool.js +0 -105
  118. package/dist/legacy/1/remove-tool.js.map +0 -1
  119. package/dist/legacy/1/session.d.ts +0 -343
  120. package/dist/legacy/1/session.d.ts.map +0 -1
  121. package/dist/legacy/1/session.js +0 -499
  122. package/dist/legacy/1/session.js.map +0 -1
  123. package/dist/legacy/1/tool-registry.d.ts +0 -12
  124. package/dist/legacy/1/tool-registry.d.ts.map +0 -1
  125. package/dist/legacy/1/tool-registry.js +0 -28
  126. package/dist/legacy/1/tool-registry.js.map +0 -1
  127. package/dist/legacy/1/tool.d.ts +0 -10
  128. package/dist/legacy/1/tool.d.ts.map +0 -1
  129. package/dist/legacy/1/tool.js +0 -2
  130. package/dist/legacy/1/tool.js.map +0 -1
  131. package/dist/legacy/1/upgrade.d.ts +0 -129
  132. package/dist/legacy/1/upgrade.d.ts.map +0 -1
  133. package/dist/legacy/1/upgrade.js +0 -355
  134. package/dist/legacy/1/upgrade.js.map +0 -1
  135. package/dist/legacy/1/workshop.d.ts +0 -95
  136. package/dist/legacy/1/workshop.d.ts.map +0 -1
  137. package/dist/legacy/1/workshop.js +0 -229
  138. package/dist/legacy/1/workshop.js.map +0 -1
  139. package/dist/legacy/1/worktree.d.ts +0 -67
  140. package/dist/legacy/1/worktree.d.ts.map +0 -1
  141. package/dist/legacy/1/worktree.js +0 -117
  142. package/dist/legacy/1/worktree.js.map +0 -1
  143. package/dist/legacy/1/writ.d.ts +0 -130
  144. package/dist/legacy/1/writ.d.ts.map +0 -1
  145. package/dist/legacy/1/writ.js +0 -599
  146. package/dist/legacy/1/writ.js.map +0 -1
  147. package/dist/rig-context.d.ts +0 -47
  148. package/dist/rig-context.d.ts.map +0 -1
  149. package/dist/rig-context.js +0 -11
  150. package/dist/rig-context.js.map +0 -1
  151. package/dist/rig-descriptor.d.ts +0 -39
  152. package/dist/rig-descriptor.d.ts.map +0 -1
  153. package/dist/rig-descriptor.js +0 -12
  154. package/dist/rig-descriptor.js.map +0 -1
  155. package/dist/rig.d.ts +0 -70
  156. package/dist/rig.d.ts.map +0 -1
  157. package/dist/rig.js +0 -14
  158. package/dist/rig.js.map +0 -1
  159. package/dist/tool.d.ts +0 -136
  160. package/dist/tool.d.ts.map +0 -1
  161. package/dist/tool.js +0 -135
  162. package/dist/tool.js.map +0 -1
  163. package/migrations/001-schema.sql +0 -177
  164. package/migrations/002-writs.sql +0 -44
  165. package/migrations/003-conversations.sql +0 -43
  166. package/migrations/004-remove-commissions.sql +0 -24
@@ -1,499 +0,0 @@
1
- /**
2
- * Session infrastructure — the unified session funnel.
3
- *
4
- * ALL sessions (interactive, summoned, briefed) flow through
5
- * `launchSession()`. This provides unified logging, events, metrics,
6
- * workspace lifecycle, and session record persistence.
7
- *
8
- * Session providers (e.g. claude-code, claude-api) implement the
9
- * `SessionProvider` interface and are registered at startup.
10
- */
11
- import crypto from 'node:crypto';
12
- import { execFileSync } from 'node:child_process';
13
- import fs from 'node:fs';
14
- import path from 'node:path';
15
- import Database from 'better-sqlite3';
16
- import { booksPath, nexusDir, workshopBarePath } from "./nexus-home.js";
17
- import { generateId } from "./id.js";
18
- import { signalEvent } from "./events.js";
19
- // ── Dashboard Read Functions ────────────────────────────────────────────
20
- /**
21
- * List sessions with optional filters.
22
- */
23
- export function listSessions(home, opts = {}) {
24
- const db = new Database(booksPath(home));
25
- db.pragma('foreign_keys = ON');
26
- try {
27
- let query = `SELECT s.id, s.anima_id, s.provider, s.trigger, s.workshop, s.workspace_kind,
28
- s.started_at, s.ended_at, s.exit_code, s.cost_usd, s.duration_ms
29
- FROM sessions s`;
30
- const conditions = [];
31
- const params = [];
32
- if (opts.anima) {
33
- query = `SELECT s.id, s.anima_id, s.provider, s.trigger, s.workshop, s.workspace_kind,
34
- s.started_at, s.ended_at, s.exit_code, s.cost_usd, s.duration_ms
35
- FROM sessions s JOIN animas a ON a.id = s.anima_id`;
36
- conditions.push(`(a.name = ? OR a.id = ?)`);
37
- params.push(opts.anima, opts.anima);
38
- }
39
- if (opts.workshop) {
40
- conditions.push(`s.workshop = ?`);
41
- params.push(opts.workshop);
42
- }
43
- if (opts.trigger) {
44
- conditions.push(`s.trigger = ?`);
45
- params.push(opts.trigger);
46
- }
47
- if (opts.writId) {
48
- conditions.push(`s.writ_id = ?`);
49
- params.push(opts.writId);
50
- }
51
- if (opts.status === 'active') {
52
- conditions.push(`s.ended_at IS NULL`);
53
- }
54
- else if (opts.status === 'completed') {
55
- conditions.push(`s.ended_at IS NOT NULL`);
56
- }
57
- if (conditions.length > 0) {
58
- query += ` WHERE ${conditions.join(' AND ')}`;
59
- }
60
- query += ` ORDER BY s.started_at DESC`;
61
- if (opts.limit) {
62
- query += ` LIMIT ?`;
63
- params.push(opts.limit);
64
- }
65
- const rows = db.prepare(query).all(...params);
66
- return rows.map(r => ({
67
- id: r.id,
68
- animaId: r.anima_id,
69
- provider: r.provider,
70
- trigger: r.trigger,
71
- workshop: r.workshop,
72
- workspaceKind: r.workspace_kind,
73
- startedAt: r.started_at,
74
- endedAt: r.ended_at,
75
- exitCode: r.exit_code,
76
- costUsd: r.cost_usd,
77
- durationMs: r.duration_ms,
78
- }));
79
- }
80
- finally {
81
- db.close();
82
- }
83
- }
84
- /**
85
- * Count sessions bound to a given writ. Used by circuit breakers to cap
86
- * retry attempts without fetching full session rows.
87
- */
88
- export function countSessionsForWrit(home, writId) {
89
- const db = new Database(booksPath(home));
90
- db.pragma('foreign_keys = ON');
91
- try {
92
- const row = db.prepare('SELECT COUNT(*) as n FROM sessions WHERE writ_id = ?').get(writId);
93
- return row.n;
94
- }
95
- finally {
96
- db.close();
97
- }
98
- }
99
- /**
100
- * Show full details for a single session.
101
- */
102
- export function showSession(home, sessionId) {
103
- const db = new Database(booksPath(home));
104
- db.pragma('foreign_keys = ON');
105
- try {
106
- const row = db.prepare(`SELECT id, anima_id, provider, trigger, workshop, workspace_kind,
107
- curriculum_name, curriculum_version, temperament_name, temperament_version,
108
- roles, started_at, ended_at, exit_code,
109
- input_tokens, output_tokens, cache_read_tokens, cache_write_tokens,
110
- cost_usd, duration_ms, provider_session_id, record_path
111
- FROM sessions WHERE id = ?`).get(sessionId);
112
- if (!row)
113
- return null;
114
- return {
115
- id: row.id,
116
- animaId: row.anima_id,
117
- provider: row.provider,
118
- trigger: row.trigger,
119
- workshop: row.workshop,
120
- workspaceKind: row.workspace_kind,
121
- curriculumName: row.curriculum_name,
122
- curriculumVersion: row.curriculum_version,
123
- temperamentName: row.temperament_name,
124
- temperamentVersion: row.temperament_version,
125
- roles: row.roles ? JSON.parse(row.roles) : [],
126
- startedAt: row.started_at,
127
- endedAt: row.ended_at,
128
- exitCode: row.exit_code,
129
- inputTokens: row.input_tokens,
130
- outputTokens: row.output_tokens,
131
- cacheReadTokens: row.cache_read_tokens,
132
- cacheWriteTokens: row.cache_write_tokens,
133
- costUsd: row.cost_usd,
134
- durationMs: row.duration_ms,
135
- providerSessionId: row.provider_session_id,
136
- recordPath: row.record_path,
137
- };
138
- }
139
- finally {
140
- db.close();
141
- }
142
- }
143
- // ── Provider Registration ──────────────────────────────────────────────
144
- let _provider = null;
145
- /**
146
- * Register a session provider. Called once at startup.
147
- */
148
- export function registerSessionProvider(provider) {
149
- _provider = provider;
150
- }
151
- /** Get the registered session provider. */
152
- export function getSessionProvider() {
153
- return _provider;
154
- }
155
- // ── Workspace Helpers ──────────────────────────────────────────────────
156
- /**
157
- * Resolve workspace context from an event payload's standard fields.
158
- */
159
- export function resolveWorkspace(payload) {
160
- if (!payload)
161
- return { kind: 'guildhall' };
162
- const worktreePath = payload.worktreePath;
163
- const workshop = payload.workshop;
164
- if (worktreePath && workshop) {
165
- return { kind: 'workshop-managed', workshop, worktreePath };
166
- }
167
- if (workshop) {
168
- // workshop-temp: worktreePath gets set by createTempWorktree before launch
169
- // We return a placeholder — the funnel fills in the actual path
170
- return { kind: 'workshop-temp', workshop, worktreePath: '' };
171
- }
172
- return { kind: 'guildhall' };
173
- }
174
- /**
175
- * Create a temporary worktree from a workshop's bare repo, checked out to main.
176
- *
177
- * Uses a crypto-safe random hash for the directory name. The worktree is
178
- * a fresh snapshot — no branch management, no merge-back lifecycle.
179
- *
180
- * @returns Absolute path to the worktree directory.
181
- */
182
- export function createTempWorktree(home, workshop) {
183
- const hash = crypto.randomBytes(8).toString('hex');
184
- const worktreeDir = path.join(nexusDir(home), 'worktrees', workshop, hash);
185
- const barePath = workshopBarePath(home, workshop);
186
- if (!fs.existsSync(barePath)) {
187
- throw new Error(`Workshop "${workshop}" bare repo not found at ${barePath}. ` +
188
- `Has the workshop been added with 'nsg workshop add'?`);
189
- }
190
- fs.mkdirSync(path.dirname(worktreeDir), { recursive: true });
191
- execFileSync('git', ['worktree', 'add', '--detach', worktreeDir, 'main'], {
192
- cwd: barePath,
193
- stdio: 'pipe',
194
- });
195
- return worktreeDir;
196
- }
197
- /**
198
- * Remove a temporary worktree.
199
- *
200
- * Logs but does not throw on failure — stale worktrees are assumed to be
201
- * reaped by a separate mechanism.
202
- */
203
- export function removeTempWorktree(home, workshop, worktreePath) {
204
- const barePath = workshopBarePath(home, workshop);
205
- try {
206
- execFileSync('git', ['worktree', 'remove', '--force', worktreePath], {
207
- cwd: barePath,
208
- stdio: 'pipe',
209
- });
210
- }
211
- catch (err) {
212
- console.error(`[session] Warning: failed to remove temp worktree ${worktreePath}: ` +
213
- `${err instanceof Error ? err.message : String(err)}`);
214
- }
215
- }
216
- // ── Session Record Helpers ─────────────────────────────────────────────
217
- /** Path to the sessions directory. */
218
- function sessionsDir(home) {
219
- return path.join(nexusDir(home), 'sessions');
220
- }
221
- /**
222
- * Build a SessionRecord from the manifest and provider result.
223
- */
224
- function buildSessionRecord(sessionId, manifest, prompt, providerResult) {
225
- return {
226
- sessionId,
227
- anima: {
228
- id: manifest.anima.id,
229
- name: manifest.anima.name,
230
- roles: manifest.anima.roles,
231
- codex: manifest.composition.codex,
232
- roleInstructions: manifest.composition.roleInstructions,
233
- curriculum: manifest.composition.curriculum,
234
- temperament: manifest.composition.temperament,
235
- toolInstructions: manifest.composition.toolInstructions,
236
- },
237
- systemPrompt: manifest.systemPrompt,
238
- tools: manifest.tools.map(t => ({ name: t.name })),
239
- unavailableTools: manifest.unavailable,
240
- userPrompt: prompt,
241
- transcript: providerResult?.transcript ?? [],
242
- };
243
- }
244
- /**
245
- * Write a session record to disk.
246
- * @returns The relative record_path (relative to guild root).
247
- */
248
- function writeSessionRecord(home, record) {
249
- const dir = sessionsDir(home);
250
- fs.mkdirSync(dir, { recursive: true });
251
- const uuid = crypto.randomUUID();
252
- const filename = `${uuid}.json`;
253
- const fullPath = path.join(dir, filename);
254
- const relativePath = path.relative(home, fullPath);
255
- fs.writeFileSync(fullPath, JSON.stringify(record, null, 2));
256
- return relativePath;
257
- }
258
- // ── Daybook Helpers ────────────────────────────────────────────────────
259
- /**
260
- * Insert a session.started row in the Daybook.
261
- * @returns The session row ID.
262
- */
263
- function insertSessionRow(home, opts) {
264
- const db = new Database(booksPath(home));
265
- db.pragma('foreign_keys = ON');
266
- try {
267
- const id = opts.sessionId ?? generateId('ses');
268
- db.prepare(`INSERT INTO sessions (id, anima_id, provider, trigger, workshop, workspace_kind,
269
- curriculum_name, curriculum_version, temperament_name, temperament_version,
270
- roles, started_at, writ_id, conversation_id, turn_number)
271
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(id, opts.animaId, opts.provider, opts.trigger, opts.workshop, opts.workspaceKind, opts.curriculumName, opts.curriculumVersion, opts.temperamentName, opts.temperamentVersion, JSON.stringify(opts.roles), opts.startedAt, opts.writId ?? null, opts.conversationId ?? null, opts.turnNumber ?? null);
272
- return id;
273
- }
274
- finally {
275
- db.close();
276
- }
277
- }
278
- /**
279
- * Update a session row with end-of-session data.
280
- */
281
- function updateSessionRow(home, sessionId, opts) {
282
- const db = new Database(booksPath(home));
283
- db.pragma('foreign_keys = ON');
284
- try {
285
- db.prepare(`UPDATE sessions SET
286
- ended_at = ?, exit_code = ?,
287
- input_tokens = ?, output_tokens = ?,
288
- cache_read_tokens = ?, cache_write_tokens = ?,
289
- cost_usd = ?, duration_ms = ?,
290
- provider_session_id = ?, record_path = ?
291
- WHERE id = ?`).run(opts.endedAt, opts.exitCode, opts.inputTokens ?? null, opts.outputTokens ?? null, opts.cacheReadTokens ?? null, opts.cacheWriteTokens ?? null, opts.costUsd ?? null, opts.durationMs ?? null, opts.providerSessionId ?? null, opts.recordPath ?? null, sessionId);
292
- }
293
- finally {
294
- db.close();
295
- }
296
- }
297
- // ── The Session Funnel ─────────────────────────────────────────────────
298
- /**
299
- * Launch a session through the registered provider.
300
- *
301
- * This is THE code path for all sessions. It:
302
- * 1. If workspace is workshop-temp: create fresh worktree from main
303
- * 2. Records session.started in the Daybook → gets sessionId
304
- * 3. Signals session.started event
305
- * 4. Delegates to the provider (passing resolved cwd)
306
- * 5. Records session.ended in the Daybook (with metrics)
307
- * 6. Writes the SessionRecord JSON to .nexus/sessions/{uuid}.json
308
- * 7. Signals session.ended event (with full metrics + sessionId in payload)
309
- * 8. If workspace is workshop-temp AND session is autonomous: tear down the worktree
310
- * (interactive sessions leave the worktree for manual cleanup)
311
- * 9. Returns the result (including sessionId)
312
- *
313
- * Error handling guarantee: Steps 5–8 MUST execute even if the provider
314
- * throws. The funnel wraps step 4 in try/finally. If the provider crashes,
315
- * the session row still gets ended_at, exit_code, and the session.ended
316
- * event still fires (with error details in the payload). If the funnel
317
- * itself fails during recording (e.g. Ledger locked), it signals
318
- * session.record-failed as a core event and continues with remaining
319
- * cleanup steps. Worktree teardown failures are logged but do not throw —
320
- * stale worktrees are assumed to be reaped by a separate mechanism.
321
- */
322
- export async function launchSession(options) {
323
- if (!_provider) {
324
- throw new Error('No session provider registered. Call registerSessionProvider() at startup.');
325
- }
326
- const { home, prompt, interactive, trigger, name, maxBudgetUsd, writId, sessionId: preGeneratedSessionId, conversationId, turnNumber, claudeSessionId, onChunk, systemPromptAppendix } = options;
327
- // Apply system prompt appendix (e.g. writ protocol) if provided.
328
- // This keeps dispatch concerns (clockworks) separate from identity (manifest).
329
- const manifest = systemPromptAppendix
330
- ? { ...options.manifest, systemPrompt: options.manifest.systemPrompt + '\n\n' + systemPromptAppendix }
331
- : options.manifest;
332
- let { workspace } = options;
333
- // Step 1: If workshop-temp, create fresh worktree
334
- if (workspace.kind === 'workshop-temp') {
335
- const worktreePath = createTempWorktree(home, workspace.workshop);
336
- workspace = { ...workspace, worktreePath };
337
- }
338
- // Resolve cwd from workspace
339
- const cwd = workspace.kind === 'guildhall'
340
- ? home
341
- : workspace.worktreePath;
342
- const startedAt = new Date().toISOString();
343
- // Derive workshop name from workspace
344
- const workshopName = workspace.kind === 'guildhall' ? null : workspace.workshop;
345
- // Step 2: Record session.started in the Daybook
346
- let sessionId;
347
- try {
348
- sessionId = insertSessionRow(home, {
349
- sessionId: preGeneratedSessionId,
350
- animaId: manifest.anima.id,
351
- provider: _provider.name,
352
- trigger,
353
- workshop: workshopName,
354
- workspaceKind: workspace.kind,
355
- curriculumName: manifest.composition.curriculum?.name ?? null,
356
- curriculumVersion: manifest.composition.curriculum?.version ?? null,
357
- temperamentName: manifest.composition.temperament?.name ?? null,
358
- temperamentVersion: manifest.composition.temperament?.version ?? null,
359
- roles: manifest.anima.roles,
360
- startedAt,
361
- writId,
362
- conversationId,
363
- turnNumber,
364
- });
365
- }
366
- catch (err) {
367
- // If we can't even write the session row, signal failure and abort
368
- try {
369
- signalEvent(home, 'session.record-failed', {
370
- error: err instanceof Error ? err.message : String(err),
371
- phase: 'insert',
372
- anima: manifest.anima.name,
373
- }, 'framework');
374
- }
375
- catch { /* swallow — best effort */ }
376
- throw err;
377
- }
378
- // Step 3: Signal session.started event
379
- try {
380
- signalEvent(home, 'session.started', {
381
- sessionId,
382
- anima: manifest.anima.name,
383
- trigger,
384
- workshop: workshopName,
385
- workspaceKind: workspace.kind,
386
- }, 'framework');
387
- }
388
- catch { /* swallow — event signalling is best-effort */ }
389
- // Step 4: Delegate to the provider (wrapped in try/finally for guarantees)
390
- let providerResult = null;
391
- let providerError = null;
392
- try {
393
- const launchOpts = {
394
- home,
395
- manifest,
396
- prompt,
397
- interactive,
398
- cwd,
399
- name,
400
- maxBudgetUsd,
401
- claudeSessionId,
402
- };
403
- // Use streaming provider if available and caller wants chunks
404
- if (onChunk && _provider.launchStreaming) {
405
- const { chunks, result } = _provider.launchStreaming(launchOpts);
406
- for await (const chunk of chunks) {
407
- onChunk(chunk);
408
- }
409
- providerResult = await result;
410
- }
411
- else {
412
- providerResult = await _provider.launch(launchOpts);
413
- }
414
- }
415
- catch (err) {
416
- providerError = err instanceof Error ? err : new Error(String(err));
417
- }
418
- // Steps 5–8: Always execute, even if the provider threw
419
- const endedAt = new Date().toISOString();
420
- const exitCode = providerResult?.exitCode ?? 1;
421
- const durationMs = providerResult?.durationMs ?? (Date.now() - new Date(startedAt).getTime());
422
- // Step 5: Update session row in Ledger
423
- let recordPath;
424
- try {
425
- // Step 6: Write SessionRecord JSON
426
- const record = buildSessionRecord(sessionId, manifest, prompt, providerResult);
427
- recordPath = writeSessionRecord(home, record);
428
- }
429
- catch (err) {
430
- try {
431
- signalEvent(home, 'session.record-failed', {
432
- sessionId,
433
- error: err instanceof Error ? err.message : String(err),
434
- phase: 'write-record',
435
- }, 'framework');
436
- }
437
- catch { /* swallow */ }
438
- }
439
- try {
440
- updateSessionRow(home, sessionId, {
441
- endedAt,
442
- exitCode,
443
- inputTokens: providerResult?.tokenUsage?.inputTokens,
444
- outputTokens: providerResult?.tokenUsage?.outputTokens,
445
- cacheReadTokens: providerResult?.tokenUsage?.cacheReadTokens,
446
- cacheWriteTokens: providerResult?.tokenUsage?.cacheWriteTokens,
447
- costUsd: providerResult?.costUsd,
448
- durationMs,
449
- providerSessionId: providerResult?.providerSessionId,
450
- recordPath,
451
- });
452
- }
453
- catch (err) {
454
- try {
455
- signalEvent(home, 'session.record-failed', {
456
- sessionId,
457
- error: err instanceof Error ? err.message : String(err),
458
- phase: 'update-row',
459
- }, 'framework');
460
- }
461
- catch { /* swallow */ }
462
- }
463
- // Step 7: Signal session.ended event
464
- try {
465
- signalEvent(home, 'session.ended', {
466
- sessionId,
467
- anima: manifest.anima.name,
468
- trigger,
469
- workshop: workshopName,
470
- exitCode,
471
- durationMs,
472
- costUsd: providerResult?.costUsd ?? null,
473
- error: providerError?.message ?? null,
474
- }, 'framework');
475
- }
476
- catch { /* swallow */ }
477
- // Step 8: Teardown temp worktree (autonomous only)
478
- if (workspace.kind === 'workshop-temp' && !interactive) {
479
- removeTempWorktree(home, workspace.workshop, workspace.worktreePath);
480
- }
481
- // Step 9: Return result
482
- if (providerError && !providerResult) {
483
- // Provider threw without returning — re-throw so caller knows
484
- throw providerError;
485
- }
486
- return {
487
- sessionId,
488
- exitCode,
489
- tokenUsage: providerResult?.tokenUsage,
490
- costUsd: providerResult?.costUsd,
491
- durationMs,
492
- providerSessionId: providerResult?.providerSessionId,
493
- transcript: providerResult?.transcript,
494
- writId,
495
- conversationId,
496
- turnNumber,
497
- };
498
- }
499
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/legacy/1/session.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- export interface ToolSummary {
2
- name: string;
3
- category: 'tools' | 'engines' | 'curricula' | 'temperaments';
4
- upstream: string | null;
5
- installedAt: string;
6
- bundle: string | undefined;
7
- }
8
- /**
9
- * List all installed tools/engines/curricula/temperaments from guild.json.
10
- */
11
- export declare function listTools(home: string, category?: string): ToolSummary[];
12
- //# sourceMappingURL=tool-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../src/legacy/1/tool-registry.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC;IAC7D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAuBxE"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Tool registry queries — read-only operations on the guild.json tools catalog.
3
- */
4
- import { readGuildConfig } from "./guild-config.js";
5
- /**
6
- * List all installed tools/engines/curricula/temperaments from guild.json.
7
- */
8
- export function listTools(home, category) {
9
- const config = readGuildConfig(home);
10
- const results = [];
11
- const categories = category
12
- ? [category]
13
- : ['tools', 'engines', 'curricula', 'temperaments'];
14
- for (const cat of categories) {
15
- const registry = config[cat] ?? {};
16
- for (const [name, entry] of Object.entries(registry)) {
17
- results.push({
18
- name,
19
- category: cat,
20
- upstream: entry.upstream,
21
- installedAt: entry.installedAt,
22
- bundle: entry.bundle,
23
- });
24
- }
25
- }
26
- return results;
27
- }
28
- //# sourceMappingURL=tool-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../src/legacy/1/tool-registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAUpD;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,QAAiB;IACvD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,MAAM,UAAU,GACd,QAAQ;QACN,CAAC,CAAC,CAAC,QAA8D,CAAC;QAClE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IAExD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI;gBACJ,QAAQ,EAAE,GAAG;gBACb,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { RigContext } from '../../rig-context.ts';
2
- /**
3
- * ToolContext — backward-compatible alias for RigContext.
4
- *
5
- * New code should import `RigContext` from `@shardworks/nexus-core` directly.
6
- * This alias lives in legacy/1 for any code that still imports `ToolContext`.
7
- */
8
- export type ToolContext = RigContext;
9
- export * from '../../tool.ts';
10
- //# sourceMappingURL=tool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/legacy/1/tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC;AAErC,cAAc,eAAe,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from "../../tool.js";
2
- //# sourceMappingURL=tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/legacy/1/tool.ts"],"names":[],"mappings":"AAUA,cAAc,eAAe,CAAC"}