@shardworks/nexus-core 0.1.81 → 0.1.83

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.
@@ -1,102 +0,0 @@
1
- export interface CommissionOptions {
2
- /** Absolute path to the guild root. */
3
- home: string;
4
- /** Commission specification — what needs to be done. */
5
- spec: string;
6
- /** Target workshop for the commission. */
7
- workshop: string;
8
- }
9
- export interface CommissionResult {
10
- /** The ID of the created commission. */
11
- commissionId: string;
12
- }
13
- /**
14
- * Update a commission's status and reason in the Ledger.
15
- */
16
- export declare function updateCommissionStatus(home: string, commissionId: string, status: string, reason: string): void;
17
- /**
18
- * Read a commission record from the Ledger.
19
- */
20
- export declare function readCommission(home: string, commissionId: string): {
21
- id: string;
22
- content: string;
23
- status: string;
24
- workshop: string;
25
- statusReason: string | null;
26
- } | null;
27
- export interface CompletionCheck {
28
- complete: boolean;
29
- total: number;
30
- done: number;
31
- pending: number;
32
- failed: number;
33
- }
34
- export interface CompletionResult {
35
- changed: boolean;
36
- newStatus: string;
37
- }
38
- export interface CommissionSummary {
39
- id: string;
40
- content: string;
41
- status: string;
42
- workshop: string;
43
- statusReason: string | null;
44
- createdAt: string;
45
- updatedAt: string;
46
- }
47
- /** Extended commission detail with assignments and linked sessions. */
48
- export interface CommissionDetail {
49
- id: string;
50
- content: string;
51
- status: string;
52
- workshop: string;
53
- statusReason: string | null;
54
- createdAt: string;
55
- updatedAt: string;
56
- assignments: Array<{
57
- animaId: string;
58
- animaName: string;
59
- assignedAt: string;
60
- }>;
61
- sessions: Array<{
62
- sessionId: string;
63
- animaId: string;
64
- startedAt: string;
65
- endedAt: string | null;
66
- }>;
67
- }
68
- export interface ListCommissionsOptions {
69
- status?: string;
70
- workshop?: string;
71
- }
72
- /**
73
- * List commissions with optional filters.
74
- */
75
- export declare function listCommissions(home: string, opts?: ListCommissionsOptions): CommissionSummary[];
76
- /**
77
- * Show detailed commission information, including assignments and linked sessions.
78
- */
79
- export declare function showCommission(home: string, commissionId: string): CommissionDetail | null;
80
- /**
81
- * Check commission completion via its mandate writ's children.
82
- *
83
- * @deprecated Commission completion is now handled automatically by the writ
84
- * system's completion rollup. When a mandate writ completes, the framework
85
- * marks the corresponding commission as completed. This function is retained
86
- * for backward compatibility with existing tools.
87
- */
88
- export declare function checkCommissionCompletion(home: string, commissionId: string): CompletionCheck;
89
- /**
90
- * @deprecated Commission completion is now handled by writ completion rollup.
91
- * When a mandate writ completes, the framework marks the commission as completed.
92
- */
93
- export declare function completeCommissionIfReady(home: string, commissionId: string): CompletionResult;
94
- /**
95
- * Post a commission to the guild.
96
- *
97
- * Creates a commission in the Ledger with status "posted" and signals
98
- * commission.posted for the Clockworks to pick up. Everything downstream
99
- * is driven by standing orders.
100
- */
101
- export declare function commission(opts: CommissionOptions): CommissionResult;
102
- //# sourceMappingURL=commission.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commission.d.ts","sourceRoot":"","sources":["../src/commission.ts"],"names":[],"mappings":"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"}
@@ -1,237 +0,0 @@
1
- /**
2
- * commission — core logic for posting commissions to the guild.
3
- *
4
- * Creates a commission record in the Ledger and signals commission.posted
5
- * for the Clockworks. Everything downstream (worktree setup, anima summoning,
6
- * post-session merge) is handled by standing orders.
7
- */
8
- import Database from 'better-sqlite3';
9
- import { booksPath } from "./nexus-home.js";
10
- import { readGuildConfig } from "./guild-config.js";
11
- import { signalEvent } from "./events.js";
12
- import { generateId } from "./id.js";
13
- import { createWrit, failWrit } from "./writ.js";
14
- /**
15
- * Update a commission's status and reason in the Ledger.
16
- */
17
- export function updateCommissionStatus(home, commissionId, status, reason) {
18
- const db = new Database(booksPath(home));
19
- db.pragma('foreign_keys = ON');
20
- try {
21
- db.prepare(`UPDATE commissions SET status = ?, status_reason = ?, updated_at = datetime('now') WHERE id = ?`).run(status, reason, commissionId);
22
- // When a commission fails, cascade failure to its mandate writ.
23
- // Mirror of completeMandateCommission() in writ.ts — the failure bridge.
24
- if (status === 'failed') {
25
- const row = db.prepare(`SELECT writ_id FROM commissions WHERE id = ?`).get(commissionId);
26
- if (row?.writ_id) {
27
- // Close db before calling failWrit (it opens its own connection)
28
- db.close();
29
- try {
30
- failWrit(home, row.writ_id);
31
- }
32
- catch {
33
- // Writ may already be in a terminal state — that's fine
34
- }
35
- return;
36
- }
37
- }
38
- }
39
- finally {
40
- try {
41
- db.close();
42
- }
43
- catch { /* already closed in failure cascade path */ }
44
- }
45
- }
46
- /**
47
- * Read a commission record from the Ledger.
48
- */
49
- export function readCommission(home, commissionId) {
50
- const db = new Database(booksPath(home));
51
- db.pragma('foreign_keys = ON');
52
- try {
53
- const row = db.prepare(`SELECT id, content, status, workshop, status_reason FROM commissions WHERE id = ?`).get(commissionId);
54
- if (!row)
55
- return null;
56
- return {
57
- id: row.id,
58
- content: row.content,
59
- status: row.status,
60
- workshop: row.workshop,
61
- statusReason: row.status_reason,
62
- };
63
- }
64
- finally {
65
- db.close();
66
- }
67
- }
68
- /**
69
- * List commissions with optional filters.
70
- */
71
- export function listCommissions(home, opts = {}) {
72
- const db = new Database(booksPath(home));
73
- db.pragma('foreign_keys = ON');
74
- try {
75
- let query = `SELECT id, content, status, workshop, status_reason, created_at, updated_at FROM commissions`;
76
- const conditions = [];
77
- const params = [];
78
- if (opts.status) {
79
- conditions.push(`status = ?`);
80
- params.push(opts.status);
81
- }
82
- if (opts.workshop) {
83
- conditions.push(`workshop = ?`);
84
- params.push(opts.workshop);
85
- }
86
- if (conditions.length > 0) {
87
- query += ` WHERE ${conditions.join(' AND ')}`;
88
- }
89
- query += ` ORDER BY created_at DESC`;
90
- const rows = db.prepare(query).all(...params);
91
- return rows.map(row => ({
92
- id: row.id,
93
- content: row.content,
94
- status: row.status,
95
- workshop: row.workshop,
96
- statusReason: row.status_reason,
97
- createdAt: row.created_at,
98
- updatedAt: row.updated_at,
99
- }));
100
- }
101
- finally {
102
- db.close();
103
- }
104
- }
105
- /**
106
- * Show detailed commission information, including assignments and linked sessions.
107
- */
108
- export function showCommission(home, commissionId) {
109
- const db = new Database(booksPath(home));
110
- db.pragma('foreign_keys = ON');
111
- try {
112
- const row = db.prepare(`SELECT id, content, status, workshop, status_reason, created_at, updated_at
113
- FROM commissions WHERE id = ?`).get(commissionId);
114
- if (!row)
115
- return null;
116
- const assignments = db.prepare(`SELECT ca.anima_id, a.name, ca.assigned_at
117
- FROM commission_assignments ca
118
- JOIN animas a ON a.id = ca.anima_id
119
- WHERE ca.commission_id = ?
120
- ORDER BY ca.assigned_at`).all(commissionId);
121
- const sessions = db.prepare(`SELECT cs.session_id, s.anima_id, s.started_at, s.ended_at
122
- FROM commission_sessions cs
123
- JOIN sessions s ON s.id = cs.session_id
124
- WHERE cs.commission_id = ?
125
- ORDER BY s.started_at`).all(commissionId);
126
- return {
127
- id: row.id,
128
- content: row.content,
129
- status: row.status,
130
- workshop: row.workshop,
131
- statusReason: row.status_reason,
132
- createdAt: row.created_at,
133
- updatedAt: row.updated_at,
134
- assignments: assignments.map(a => ({ animaId: a.anima_id, animaName: a.name, assignedAt: a.assigned_at })),
135
- sessions: sessions.map(s => ({ sessionId: s.session_id, animaId: s.anima_id, startedAt: s.started_at, endedAt: s.ended_at })),
136
- };
137
- }
138
- finally {
139
- db.close();
140
- }
141
- }
142
- /**
143
- * Check commission completion via its mandate writ's children.
144
- *
145
- * @deprecated Commission completion is now handled automatically by the writ
146
- * system's completion rollup. When a mandate writ completes, the framework
147
- * marks the corresponding commission as completed. This function is retained
148
- * for backward compatibility with existing tools.
149
- */
150
- export function checkCommissionCompletion(home, commissionId) {
151
- const db = new Database(booksPath(home));
152
- db.pragma('foreign_keys = ON');
153
- try {
154
- // Find the mandate writ for this commission
155
- const commission = db.prepare(`SELECT writ_id FROM commissions WHERE id = ?`).get(commissionId);
156
- if (!commission?.writ_id) {
157
- return { complete: false, total: 0, done: 0, pending: 0, failed: 0 };
158
- }
159
- const rows = db.prepare(`SELECT status, COUNT(*) as cnt FROM writs WHERE parent_id = ? GROUP BY status`).all(commission.writ_id);
160
- let total = 0, done = 0, pending = 0, failed = 0;
161
- for (const r of rows) {
162
- total += r.cnt;
163
- if (r.status === 'completed' || r.status === 'cancelled')
164
- done += r.cnt;
165
- else if (r.status === 'failed')
166
- failed += r.cnt;
167
- else
168
- pending += r.cnt;
169
- }
170
- return { complete: total > 0 && pending === 0 && failed === 0, total, done, pending, failed };
171
- }
172
- finally {
173
- db.close();
174
- }
175
- }
176
- /**
177
- * @deprecated Commission completion is now handled by writ completion rollup.
178
- * When a mandate writ completes, the framework marks the commission as completed.
179
- */
180
- export function completeCommissionIfReady(home, commissionId) {
181
- const check = checkCommissionCompletion(home, commissionId);
182
- if (!check.complete || check.total === 0) {
183
- const current = readCommission(home, commissionId);
184
- return { changed: false, newStatus: current?.status ?? 'unknown' };
185
- }
186
- const current = readCommission(home, commissionId);
187
- if (!current || current.status === 'completed') {
188
- return { changed: false, newStatus: current?.status ?? 'unknown' };
189
- }
190
- updateCommissionStatus(home, commissionId, 'completed', 'all writs completed');
191
- signalEvent(home, 'commission.completed', { commissionId }, 'framework');
192
- return { changed: true, newStatus: 'completed' };
193
- }
194
- /**
195
- * Post a commission to the guild.
196
- *
197
- * Creates a commission in the Ledger with status "posted" and signals
198
- * commission.posted for the Clockworks to pick up. Everything downstream
199
- * is driven by standing orders.
200
- */
201
- export function commission(opts) {
202
- const { home, spec, workshop } = opts;
203
- // Validate workshop exists in guild.json
204
- const config = readGuildConfig(home);
205
- if (!(workshop in config.workshops)) {
206
- const available = Object.keys(config.workshops).join(', ') || '(none)';
207
- throw new Error(`Workshop "${workshop}" not found in guild.json. Available workshops: ${available}`);
208
- }
209
- const db = new Database(booksPath(home));
210
- db.pragma('foreign_keys = ON');
211
- try {
212
- const statusReason = 'posted by patron';
213
- const commissionId = generateId('c');
214
- // Create commission
215
- db.prepare(`INSERT INTO commissions (id, content, status, status_reason, workshop) VALUES (?, ?, ?, ?, ?)`).run(commissionId, spec, 'posted', statusReason, workshop);
216
- // Audit log
217
- db.prepare(`INSERT INTO audit_log (id, actor, action, target_type, target_id, detail) VALUES (?, ?, ?, ?, ?, ?)`).run(generateId('aud'), 'patron', 'commission_posted', 'commission', commissionId, JSON.stringify({ workshop }));
218
- // Signal for Clockworks — commission system event (pre-writ)
219
- signalEvent(home, 'commission.posted', { commissionId, workshop }, 'framework');
220
- // Create the mandate writ — bridges commission system to writ system.
221
- // Events are FIFO: commission.posted handlers (e.g. workshop-prepare) run
222
- // before mandate.ready handlers (e.g. summon artificer).
223
- const title = spec.split('\n')[0].substring(0, 200);
224
- const mandate = createWrit(home, {
225
- type: 'mandate',
226
- title,
227
- description: spec,
228
- });
229
- // Link commission to its mandate writ
230
- db.prepare(`UPDATE commissions SET writ_id = ? WHERE id = ?`).run(mandate.id, commissionId);
231
- return { commissionId };
232
- }
233
- finally {
234
- db.close();
235
- }
236
- }
237
- //# sourceMappingURL=commission.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commission.js","sourceRoot":"","sources":["../src/commission.ts"],"names":[],"mappings":"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"}