@shardworks/nexus-core 0.1.38 → 0.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/anima.d.ts +44 -0
- package/dist/anima.d.ts.map +1 -0
- package/dist/anima.js +156 -0
- package/dist/anima.js.map +1 -0
- package/dist/clockworks.d.ts +2 -2
- package/dist/clockworks.d.ts.map +1 -1
- package/dist/clockworks.js +6 -5
- package/dist/clockworks.js.map +1 -1
- package/dist/commission.d.ts +21 -4
- package/dist/commission.d.ts.map +1 -1
- package/dist/commission.js +45 -8
- package/dist/commission.js.map +1 -1
- package/dist/engine.d.ts +1 -1
- package/dist/events.d.ts +4 -4
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +13 -11
- package/dist/events.js.map +1 -1
- package/dist/id.d.ts +8 -0
- package/dist/id.d.ts.map +1 -0
- package/dist/id.js +28 -0
- package/dist/id.js.map +1 -0
- package/dist/index.d.ts +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/instantiate.d.ts +1 -1
- package/dist/instantiate.d.ts.map +1 -1
- package/dist/instantiate.js +10 -10
- package/dist/instantiate.js.map +1 -1
- package/dist/job.d.ts +32 -0
- package/dist/job.d.ts.map +1 -0
- package/dist/job.js +122 -0
- package/dist/job.js.map +1 -0
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.js +2 -2
- package/dist/manifest.js.map +1 -1
- package/dist/piece.d.ts +28 -0
- package/dist/piece.d.ts.map +1 -0
- package/dist/piece.js +108 -0
- package/dist/piece.js.map +1 -0
- package/dist/session.d.ts +3 -3
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +8 -6
- package/dist/session.js.map +1 -1
- package/dist/stroke.d.ts +27 -0
- package/dist/stroke.d.ts.map +1 -0
- package/dist/stroke.js +101 -0
- package/dist/stroke.js.map +1 -0
- package/dist/tool-registry.d.ts +12 -0
- package/dist/tool-registry.d.ts.map +1 -0
- package/dist/tool-registry.js +28 -0
- package/dist/tool-registry.js.map +1 -0
- package/dist/work.d.ts +28 -0
- package/dist/work.d.ts.map +1 -0
- package/dist/work.js +109 -0
- package/dist/work.js.map +1 -0
- package/dist/workshop.d.ts +10 -0
- package/dist/workshop.d.ts.map +1 -1
- package/dist/workshop.js +34 -0
- package/dist/workshop.js.map +1 -1
- package/dist/worktree.d.ts +3 -3
- package/dist/worktree.js +2 -2
- package/dist/worktree.js.map +1 -1
- package/package.json +1 -1
package/dist/anima.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface AnimaSummary {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
status: string;
|
|
5
|
+
roles: string[];
|
|
6
|
+
createdAt: string;
|
|
7
|
+
}
|
|
8
|
+
export interface AnimaDetail {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
status: string;
|
|
12
|
+
roles: string[];
|
|
13
|
+
curriculumName: string;
|
|
14
|
+
curriculumVersion: string;
|
|
15
|
+
temperamentName: string;
|
|
16
|
+
temperamentVersion: string;
|
|
17
|
+
createdAt: string;
|
|
18
|
+
updatedAt: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ListAnimasOptions {
|
|
21
|
+
status?: string;
|
|
22
|
+
role?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface UpdateAnimaOptions {
|
|
25
|
+
status?: string;
|
|
26
|
+
roles?: string[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* List animas with optional filters.
|
|
30
|
+
*/
|
|
31
|
+
export declare function listAnimas(home: string, opts?: ListAnimasOptions): AnimaSummary[];
|
|
32
|
+
/**
|
|
33
|
+
* Show detailed information about a single anima by ID.
|
|
34
|
+
*/
|
|
35
|
+
export declare function showAnima(home: string, animaId: string): AnimaDetail | null;
|
|
36
|
+
/**
|
|
37
|
+
* Update an anima's status and/or roles.
|
|
38
|
+
*/
|
|
39
|
+
export declare function updateAnima(home: string, animaId: string, opts: UpdateAnimaOptions): AnimaDetail;
|
|
40
|
+
/**
|
|
41
|
+
* Remove (retire) an anima. Sets status to 'retired' and removes roster entries.
|
|
42
|
+
*/
|
|
43
|
+
export declare function removeAnima(home: string, animaId: string): void;
|
|
44
|
+
//# sourceMappingURL=anima.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anima.d.ts","sourceRoot":"","sources":["../src/anima.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAID;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,YAAY,EAAE,CA2CrF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAuC3E;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,kBAAkB,GACvB,WAAW,CA0Eb;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CA8B/D"}
|
package/dist/anima.js
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anima CRUD — list, show, update, and remove operations for guild animas.
|
|
3
|
+
*
|
|
4
|
+
* Create is handled by instantiate.ts (complex composition logic).
|
|
5
|
+
* Read-by-name is handled by manifest.ts's readAnima() (used at manifest time).
|
|
6
|
+
* This module provides the remaining CRUD surface.
|
|
7
|
+
*/
|
|
8
|
+
import Database from 'better-sqlite3';
|
|
9
|
+
import { booksPath } from "./nexus-home.js";
|
|
10
|
+
import { generateId } from "./id.js";
|
|
11
|
+
// ── Functions ──────────────────────────────────────────────────────────
|
|
12
|
+
/**
|
|
13
|
+
* List animas with optional filters.
|
|
14
|
+
*/
|
|
15
|
+
export function listAnimas(home, opts = {}) {
|
|
16
|
+
const db = new Database(booksPath(home));
|
|
17
|
+
db.pragma('foreign_keys = ON');
|
|
18
|
+
try {
|
|
19
|
+
let query = `SELECT a.id, a.name, a.status, a.created_at FROM animas a`;
|
|
20
|
+
const conditions = [];
|
|
21
|
+
const params = [];
|
|
22
|
+
if (opts.role) {
|
|
23
|
+
query += ` JOIN roster r ON r.anima_id = a.id`;
|
|
24
|
+
conditions.push(`r.role = ?`);
|
|
25
|
+
params.push(opts.role);
|
|
26
|
+
}
|
|
27
|
+
if (opts.status) {
|
|
28
|
+
conditions.push(`a.status = ?`);
|
|
29
|
+
params.push(opts.status);
|
|
30
|
+
}
|
|
31
|
+
if (conditions.length > 0) {
|
|
32
|
+
query += ` WHERE ${conditions.join(' AND ')}`;
|
|
33
|
+
}
|
|
34
|
+
query += ` GROUP BY a.id ORDER BY a.created_at`;
|
|
35
|
+
const rows = db.prepare(query).all(...params);
|
|
36
|
+
// Fetch roles for each anima
|
|
37
|
+
const getRoles = db.prepare(`SELECT role FROM roster WHERE anima_id = ? ORDER BY role`);
|
|
38
|
+
return rows.map(row => ({
|
|
39
|
+
id: row.id,
|
|
40
|
+
name: row.name,
|
|
41
|
+
status: row.status,
|
|
42
|
+
roles: getRoles.all(row.id).map(r => r.role),
|
|
43
|
+
createdAt: row.created_at,
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
db.close();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Show detailed information about a single anima by ID.
|
|
52
|
+
*/
|
|
53
|
+
export function showAnima(home, animaId) {
|
|
54
|
+
const db = new Database(booksPath(home));
|
|
55
|
+
db.pragma('foreign_keys = ON');
|
|
56
|
+
try {
|
|
57
|
+
const row = db.prepare(`SELECT a.id, a.name, a.status, a.created_at, a.updated_at,
|
|
58
|
+
c.curriculum_name, c.curriculum_version,
|
|
59
|
+
c.temperament_name, c.temperament_version
|
|
60
|
+
FROM animas a
|
|
61
|
+
LEFT JOIN anima_compositions c ON c.anima_id = a.id
|
|
62
|
+
WHERE a.id = ? OR a.name = ?`).get(animaId, animaId);
|
|
63
|
+
if (!row)
|
|
64
|
+
return null;
|
|
65
|
+
const roles = db.prepare(`SELECT role FROM roster WHERE anima_id = ? ORDER BY role`).all(row.id).map(r => r.role);
|
|
66
|
+
return {
|
|
67
|
+
id: row.id,
|
|
68
|
+
name: row.name,
|
|
69
|
+
status: row.status,
|
|
70
|
+
roles,
|
|
71
|
+
curriculumName: row.curriculum_name ?? '',
|
|
72
|
+
curriculumVersion: row.curriculum_version ?? '',
|
|
73
|
+
temperamentName: row.temperament_name ?? '',
|
|
74
|
+
temperamentVersion: row.temperament_version ?? '',
|
|
75
|
+
createdAt: row.created_at,
|
|
76
|
+
updatedAt: row.updated_at,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
db.close();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Update an anima's status and/or roles.
|
|
85
|
+
*/
|
|
86
|
+
export function updateAnima(home, animaId, opts) {
|
|
87
|
+
const db = new Database(booksPath(home));
|
|
88
|
+
db.pragma('foreign_keys = ON');
|
|
89
|
+
try {
|
|
90
|
+
return db.transaction(() => {
|
|
91
|
+
// Resolve by id or name
|
|
92
|
+
const existing = db.prepare(`SELECT id, name FROM animas WHERE id = ? OR name = ?`).get(animaId, animaId);
|
|
93
|
+
if (!existing) {
|
|
94
|
+
throw new Error(`Anima "${animaId}" not found.`);
|
|
95
|
+
}
|
|
96
|
+
if (opts.status) {
|
|
97
|
+
db.prepare(`UPDATE animas SET status = ?, updated_at = datetime('now') WHERE id = ?`).run(opts.status, existing.id);
|
|
98
|
+
}
|
|
99
|
+
if (opts.roles) {
|
|
100
|
+
// Replace all roles
|
|
101
|
+
db.prepare(`DELETE FROM roster WHERE anima_id = ?`).run(existing.id);
|
|
102
|
+
const insertRole = db.prepare(`INSERT INTO roster (id, anima_id, role) VALUES (?, ?, ?)`);
|
|
103
|
+
for (const role of opts.roles) {
|
|
104
|
+
insertRole.run(generateId('r'), existing.id, role);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Audit
|
|
108
|
+
db.prepare(`INSERT INTO audit_log (id, actor, action, target_type, target_id, detail) VALUES (?, ?, ?, ?, ?, ?)`).run(generateId('aud'), 'operator', 'anima_updated', 'anima', existing.id, JSON.stringify(opts));
|
|
109
|
+
// Read updated record inline (same connection, inside transaction)
|
|
110
|
+
const row = db.prepare(`SELECT a.id, a.name, a.status, a.created_at, a.updated_at,
|
|
111
|
+
c.curriculum_name, c.curriculum_version,
|
|
112
|
+
c.temperament_name, c.temperament_version
|
|
113
|
+
FROM animas a
|
|
114
|
+
LEFT JOIN anima_compositions c ON c.anima_id = a.id
|
|
115
|
+
WHERE a.id = ?`).get(existing.id);
|
|
116
|
+
const roles = db.prepare(`SELECT role FROM roster WHERE anima_id = ? ORDER BY role`).all(existing.id).map(r => r.role);
|
|
117
|
+
return {
|
|
118
|
+
id: row.id,
|
|
119
|
+
name: row.name,
|
|
120
|
+
status: row.status,
|
|
121
|
+
roles,
|
|
122
|
+
curriculumName: row.curriculum_name ?? '',
|
|
123
|
+
curriculumVersion: row.curriculum_version ?? '',
|
|
124
|
+
temperamentName: row.temperament_name ?? '',
|
|
125
|
+
temperamentVersion: row.temperament_version ?? '',
|
|
126
|
+
createdAt: row.created_at,
|
|
127
|
+
updatedAt: row.updated_at,
|
|
128
|
+
};
|
|
129
|
+
})();
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
db.close();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Remove (retire) an anima. Sets status to 'retired' and removes roster entries.
|
|
137
|
+
*/
|
|
138
|
+
export function removeAnima(home, animaId) {
|
|
139
|
+
const db = new Database(booksPath(home));
|
|
140
|
+
db.pragma('foreign_keys = ON');
|
|
141
|
+
try {
|
|
142
|
+
db.transaction(() => {
|
|
143
|
+
const existing = db.prepare(`SELECT id, name FROM animas WHERE id = ? OR name = ?`).get(animaId, animaId);
|
|
144
|
+
if (!existing) {
|
|
145
|
+
throw new Error(`Anima "${animaId}" not found.`);
|
|
146
|
+
}
|
|
147
|
+
db.prepare(`UPDATE animas SET status = 'retired', updated_at = datetime('now') WHERE id = ?`).run(existing.id);
|
|
148
|
+
db.prepare(`DELETE FROM roster WHERE anima_id = ?`).run(existing.id);
|
|
149
|
+
db.prepare(`INSERT INTO audit_log (id, actor, action, target_type, target_id, detail) VALUES (?, ?, ?, ?, ?, ?)`).run(generateId('aud'), 'operator', 'anima_removed', 'anima', existing.id, JSON.stringify({ name: existing.name }));
|
|
150
|
+
})();
|
|
151
|
+
}
|
|
152
|
+
finally {
|
|
153
|
+
db.close();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=anima.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anima.js","sourceRoot":"","sources":["../src/anima.ts"],"names":[],"mappings":"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"}
|
package/dist/clockworks.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Result of processing a single event. */
|
|
2
2
|
export interface TickResult {
|
|
3
|
-
eventId:
|
|
3
|
+
eventId: string;
|
|
4
4
|
eventName: string;
|
|
5
5
|
dispatches: DispatchSummary[];
|
|
6
6
|
}
|
|
@@ -23,7 +23,7 @@ export interface ClockRunResult {
|
|
|
23
23
|
* @param eventId - Specific event id to process, or undefined for next pending.
|
|
24
24
|
* @returns Processing result, or null if no events to process.
|
|
25
25
|
*/
|
|
26
|
-
export declare function clockTick(home: string, eventId?:
|
|
26
|
+
export declare function clockTick(home: string, eventId?: string): Promise<TickResult | null>;
|
|
27
27
|
/**
|
|
28
28
|
* Process all pending events until the queue is empty.
|
|
29
29
|
*
|
package/dist/clockworks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clockworks.d.ts","sourceRoot":"","sources":["../src/clockworks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clockworks.d.ts","sourceRoot":"","sources":["../src/clockworks.ts"],"names":[],"mappings":"AAgCA,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,kCAAkC;AAClC,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAuVD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAa1F;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAkBpE"}
|
package/dist/clockworks.js
CHANGED
|
@@ -24,7 +24,8 @@ import Database from 'better-sqlite3';
|
|
|
24
24
|
import { readGuildConfig } from "./guild-config.js";
|
|
25
25
|
import { readPendingEvents, readEvent, markEventProcessed, recordDispatch, signalEvent, } from "./events.js";
|
|
26
26
|
import { isClockworkEngine, resolveEngineFromExport } from "./engine.js";
|
|
27
|
-
import {
|
|
27
|
+
import { booksPath } from "./nexus-home.js";
|
|
28
|
+
import { generateId } from "./id.js";
|
|
28
29
|
import { updateCommissionStatus, readCommission } from "./commission.js";
|
|
29
30
|
import { manifest } from "./manifest.js";
|
|
30
31
|
import { launchSession, resolveWorkspace, getSessionProvider } from "./session.js";
|
|
@@ -139,7 +140,7 @@ async function executeEngineOrder(home, event, engineName, config) {
|
|
|
139
140
|
* Throws if no active anima holds the role.
|
|
140
141
|
*/
|
|
141
142
|
function resolveAnimaByRole(home, role) {
|
|
142
|
-
const db = new Database(
|
|
143
|
+
const db = new Database(booksPath(home));
|
|
143
144
|
db.pragma('foreign_keys = ON');
|
|
144
145
|
try {
|
|
145
146
|
const row = db.prepare(`
|
|
@@ -197,12 +198,12 @@ async function executeAnimaOrder(home, event, roleName, noticeType) {
|
|
|
197
198
|
const commissionId = payload?.commissionId;
|
|
198
199
|
if (commissionId != null && noticeType === 'summon') {
|
|
199
200
|
// Write commission assignment
|
|
200
|
-
const db = new Database(
|
|
201
|
+
const db = new Database(booksPath(home));
|
|
201
202
|
db.pragma('foreign_keys = ON');
|
|
202
203
|
try {
|
|
203
204
|
const animaRow = db.prepare(`SELECT id FROM animas WHERE name = ?`).get(animaName);
|
|
204
205
|
if (animaRow) {
|
|
205
|
-
db.prepare(`INSERT OR IGNORE INTO commission_assignments (commission_id, anima_id) VALUES (?, ?)`).run(commissionId, animaRow.id);
|
|
206
|
+
db.prepare(`INSERT OR IGNORE INTO commission_assignments (id, commission_id, anima_id) VALUES (?, ?, ?)`).run(generateId('ca'), commissionId, animaRow.id);
|
|
206
207
|
}
|
|
207
208
|
}
|
|
208
209
|
finally {
|
|
@@ -236,7 +237,7 @@ async function executeAnimaOrder(home, event, roleName, noticeType) {
|
|
|
236
237
|
// Write commission_sessions join row if applicable
|
|
237
238
|
if (commissionId != null) {
|
|
238
239
|
try {
|
|
239
|
-
const db = new Database(
|
|
240
|
+
const db = new Database(booksPath(home));
|
|
240
241
|
db.pragma('foreign_keys = ON');
|
|
241
242
|
try {
|
|
242
243
|
db.prepare(`INSERT OR IGNORE INTO commission_sessions (commission_id, session_id) VALUES (?, ?)`).run(commissionId, sessionResult.sessionId);
|
package/dist/clockworks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clockworks.js","sourceRoot":"","sources":["../src/clockworks.ts"],"names":[],"mappings":";;;;;;;;AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"clockworks.js","sourceRoot":"","sources":["../src/clockworks.ts"],"names":[],"mappings":"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"}
|
package/dist/commission.d.ts
CHANGED
|
@@ -8,22 +8,39 @@ export interface CommissionOptions {
|
|
|
8
8
|
}
|
|
9
9
|
export interface CommissionResult {
|
|
10
10
|
/** The ID of the created commission. */
|
|
11
|
-
commissionId:
|
|
11
|
+
commissionId: string;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Update a commission's status and reason in the Ledger.
|
|
15
15
|
*/
|
|
16
|
-
export declare function updateCommissionStatus(home: string, commissionId:
|
|
16
|
+
export declare function updateCommissionStatus(home: string, commissionId: string, status: string, reason: string): void;
|
|
17
17
|
/**
|
|
18
18
|
* Read a commission record from the Ledger.
|
|
19
19
|
*/
|
|
20
|
-
export declare function readCommission(home: string, commissionId:
|
|
21
|
-
id:
|
|
20
|
+
export declare function readCommission(home: string, commissionId: string): {
|
|
21
|
+
id: string;
|
|
22
22
|
content: string;
|
|
23
23
|
status: string;
|
|
24
24
|
workshop: string;
|
|
25
25
|
statusReason: string | null;
|
|
26
26
|
} | null;
|
|
27
|
+
export interface CommissionSummary {
|
|
28
|
+
id: string;
|
|
29
|
+
content: string;
|
|
30
|
+
status: string;
|
|
31
|
+
workshop: string;
|
|
32
|
+
statusReason: string | null;
|
|
33
|
+
createdAt: string;
|
|
34
|
+
updatedAt: string;
|
|
35
|
+
}
|
|
36
|
+
export interface ListCommissionsOptions {
|
|
37
|
+
status?: string;
|
|
38
|
+
workshop?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* List commissions with optional filters.
|
|
42
|
+
*/
|
|
43
|
+
export declare function listCommissions(home: string, opts?: ListCommissionsOptions): CommissionSummary[];
|
|
27
44
|
/**
|
|
28
45
|
* Post a commission to the guild.
|
|
29
46
|
*
|
package/dist/commission.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commission.d.ts","sourceRoot":"","sources":["../src/commission.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commission.d.ts","sourceRoot":"","sources":["../src/commission.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,IAAI,CAWN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CA2BvG;AAID,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,sBAA2B,GAAG,iBAAiB,EAAE,CAwCpG;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,gBAAgB,CA2CpE"}
|
package/dist/commission.js
CHANGED
|
@@ -6,14 +6,15 @@
|
|
|
6
6
|
* post-session merge) is handled by standing orders.
|
|
7
7
|
*/
|
|
8
8
|
import Database from 'better-sqlite3';
|
|
9
|
-
import {
|
|
9
|
+
import { booksPath } from "./nexus-home.js";
|
|
10
10
|
import { readGuildConfig } from "./guild-config.js";
|
|
11
11
|
import { signalEvent } from "./events.js";
|
|
12
|
+
import { generateId } from "./id.js";
|
|
12
13
|
/**
|
|
13
14
|
* Update a commission's status and reason in the Ledger.
|
|
14
15
|
*/
|
|
15
16
|
export function updateCommissionStatus(home, commissionId, status, reason) {
|
|
16
|
-
const db = new Database(
|
|
17
|
+
const db = new Database(booksPath(home));
|
|
17
18
|
db.pragma('foreign_keys = ON');
|
|
18
19
|
try {
|
|
19
20
|
db.prepare(`UPDATE commissions SET status = ?, status_reason = ?, updated_at = datetime('now') WHERE id = ?`).run(status, reason, commissionId);
|
|
@@ -26,7 +27,7 @@ export function updateCommissionStatus(home, commissionId, status, reason) {
|
|
|
26
27
|
* Read a commission record from the Ledger.
|
|
27
28
|
*/
|
|
28
29
|
export function readCommission(home, commissionId) {
|
|
29
|
-
const db = new Database(
|
|
30
|
+
const db = new Database(booksPath(home));
|
|
30
31
|
db.pragma('foreign_keys = ON');
|
|
31
32
|
try {
|
|
32
33
|
const row = db.prepare(`SELECT id, content, status, workshop, status_reason FROM commissions WHERE id = ?`).get(commissionId);
|
|
@@ -44,6 +45,43 @@ export function readCommission(home, commissionId) {
|
|
|
44
45
|
db.close();
|
|
45
46
|
}
|
|
46
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* List commissions with optional filters.
|
|
50
|
+
*/
|
|
51
|
+
export function listCommissions(home, opts = {}) {
|
|
52
|
+
const db = new Database(booksPath(home));
|
|
53
|
+
db.pragma('foreign_keys = ON');
|
|
54
|
+
try {
|
|
55
|
+
let query = `SELECT id, content, status, workshop, status_reason, created_at, updated_at FROM commissions`;
|
|
56
|
+
const conditions = [];
|
|
57
|
+
const params = [];
|
|
58
|
+
if (opts.status) {
|
|
59
|
+
conditions.push(`status = ?`);
|
|
60
|
+
params.push(opts.status);
|
|
61
|
+
}
|
|
62
|
+
if (opts.workshop) {
|
|
63
|
+
conditions.push(`workshop = ?`);
|
|
64
|
+
params.push(opts.workshop);
|
|
65
|
+
}
|
|
66
|
+
if (conditions.length > 0) {
|
|
67
|
+
query += ` WHERE ${conditions.join(' AND ')}`;
|
|
68
|
+
}
|
|
69
|
+
query += ` ORDER BY created_at DESC`;
|
|
70
|
+
const rows = db.prepare(query).all(...params);
|
|
71
|
+
return rows.map(row => ({
|
|
72
|
+
id: row.id,
|
|
73
|
+
content: row.content,
|
|
74
|
+
status: row.status,
|
|
75
|
+
workshop: row.workshop,
|
|
76
|
+
statusReason: row.status_reason,
|
|
77
|
+
createdAt: row.created_at,
|
|
78
|
+
updatedAt: row.updated_at,
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
db.close();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
47
85
|
/**
|
|
48
86
|
* Post a commission to the guild.
|
|
49
87
|
*
|
|
@@ -59,16 +97,15 @@ export function commission(opts) {
|
|
|
59
97
|
const available = Object.keys(config.workshops).join(', ') || '(none)';
|
|
60
98
|
throw new Error(`Workshop "${workshop}" not found in guild.json. Available workshops: ${available}`);
|
|
61
99
|
}
|
|
62
|
-
const db = new Database(
|
|
100
|
+
const db = new Database(booksPath(home));
|
|
63
101
|
db.pragma('foreign_keys = ON');
|
|
64
102
|
try {
|
|
65
103
|
const statusReason = 'posted by patron';
|
|
104
|
+
const commissionId = generateId('c');
|
|
66
105
|
// Create commission
|
|
67
|
-
|
|
68
|
-
const commissionResult = insertCommission.run(spec, 'posted', statusReason, workshop);
|
|
69
|
-
const commissionId = Number(commissionResult.lastInsertRowid);
|
|
106
|
+
db.prepare(`INSERT INTO commissions (id, content, status, status_reason, workshop) VALUES (?, ?, ?, ?, ?)`).run(commissionId, spec, 'posted', statusReason, workshop);
|
|
70
107
|
// Audit log
|
|
71
|
-
db.prepare(`INSERT INTO audit_log (actor, action, target_type, target_id, detail) VALUES (?, ?, ?, ?, ?)`).run('patron', 'commission_posted', 'commission', commissionId, JSON.stringify({ workshop }));
|
|
108
|
+
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 }));
|
|
72
109
|
// Signal for Clockworks
|
|
73
110
|
signalEvent(home, 'commission.posted', { commissionId, workshop }, 'framework');
|
|
74
111
|
return { commissionId };
|
package/dist/commission.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commission.js","sourceRoot":"","sources":["../src/commission.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"commission.js","sourceRoot":"","sources":["../src/commission.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts
CHANGED
package/dist/events.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export declare function validateCustomEvent(home: string, name: string): void;
|
|
|
19
19
|
* @param emitter - Who signaled it: anima name, engine name, or "framework".
|
|
20
20
|
* @returns The event id.
|
|
21
21
|
*/
|
|
22
|
-
export declare function signalEvent(home: string, name: string, payload: unknown, emitter: string):
|
|
22
|
+
export declare function signalEvent(home: string, name: string, payload: unknown, emitter: string): string;
|
|
23
23
|
/**
|
|
24
24
|
* Read pending (unprocessed) events from the Clockworks event queue, ordered by fired_at.
|
|
25
25
|
*/
|
|
@@ -27,16 +27,16 @@ export declare function readPendingEvents(home: string): GuildEvent[];
|
|
|
27
27
|
/**
|
|
28
28
|
* Read a single event by id.
|
|
29
29
|
*/
|
|
30
|
-
export declare function readEvent(home: string, id:
|
|
30
|
+
export declare function readEvent(home: string, id: string): GuildEvent | null;
|
|
31
31
|
/**
|
|
32
32
|
* Mark an event as processed.
|
|
33
33
|
*/
|
|
34
|
-
export declare function markEventProcessed(home: string, eventId:
|
|
34
|
+
export declare function markEventProcessed(home: string, eventId: string): void;
|
|
35
35
|
/**
|
|
36
36
|
* Record an event dispatch in the event_dispatches table.
|
|
37
37
|
*/
|
|
38
38
|
export declare function recordDispatch(home: string, opts: {
|
|
39
|
-
eventId:
|
|
39
|
+
eventId: string;
|
|
40
40
|
handlerType: 'engine' | 'anima';
|
|
41
41
|
handlerName: string;
|
|
42
42
|
targetRole?: string;
|
package/dist/events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAa9C;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAiBpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GACd,MAAM,CAcR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAmB5D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAqBrE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAStE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,IAAI,CAuBN"}
|
package/dist/events.js
CHANGED
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
* separately via `nsg clock`.
|
|
7
7
|
*/
|
|
8
8
|
import Database from 'better-sqlite3';
|
|
9
|
-
import {
|
|
9
|
+
import { booksPath } from "./nexus-home.js";
|
|
10
10
|
import { readGuildConfig } from "./guild-config.js";
|
|
11
|
+
import { generateId } from "./id.js";
|
|
11
12
|
/** Reserved framework event namespaces. Animas cannot signal these. */
|
|
12
13
|
const FRAMEWORK_NAMESPACES = [
|
|
13
14
|
'anima.',
|
|
@@ -53,11 +54,12 @@ export function validateCustomEvent(home, name) {
|
|
|
53
54
|
* @returns The event id.
|
|
54
55
|
*/
|
|
55
56
|
export function signalEvent(home, name, payload, emitter) {
|
|
56
|
-
const db = new Database(
|
|
57
|
+
const db = new Database(booksPath(home));
|
|
57
58
|
db.pragma('foreign_keys = ON');
|
|
58
59
|
try {
|
|
59
|
-
const
|
|
60
|
-
|
|
60
|
+
const id = generateId('evt');
|
|
61
|
+
db.prepare(`INSERT INTO events (id, name, payload, emitter) VALUES (?, ?, ?, ?)`).run(id, name, payload != null ? JSON.stringify(payload) : null, emitter);
|
|
62
|
+
return id;
|
|
61
63
|
}
|
|
62
64
|
finally {
|
|
63
65
|
db.close();
|
|
@@ -67,10 +69,10 @@ export function signalEvent(home, name, payload, emitter) {
|
|
|
67
69
|
* Read pending (unprocessed) events from the Clockworks event queue, ordered by fired_at.
|
|
68
70
|
*/
|
|
69
71
|
export function readPendingEvents(home) {
|
|
70
|
-
const db = new Database(
|
|
72
|
+
const db = new Database(booksPath(home));
|
|
71
73
|
db.pragma('foreign_keys = ON');
|
|
72
74
|
try {
|
|
73
|
-
const rows = db.prepare(`SELECT id, name, payload, emitter, fired_at FROM events WHERE processed = 0 ORDER BY fired_at,
|
|
75
|
+
const rows = db.prepare(`SELECT id, name, payload, emitter, fired_at FROM events WHERE processed = 0 ORDER BY fired_at, rowid`).all();
|
|
74
76
|
return rows.map(row => ({
|
|
75
77
|
id: row.id,
|
|
76
78
|
name: row.name,
|
|
@@ -87,7 +89,7 @@ export function readPendingEvents(home) {
|
|
|
87
89
|
* Read a single event by id.
|
|
88
90
|
*/
|
|
89
91
|
export function readEvent(home, id) {
|
|
90
|
-
const db = new Database(
|
|
92
|
+
const db = new Database(booksPath(home));
|
|
91
93
|
db.pragma('foreign_keys = ON');
|
|
92
94
|
try {
|
|
93
95
|
const row = db.prepare(`SELECT id, name, payload, emitter, fired_at FROM events WHERE id = ?`).get(id);
|
|
@@ -109,7 +111,7 @@ export function readEvent(home, id) {
|
|
|
109
111
|
* Mark an event as processed.
|
|
110
112
|
*/
|
|
111
113
|
export function markEventProcessed(home, eventId) {
|
|
112
|
-
const db = new Database(
|
|
114
|
+
const db = new Database(booksPath(home));
|
|
113
115
|
db.pragma('foreign_keys = ON');
|
|
114
116
|
try {
|
|
115
117
|
db.prepare(`UPDATE events SET processed = 1 WHERE id = ?`).run(eventId);
|
|
@@ -122,11 +124,11 @@ export function markEventProcessed(home, eventId) {
|
|
|
122
124
|
* Record an event dispatch in the event_dispatches table.
|
|
123
125
|
*/
|
|
124
126
|
export function recordDispatch(home, opts) {
|
|
125
|
-
const db = new Database(
|
|
127
|
+
const db = new Database(booksPath(home));
|
|
126
128
|
db.pragma('foreign_keys = ON');
|
|
127
129
|
try {
|
|
128
|
-
db.prepare(`INSERT INTO event_dispatches (event_id, handler_type, handler_name, target_role, notice_type, started_at, ended_at, status, error)
|
|
129
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(opts.eventId, opts.handlerType, opts.handlerName, opts.targetRole ?? null, opts.noticeType ?? null, opts.startedAt, opts.endedAt, opts.status, opts.error ?? null);
|
|
130
|
+
db.prepare(`INSERT INTO event_dispatches (id, event_id, handler_type, handler_name, target_role, notice_type, started_at, ended_at, status, error)
|
|
131
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(generateId('ed'), opts.eventId, opts.handlerType, opts.handlerName, opts.targetRole ?? null, opts.noticeType ?? null, opts.startedAt, opts.endedAt, opts.status, opts.error ?? null);
|
|
130
132
|
}
|
|
131
133
|
finally {
|
|
132
134
|
db.close();
|
package/dist/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|