@shardworks/nexus-core 0.1.17 → 0.1.18

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,3 +1,23 @@
1
+ import type { GuildEvent } from './engine.ts';
2
+ /**
3
+ * Callback for launching anima sessions. Provided by the CLI layer since
4
+ * the core package cannot depend on the CLI or engine-manifest directly.
5
+ *
6
+ * The Clockworks runner calls this when processing a `summon` standing order.
7
+ * The callback should: resolve the role to an anima, manifest it, launch
8
+ * a claude session, wait for exit, and return the result.
9
+ *
10
+ * If no handler is registered, summon orders are recorded but skipped.
11
+ */
12
+ export type SummonHandler = (home: string, event: GuildEvent, roleName: string, noticeType: 'summon' | 'brief') => Promise<{
13
+ animaName: string;
14
+ exitCode: number;
15
+ }>;
16
+ /**
17
+ * Register a summon handler. Called once at CLI startup to wire in the
18
+ * session launcher without creating a circular dependency.
19
+ */
20
+ export declare function registerSummonHandler(handler: SummonHandler): void;
1
21
  /** Result of processing a single event. */
2
22
  export interface TickResult {
3
23
  eventId: number;
@@ -1 +1 @@
1
- {"version":3,"file":"clockworks.d.ts","sourceRoot":"","sources":["../src/clockworks.ts"],"names":[],"mappings":"AAsBA,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;AA0LD;;;;;;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"}
1
+ {"version":3,"file":"clockworks.d.ts","sourceRoot":"","sources":["../src/clockworks.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,QAAQ,GAAG,OAAO,KAC3B,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAItD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAElE;AAED,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;AAwOD;;;;;;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"}
@@ -16,9 +16,20 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
16
16
  * standing orders have been dispatched.
17
17
  */
18
18
  import path from 'node:path';
19
+ import Database from 'better-sqlite3';
19
20
  import { readGuildConfig } from "./guild-config.js";
20
21
  import { readPendingEvents, readEvent, markEventProcessed, recordDispatch, signalEvent, } from "./events.js";
21
22
  import { isClockworkEngine } from "./engine.js";
23
+ import { ledgerPath } from "./nexus-home.js";
24
+ import { updateCommissionStatus } from "./commission.js";
25
+ let _summonHandler = null;
26
+ /**
27
+ * Register a summon handler. Called once at CLI startup to wire in the
28
+ * session launcher without creating a circular dependency.
29
+ */
30
+ export function registerSummonHandler(handler) {
31
+ _summonHandler = handler;
32
+ }
22
33
  /**
23
34
  * Process a single event: find matching standing orders and execute them.
24
35
  *
@@ -126,32 +137,74 @@ async function executeEngineOrder(home, event, engineName, config) {
126
137
  /**
127
138
  * Execute a `summon:` or `brief:` standing order.
128
139
  *
129
- * Phase 1: records the dispatch but does NOT actually manifest the anima.
130
- * Anima manifestation requires the manifest engine, which needs extension
131
- * to accept event context. For now, we record the intent and mark it as
132
- * skipped so the system is auditable.
140
+ * If a summon handler is registered (by the CLI layer), delegates to it
141
+ * for full session lifecycle: resolve anima, manifest, launch claude,
142
+ * wait for exit, signal session ended.
143
+ *
144
+ * If no handler is registered, records the dispatch as skipped.
133
145
  */
134
146
  async function executeAnimaOrder(home, event, roleName, noticeType) {
135
147
  const startedAt = new Date().toISOString();
136
- // Phase 1: record the dispatch intent but don't actually manifest.
137
- // The manifest engine needs extension to accept event context.
138
- const endedAt = new Date().toISOString();
139
- recordDispatch(home, {
140
- eventId: event.id,
141
- handlerType: 'anima',
142
- handlerName: `(role: ${roleName})`,
143
- targetRole: roleName,
144
- noticeType,
145
- startedAt,
146
- endedAt,
147
- status: 'success',
148
- });
149
- return {
150
- handlerType: 'anima',
151
- handlerName: `(role: ${roleName})`,
152
- status: 'skipped',
153
- error: 'Anima manifestation via standing orders not yet implemented (Phase 1)',
154
- };
148
+ if (!_summonHandler) {
149
+ // No handler registered record intent but skip execution.
150
+ const endedAt = new Date().toISOString();
151
+ recordDispatch(home, {
152
+ eventId: event.id,
153
+ handlerType: 'anima',
154
+ handlerName: `(role: ${roleName})`,
155
+ targetRole: roleName,
156
+ noticeType,
157
+ startedAt,
158
+ endedAt,
159
+ status: 'success',
160
+ });
161
+ return {
162
+ handlerType: 'anima',
163
+ handlerName: `(role: ${roleName})`,
164
+ status: 'skipped',
165
+ error: 'No summon handler registered anima session not launched.',
166
+ };
167
+ }
168
+ try {
169
+ const result = await _summonHandler(home, event, roleName, noticeType);
170
+ const endedAt = new Date().toISOString();
171
+ recordDispatch(home, {
172
+ eventId: event.id,
173
+ handlerType: 'anima',
174
+ handlerName: result.animaName,
175
+ targetRole: roleName,
176
+ noticeType,
177
+ startedAt,
178
+ endedAt,
179
+ status: 'success',
180
+ });
181
+ return {
182
+ handlerType: 'anima',
183
+ handlerName: result.animaName,
184
+ status: 'success',
185
+ };
186
+ }
187
+ catch (err) {
188
+ const endedAt = new Date().toISOString();
189
+ const errorMsg = err instanceof Error ? err.message : String(err);
190
+ recordDispatch(home, {
191
+ eventId: event.id,
192
+ handlerType: 'anima',
193
+ handlerName: `(role: ${roleName})`,
194
+ targetRole: roleName,
195
+ noticeType,
196
+ startedAt,
197
+ endedAt,
198
+ status: 'error',
199
+ error: errorMsg,
200
+ });
201
+ return {
202
+ handlerType: 'anima',
203
+ handlerName: `(role: ${roleName})`,
204
+ status: 'error',
205
+ error: errorMsg,
206
+ };
207
+ }
155
208
  }
156
209
  /**
157
210
  * Signal standing-order.failed when a standing order execution fails.
@@ -1 +1 @@
1
- {"version":3,"file":"clockworks.js","sourceRoot":"","sources":["../src/clockworks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clockworks.js","sourceRoot":"","sources":["../src/clockworks.ts"],"names":[],"mappings":";;;;;;;;AAAA;;;;;;;;GAQG;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,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAmBzD,IAAI,cAAc,GAAyB,IAAI,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAsB;IAC1D,cAAc,GAAG,OAAO,CAAC;AAC3B,CAAC;AAuBD;;;;;;GAMG;AACH,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,KAAiB;IACzD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC;IAC/D,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,UAAU,GAAsB,EAAE,CAAC;IAEzC,yEAAyE;IACzE,yCAAyC;IACzC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,KAAK,uBAAuB,CAAC;IAC9D,MAAM,eAAe,GAAG,cAAc;QACpC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QACjC,KAAK,CAAC,OAAO,KAAK,IAAI;QACtB,iBAAiB,IAAI,KAAK,CAAC,OAAO;QAClC,OAAQ,KAAK,CAAC,OAAmC,CAAC,eAAe,KAAK,QAAQ;QAC7E,KAAK,CAAC,OAAmC,CAAC,eAAe,KAAK,IAAI;QACjE,KAAK,CAAC,OAAmC,CAAC,eAA2C,CAAC,IAAI,KAAK,uBAAuB,CAAC;IAE3H,IAAI,eAAe,EAAE,CAAC;QACpB,kDAAkD;QAClD,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACtE,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACzE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEzB,2CAA2C;YAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC/B,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAM,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7E,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEzB,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC/B,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAM,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC3E,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEzB,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC/B,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAM,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACnC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,IAAY,EACZ,KAAiB,EACjB,UAAkB,EAClB,MAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE3C,IAAI,CAAC;QACH,6CAA6C;QAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,6CAA6C,CAAC,CAAC;QACtF,CAAC;QAED,iCAAiC;QACjC,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,iDAAiD,CAAC,CAAC;QAC1F,CAAC;QAED,2BAA2B;QAC3B,MAAM,GAAG,GAAG,MAAM,MAAM,kCAAC,SAAS,EAAC,CAAC;QACpC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC;QAE9B,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,2DAA2D;gBAChF,+DAA+D,CAChE,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzC,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACzC,cAAc,CAAC,IAAI,EAAE;YACnB,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,UAAU;YACvB,SAAS;YACT,OAAO;YACP,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAElE,cAAc,CAAC,IAAI,EAAE;YACnB,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,UAAU;YACvB,SAAS;YACT,OAAO;YACP,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC9F,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,iBAAiB,CAC9B,IAAY,EACZ,KAAiB,EACjB,QAAgB,EAChB,UAA8B;IAE9B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE3C,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,4DAA4D;QAC5D,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAEzC,cAAc,CAAC,IAAI,EAAE;YACnB,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,UAAU,QAAQ,GAAG;YAClC,UAAU,EAAE,QAAQ;YACpB,UAAU;YACV,SAAS;YACT,OAAO;YACP,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QAEH,OAAO;YACL,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,UAAU,QAAQ,GAAG;YAClC,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,4DAA4D;SACpE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAEzC,cAAc,CAAC,IAAI,EAAE;YACnB,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,MAAM,CAAC,SAAS;YAC7B,UAAU,EAAE,QAAQ;YACpB,UAAU;YACV,SAAS;YACT,OAAO;YACP,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QAEH,OAAO;YACL,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,MAAM,CAAC,SAAS;YAC7B,MAAM,EAAE,SAAS;SAClB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAElE,cAAc,CAAC,IAAI,EAAE;YACnB,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,UAAU,QAAQ,GAAG;YAClC,UAAU,EAAE,QAAQ;YACpB,UAAU;YACV,SAAS;YACT,OAAO;YACP,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,OAAO;YACL,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,UAAU,QAAQ,GAAG;YAClC,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,QAAQ;SAChB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,IAAY,EACZ,KAAoB,EACpB,eAA2B,EAC3B,KAAa;IAEb,WAAW,CAAC,IAAI,EAAE,uBAAuB,EAAE;QACzC,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE;YACf,EAAE,EAAE,eAAe,CAAC,EAAE;YACtB,IAAI,EAAE,eAAe,CAAC,IAAI;SAC3B;QACD,KAAK;KACN,EAAE,WAAW,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,OAAgB;IAC5D,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,aAAa,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,MAAM,SAAS,GAAiB,EAAE,CAAC;IACnC,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,4EAA4E;IAC5E,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QAEhC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;QAE9B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC/C,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;AACpC,CAAC"}
@@ -0,0 +1,35 @@
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: number;
12
+ }
13
+ /**
14
+ * Update a commission's status and reason in the Ledger.
15
+ */
16
+ export declare function updateCommissionStatus(home: string, commissionId: number, status: string, reason: string): void;
17
+ /**
18
+ * Read a commission record from the Ledger.
19
+ */
20
+ export declare function readCommission(home: string, commissionId: number): {
21
+ id: number;
22
+ content: string;
23
+ status: string;
24
+ workshop: string;
25
+ statusReason: string | null;
26
+ } | null;
27
+ /**
28
+ * Post a commission to the guild.
29
+ *
30
+ * Creates a commission in the Ledger with status "posted" and signals
31
+ * commission.posted for the Clockworks to pick up. Everything downstream
32
+ * is driven by standing orders.
33
+ */
34
+ export declare function commission(opts: CommissionOptions): CommissionResult;
35
+ //# sourceMappingURL=commission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commission.d.ts","sourceRoot":"","sources":["../src/commission.ts"],"names":[],"mappings":"AAYA,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;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,gBAAgB,CA2CpE"}
@@ -0,0 +1,80 @@
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 { ledgerPath } from "./nexus-home.js";
10
+ import { readGuildConfig } from "./guild-config.js";
11
+ import { signalEvent } from "./events.js";
12
+ /**
13
+ * Update a commission's status and reason in the Ledger.
14
+ */
15
+ export function updateCommissionStatus(home, commissionId, status, reason) {
16
+ const db = new Database(ledgerPath(home));
17
+ db.pragma('foreign_keys = ON');
18
+ try {
19
+ db.prepare(`UPDATE commissions SET status = ?, status_reason = ?, updated_at = datetime('now') WHERE id = ?`).run(status, reason, commissionId);
20
+ }
21
+ finally {
22
+ db.close();
23
+ }
24
+ }
25
+ /**
26
+ * Read a commission record from the Ledger.
27
+ */
28
+ export function readCommission(home, commissionId) {
29
+ const db = new Database(ledgerPath(home));
30
+ db.pragma('foreign_keys = ON');
31
+ try {
32
+ const row = db.prepare(`SELECT id, content, status, workshop, status_reason FROM commissions WHERE id = ?`).get(commissionId);
33
+ if (!row)
34
+ return null;
35
+ return {
36
+ id: row.id,
37
+ content: row.content,
38
+ status: row.status,
39
+ workshop: row.workshop,
40
+ statusReason: row.status_reason,
41
+ };
42
+ }
43
+ finally {
44
+ db.close();
45
+ }
46
+ }
47
+ /**
48
+ * Post a commission to the guild.
49
+ *
50
+ * Creates a commission in the Ledger with status "posted" and signals
51
+ * commission.posted for the Clockworks to pick up. Everything downstream
52
+ * is driven by standing orders.
53
+ */
54
+ export function commission(opts) {
55
+ const { home, spec, workshop } = opts;
56
+ // Validate workshop exists in guild.json
57
+ const config = readGuildConfig(home);
58
+ if (!(workshop in config.workshops)) {
59
+ const available = Object.keys(config.workshops).join(', ') || '(none)';
60
+ throw new Error(`Workshop "${workshop}" not found in guild.json. Available workshops: ${available}`);
61
+ }
62
+ const db = new Database(ledgerPath(home));
63
+ db.pragma('foreign_keys = ON');
64
+ try {
65
+ const statusReason = 'posted by patron';
66
+ // Create commission
67
+ const insertCommission = db.prepare(`INSERT INTO commissions (content, status, status_reason, workshop) VALUES (?, ?, ?, ?)`);
68
+ const commissionResult = insertCommission.run(spec, 'posted', statusReason, workshop);
69
+ const commissionId = Number(commissionResult.lastInsertRowid);
70
+ // 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 }));
72
+ // Signal for Clockworks
73
+ signalEvent(home, 'commission.posted', { commissionId, workshop }, 'framework');
74
+ return { commissionId };
75
+ }
76
+ finally {
77
+ db.close();
78
+ }
79
+ }
80
+ //# sourceMappingURL=commission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commission.js","sourceRoot":"","sources":["../src/commission.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export interface RoleDefinition {
15
15
  }
16
16
  /** A reference to a tool or engine registered in guild.json. */
17
17
  export interface ToolEntry {
18
- /** Upstream package identifier, e.g. "@shardworks/tool-dispatch@1.11.3". Null for locally-built tools. */
18
+ /** Upstream package identifier, e.g. "@shardworks/tool-commission@1.11.3". Null for locally-built tools. */
19
19
  upstream: string | null;
20
20
  /** ISO-8601 timestamp of when the tool was installed. */
21
21
  installedAt: string;
@@ -1 +1 @@
1
- {"version":3,"file":"guild-config.d.ts","sourceRoot":"","sources":["../src/guild-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guild-config.d.ts","sourceRoot":"","sources":["../src/guild-config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,13 +2,13 @@ export declare const VERSION: string;
2
2
  export { type ToolContext, type ToolDefinition, tool, } from './tool.ts';
3
3
  export { type GuildEvent, type EngineContext, type EngineDefinition, engine, isClockworkEngine, } from './engine.ts';
4
4
  export { signalEvent, validateCustomEvent, isFrameworkEvent, readPendingEvents, readEvent, markEventProcessed, recordDispatch, } from './events.ts';
5
- export { type TickResult, type DispatchSummary, type ClockRunResult, clockTick, clockRun, } from './clockworks.ts';
5
+ export { type TickResult, type DispatchSummary, type ClockRunResult, type SummonHandler, clockTick, clockRun, registerSummonHandler, } from './clockworks.ts';
6
6
  export { createLedger } from './ledger.ts';
7
7
  export { type GuildConfig, type RoleDefinition, type ToolEntry, type TrainingEntry, type WorkshopEntry, type EventDeclaration, type StandingOrder, type ClockworksConfig, createInitialGuildConfig, guildConfigPath, readGuildConfig, writeGuildConfig, } from './guild-config.ts';
8
8
  export { findGuildRoot, nexusDir, ledgerPath, worktreesPath, workshopsPath, workshopBarePath, } from './nexus-home.ts';
9
9
  export { type InstallToolOptions, type InstallResult, type SourceKind, classifySource, installTool, } from './install-tool.ts';
10
10
  export { type RemoveToolOptions, type RemoveResult, removeTool, } from './remove-tool.ts';
11
- export { type DispatchOptions, type DispatchResult, dispatch, } from './dispatch.ts';
11
+ export { type CommissionOptions, type CommissionResult, commission, updateCommissionStatus, readCommission, } from './commission.ts';
12
12
  export { type InstantiateOptions, type InstantiateResult, instantiate, } from './instantiate.ts';
13
13
  export { initGuild } from './init-guild.ts';
14
14
  export { type BundleManifest, type BundlePackageEntry, type BundleContentEntry, type BundleMigrationEntry, type InstallBundleOptions, type InstallBundleResult, readBundleManifest, installBundle, isBundleDir, } from './bundle.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,EAAE,MAAqB,CAAC;AAE5C,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,IAAI,GACL,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,MAAM,EACN,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,SAAS,EACT,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,aAAa,EACb,QAAQ,EACR,UAAU,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,cAAc,EACd,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,kBAAkB,EAClB,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,eAAe,EACpB,SAAS,GACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACX,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,EAAE,MAAqB,CAAC;AAE5C,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,IAAI,GACL,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,MAAM,EACN,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,SAAS,EACT,QAAQ,EACR,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,aAAa,EACb,QAAQ,EACR,UAAU,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,cAAc,EACd,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,UAAU,EACV,sBAAsB,EACtB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,kBAAkB,EAClB,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,eAAe,EACpB,SAAS,GACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACX,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -6,13 +6,13 @@ export const VERSION = _pkg.version;
6
6
  export { tool, } from "./tool.js";
7
7
  export { engine, isClockworkEngine, } from "./engine.js";
8
8
  export { signalEvent, validateCustomEvent, isFrameworkEvent, readPendingEvents, readEvent, markEventProcessed, recordDispatch, } from "./events.js";
9
- export { clockTick, clockRun, } from "./clockworks.js";
9
+ export { clockTick, clockRun, registerSummonHandler, } from "./clockworks.js";
10
10
  export { createLedger } from "./ledger.js";
11
11
  export { createInitialGuildConfig, guildConfigPath, readGuildConfig, writeGuildConfig, } from "./guild-config.js";
12
12
  export { findGuildRoot, nexusDir, ledgerPath, worktreesPath, workshopsPath, workshopBarePath, } from "./nexus-home.js";
13
13
  export { classifySource, installTool, } from "./install-tool.js";
14
14
  export { removeTool, } from "./remove-tool.js";
15
- export { dispatch, } from "./dispatch.js";
15
+ export { commission, updateCommissionStatus, readCommission, } from "./commission.js";
16
16
  export { instantiate, } from "./instantiate.js";
17
17
  export { initGuild } from "./init-guild.js";
18
18
  export { readBundleManifest, installBundle, isBundleDir, } from "./bundle.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,OAAO,GAAW,IAAI,CAAC,OAAO,CAAC;AAE5C,OAAO,EAGL,IAAI,GACL,MAAM,WAAW,CAAC;AAEnB,OAAO,EAIL,MAAM,EACN,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAIL,SAAS,EACT,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EASL,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,aAAa,EACb,QAAQ,EACR,UAAU,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAIL,cAAc,EACd,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGL,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAOL,kBAAkB,EAClB,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,SAAS,GACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAML,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACX,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAOL,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,OAAO,GAAW,IAAI,CAAC,OAAO,CAAC;AAE5C,OAAO,EAGL,IAAI,GACL,MAAM,WAAW,CAAC;AAEnB,OAAO,EAIL,MAAM,EACN,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAKL,SAAS,EACT,QAAQ,EACR,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EASL,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,aAAa,EACb,QAAQ,EACR,UAAU,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAIL,cAAc,EACd,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGL,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,UAAU,EACV,sBAAsB,EACtB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAOL,kBAAkB,EAClB,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,SAAS,GACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAML,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACX,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAOL,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init-guild.d.ts","sourceRoot":"","sources":["../src/init-guild.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAmFzE"}
1
+ {"version":3,"file":"init-guild.d.ts","sourceRoot":"","sources":["../src/init-guild.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAuJzE"}
@@ -60,8 +60,55 @@ export function initGuild(home, name, model) {
60
60
  // Write codex placeholder
61
61
  fs.writeFileSync(path.join(home, 'codex/all.md'), '');
62
62
  // Write default role instruction files
63
- fs.writeFileSync(path.join(home, 'roles/advisor.md'), '# Advisor\n\nYou are a guild advisor — a standing member who helps the patron understand and operate the guild.\n');
64
- // Write guild.json — with default advisor role, empty registries
63
+ fs.writeFileSync(path.join(home, 'roles/advisor.md'), [
64
+ '# Advisor',
65
+ '',
66
+ 'You are a guild advisor — a standing member who helps the patron understand and operate the guild.',
67
+ '',
68
+ '## Purpose',
69
+ '',
70
+ 'You are the patron\'s primary point of contact with the guild. You explain how things work, report on guild state, suggest next steps, and help the patron frame their intentions as commissions. You are the guild\'s institutional memory made conversational.',
71
+ '',
72
+ '## What You Do',
73
+ '',
74
+ '- **Answer questions** about guild structure, capabilities, and current state.',
75
+ '- **Report status** — animas on the roster, active commissions, workshop state, tool inventory.',
76
+ '- **Help frame commissions** — when the patron has a vague idea, help them refine it into a clear brief that an artificer can act on.',
77
+ '- **Explain outcomes** — when a commission completes or fails, help the patron understand what happened and what to do next.',
78
+ '- **Suggest actions** — if you see something that needs attention (a failed commission, a missing tool, an empty roster), proactively surface it.',
79
+ '',
80
+ '## What You Don\'t Do',
81
+ '',
82
+ '- **You do not implement.** You don\'t write code, build features, or modify workshops. If the patron asks you to build something, help them commission it instead.',
83
+ '- **You do not modify guild state** without explicit direction from the patron. You read and report; you don\'t unilaterally change things.',
84
+ '- **You do not speak for other animas.** Report what the ledger says, not what you imagine another anima would think.',
85
+ '',
86
+ ].join('\n'));
87
+ fs.writeFileSync(path.join(home, 'roles/artificer.md'), [
88
+ '# Artificer',
89
+ '',
90
+ 'You are a guild artificer — you undertake commissions and build the works the patron has asked for.',
91
+ '',
92
+ '## Purpose',
93
+ '',
94
+ 'You are the guild\'s hands. When the patron commissions work, you receive the brief (and sage advice, if a sage is active), and you build the thing. Your output is the guild\'s works — running software, usable tools, solved problems.',
95
+ '',
96
+ '## What You Do',
97
+ '',
98
+ '- **Execute commissions** — receive a brief, understand the requirements, and deliver working results.',
99
+ '- **Work in workshops** — your work happens in commission worktrees. Each commission gives you an isolated workspace branched from main.',
100
+ '- **Write clear code** with useful comments and commit messages. Your primary audience is the next anima who continues the work.',
101
+ '- **Test your work** before marking a commission complete. Verify that what you built actually works.',
102
+ '- **Signal events** when notable things happen during your work — use `craft.question` for design decisions outside your scope, and `craft.debt` for tech debt or code smells you observe but intentionally leave alone.',
103
+ '',
104
+ '## What You Don\'t Do',
105
+ '',
106
+ '- **You do not plan commissions.** That\'s the sage\'s job. If a brief is unclear, ask for clarification rather than inventing requirements.',
107
+ '- **You do not modify guild infrastructure.** You work in workshops, not in the guildhall. Tools, roles, and configuration are not your concern.',
108
+ '- **You do not contradict sage advice.** If a sage has provided a plan, follow it. If you believe the plan has a flaw, record your concern in a commit message or comment, but execute the plan as given.',
109
+ '',
110
+ ].join('\n'));
111
+ // Write guild.json — with default roles, clockworks events, empty registries
65
112
  const config = createInitialGuildConfig(name, VERSION, model);
66
113
  config.roles = {
67
114
  advisor: {
@@ -69,6 +116,28 @@ export function initGuild(home, name, model) {
69
116
  tools: [],
70
117
  instructions: 'roles/advisor.md',
71
118
  },
119
+ artificer: {
120
+ seats: null,
121
+ tools: [],
122
+ instructions: 'roles/artificer.md',
123
+ },
124
+ };
125
+ config.clockworks = {
126
+ events: {
127
+ 'craft.question': {
128
+ description: 'An artificer encountered a design decision outside the commission scope that needs attention.',
129
+ schema: { summary: 'string', workshop: 'string', commission: 'string?', context: 'string?' },
130
+ },
131
+ 'craft.debt': {
132
+ description: 'An artificer observed tech debt or a code smell but intentionally did not address it.',
133
+ schema: { summary: 'string', workshop: 'string', commission: 'string?', location: 'string?' },
134
+ },
135
+ },
136
+ standingOrders: [
137
+ { on: 'commission.posted', run: 'workshop-prepare' },
138
+ { on: 'commission.ready', summon: 'artificer' },
139
+ { on: 'commission.session.ended', run: 'workshop-merge' },
140
+ ],
72
141
  };
73
142
  fs.writeFileSync(path.join(home, 'guild.json'), JSON.stringify(config, null, 2) + '\n');
74
143
  // Make the guildhall an npm package so guild tools can be installed as
@@ -1 +1 @@
1
- {"version":3,"file":"init-guild.js","sourceRoot":"","sources":["../src/init-guild.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-guild.js","sourceRoot":"","sources":["../src/init-guild.ts"],"names":[],"mappings":"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"}
package/dist/ledger.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** SQL for the initial Ledger schema (001). Creates all base tables with WAL mode and foreign keys. */
2
- export declare const INITIAL_SCHEMA = "\nPRAGMA journal_mode = WAL;\nPRAGMA foreign_keys = ON;\n\nCREATE TABLE animas (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n status TEXT NOT NULL CHECK(status IN ('aspirant', 'active', 'retired')),\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE anima_compositions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n anima_id INTEGER NOT NULL UNIQUE REFERENCES animas(id),\n curriculum_name TEXT NOT NULL,\n curriculum_version TEXT NOT NULL,\n temperament_name TEXT NOT NULL,\n temperament_version TEXT NOT NULL,\n curriculum_snapshot TEXT NOT NULL,\n temperament_snapshot TEXT NOT NULL,\n composed_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE roster (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n anima_id INTEGER NOT NULL REFERENCES animas(id),\n role TEXT NOT NULL,\n standing INTEGER NOT NULL DEFAULT 0,\n assigned_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE commissions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n content TEXT NOT NULL,\n status TEXT NOT NULL CHECK(status IN ('posted', 'assigned', 'in_progress', 'completed', 'failed')),\n workshop TEXT NOT NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE commission_assignments (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n commission_id INTEGER NOT NULL REFERENCES commissions(id),\n anima_id INTEGER NOT NULL REFERENCES animas(id),\n assigned_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(commission_id, anima_id)\n);\n\nCREATE TABLE audit_log (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n actor TEXT NOT NULL,\n action TEXT NOT NULL,\n target_type TEXT,\n target_id INTEGER,\n detail TEXT,\n timestamp TEXT NOT NULL DEFAULT (datetime('now'))\n);\n";
2
+ export declare const INITIAL_SCHEMA = "\nPRAGMA journal_mode = WAL;\nPRAGMA foreign_keys = ON;\n\nCREATE TABLE animas (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n status TEXT NOT NULL CHECK(status IN ('aspirant', 'active', 'retired')),\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE anima_compositions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n anima_id INTEGER NOT NULL UNIQUE REFERENCES animas(id),\n curriculum_name TEXT NOT NULL,\n curriculum_version TEXT NOT NULL,\n temperament_name TEXT NOT NULL,\n temperament_version TEXT NOT NULL,\n curriculum_snapshot TEXT NOT NULL,\n temperament_snapshot TEXT NOT NULL,\n composed_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE roster (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n anima_id INTEGER NOT NULL REFERENCES animas(id),\n role TEXT NOT NULL,\n standing INTEGER NOT NULL DEFAULT 0,\n assigned_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE commissions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n content TEXT NOT NULL,\n status TEXT NOT NULL CHECK(status IN ('posted', 'assigned', 'in_progress', 'completed', 'failed')),\n status_reason TEXT,\n workshop TEXT NOT NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE commission_assignments (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n commission_id INTEGER NOT NULL REFERENCES commissions(id),\n anima_id INTEGER NOT NULL REFERENCES animas(id),\n assigned_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(commission_id, anima_id)\n);\n\nCREATE TABLE audit_log (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n actor TEXT NOT NULL,\n action TEXT NOT NULL,\n target_type TEXT,\n target_id INTEGER,\n detail TEXT,\n timestamp TEXT NOT NULL DEFAULT (datetime('now'))\n);\n";
3
3
  /**
4
4
  * Create a new Ledger database at the given path and apply the initial schema.
5
5
  * @param dbPath - Absolute path where the SQLite file will be created.
@@ -1 +1 @@
1
- {"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"AAEA,uGAAuG;AACvG,eAAO,MAAM,cAAc,ipEA0D1B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAOjD"}
1
+ {"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"AAEA,uGAAuG;AACvG,eAAO,MAAM,cAAc,6rEA2D1B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAOjD"}
package/dist/ledger.js CHANGED
@@ -33,12 +33,13 @@ CREATE TABLE roster (
33
33
  );
34
34
 
35
35
  CREATE TABLE commissions (
36
- id INTEGER PRIMARY KEY AUTOINCREMENT,
37
- content TEXT NOT NULL,
38
- status TEXT NOT NULL CHECK(status IN ('posted', 'assigned', 'in_progress', 'completed', 'failed')),
39
- workshop TEXT NOT NULL,
40
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
41
- updated_at TEXT NOT NULL DEFAULT (datetime('now'))
36
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
37
+ content TEXT NOT NULL,
38
+ status TEXT NOT NULL CHECK(status IN ('posted', 'assigned', 'in_progress', 'completed', 'failed')),
39
+ status_reason TEXT,
40
+ workshop TEXT NOT NULL,
41
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
42
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
42
43
  );
43
44
 
44
45
  CREATE TABLE commission_assignments (
@@ -1 +1 @@
1
- {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,uGAAuG;AACvG,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0D7B,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1B,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,uGAAuG;AACvG,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2D7B,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1B,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shardworks/nexus-core",
3
- "version": "0.1.17",
3
+ "version": "0.1.18",
4
4
  "license": "ISC",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,26 +0,0 @@
1
- export interface DispatchOptions {
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
- /** Target anima name. If provided, the commission is assigned immediately. */
9
- anima?: string;
10
- }
11
- export interface DispatchResult {
12
- /** The ID of the created commission. */
13
- commissionId: number;
14
- /** Whether the commission was assigned to an anima. */
15
- assigned: boolean;
16
- /** The anima name if assigned. */
17
- assignedTo?: string;
18
- }
19
- /**
20
- * Post a commission to the guild.
21
- *
22
- * Creates a commission in the Ledger. If an anima is specified, validates that
23
- * the anima exists and is active, then creates an assignment record.
24
- */
25
- export declare function dispatch(opts: DispatchOptions): DispatchResult;
26
- //# sourceMappingURL=dispatch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,QAAQ,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,cAAc,CAiE9D"}
package/dist/dispatch.js DELETED
@@ -1,56 +0,0 @@
1
- /**
2
- * dispatch — core logic for posting commissions to the guild.
3
- *
4
- * Creates a commission record in the Ledger and optionally assigns it to an anima.
5
- * The dispatch implement and CLI both call this function.
6
- */
7
- import Database from 'better-sqlite3';
8
- import { ledgerPath } from "./nexus-home.js";
9
- import { readGuildConfig } from "./guild-config.js";
10
- /**
11
- * Post a commission to the guild.
12
- *
13
- * Creates a commission in the Ledger. If an anima is specified, validates that
14
- * the anima exists and is active, then creates an assignment record.
15
- */
16
- export function dispatch(opts) {
17
- const { home, spec, workshop, anima } = opts;
18
- // Validate workshop exists in guild.json
19
- const config = readGuildConfig(home);
20
- if (!(workshop in config.workshops)) {
21
- const available = Object.keys(config.workshops).join(', ') || '(none)';
22
- throw new Error(`Workshop "${workshop}" not found in guild.json. Available workshops: ${available}`);
23
- }
24
- const db = new Database(ledgerPath(home));
25
- db.pragma('foreign_keys = ON');
26
- try {
27
- const initialStatus = anima ? 'assigned' : 'posted';
28
- // Create commission
29
- const insertCommission = db.prepare(`INSERT INTO commissions (content, status, workshop) VALUES (?, ?, ?)`);
30
- const commissionResult = insertCommission.run(spec, initialStatus, workshop);
31
- const commissionId = Number(commissionResult.lastInsertRowid);
32
- let assigned = false;
33
- let assignedTo;
34
- if (anima) {
35
- // Validate anima exists and is active
36
- const animaRow = db.prepare(`SELECT id, status FROM animas WHERE name = ?`).get(anima);
37
- if (!animaRow) {
38
- throw new Error(`Anima "${anima}" not found in the Ledger.`);
39
- }
40
- if (animaRow.status !== 'active') {
41
- throw new Error(`Anima "${anima}" is not active (status: ${animaRow.status}).`);
42
- }
43
- // Create assignment
44
- db.prepare(`INSERT INTO commission_assignments (commission_id, anima_id) VALUES (?, ?)`).run(commissionId, animaRow.id);
45
- assigned = true;
46
- assignedTo = anima;
47
- }
48
- // Audit log
49
- db.prepare(`INSERT INTO audit_log (actor, action, target_type, target_id, detail) VALUES (?, ?, ?, ?, ?)`).run('dispatch', assigned ? 'commission_dispatched_and_assigned' : 'commission_dispatched', 'commission', commissionId, JSON.stringify({ workshop, anima: assignedTo }));
50
- return { commissionId, assigned, assignedTo };
51
- }
52
- finally {
53
- db.close();
54
- }
55
- }
56
- //# sourceMappingURL=dispatch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAsBpD;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAqB;IAC5C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAE7C,yCAAyC;IACzC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;QACvE,MAAM,IAAI,KAAK,CACb,aAAa,QAAQ,mDAAmD,SAAS,EAAE,CACpF,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE/B,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEpD,oBAAoB;QACpB,MAAM,gBAAgB,GAAG,EAAE,CAAC,OAAO,CACjC,sEAAsE,CACvE,CAAC;QACF,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC7E,MAAM,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAE9D,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,UAA8B,CAAC;QAEnC,IAAI,KAAK,EAAE,CAAC;YACV,sCAAsC;YACtC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CACzB,8CAA8C,CAC/C,CAAC,GAAG,CAAC,KAAK,CAA+C,CAAC;YAE3D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,4BAA4B,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,4BAA4B,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;YAClF,CAAC;YAED,oBAAoB;YACpB,EAAE,CAAC,OAAO,CACR,4EAA4E,CAC7E,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAEjC,QAAQ,GAAG,IAAI,CAAC;YAChB,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;QAED,YAAY;QACZ,EAAE,CAAC,OAAO,CACR,8FAA8F,CAC/F,CAAC,GAAG,CACH,UAAU,EACV,QAAQ,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,uBAAuB,EACzE,YAAY,EACZ,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAChD,CAAC;QAEF,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAChD,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}