@shardworks/nexus-core 0.1.99 → 0.1.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/README.md +95 -166
  2. package/dist/guild-config.d.ts +14 -52
  3. package/dist/guild-config.d.ts.map +1 -1
  4. package/dist/guild-config.js +7 -10
  5. package/dist/guild-config.js.map +1 -1
  6. package/dist/guild.d.ts +83 -0
  7. package/dist/guild.d.ts.map +1 -0
  8. package/dist/guild.js +45 -0
  9. package/dist/guild.js.map +1 -0
  10. package/dist/id.d.ts +14 -0
  11. package/dist/id.d.ts.map +1 -0
  12. package/dist/id.js +19 -0
  13. package/dist/id.js.map +1 -0
  14. package/dist/index.d.ts +6 -30
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +7 -32
  17. package/dist/index.js.map +1 -1
  18. package/dist/nexus-home.d.ts +0 -4
  19. package/dist/nexus-home.d.ts.map +1 -1
  20. package/dist/nexus-home.js +1 -9
  21. package/dist/nexus-home.js.map +1 -1
  22. package/dist/plugin.d.ts +115 -0
  23. package/dist/plugin.d.ts.map +1 -0
  24. package/dist/plugin.js +39 -0
  25. package/dist/plugin.js.map +1 -0
  26. package/dist/resolve-package.d.ts +58 -0
  27. package/dist/resolve-package.d.ts.map +1 -0
  28. package/dist/resolve-package.js +123 -0
  29. package/dist/resolve-package.js.map +1 -0
  30. package/package.json +5 -14
  31. package/dist/book.d.ts +0 -110
  32. package/dist/book.d.ts.map +0 -1
  33. package/dist/book.js +0 -16
  34. package/dist/book.js.map +0 -1
  35. package/dist/legacy/1/anima.d.ts +0 -79
  36. package/dist/legacy/1/anima.d.ts.map +0 -1
  37. package/dist/legacy/1/anima.js +0 -285
  38. package/dist/legacy/1/anima.js.map +0 -1
  39. package/dist/legacy/1/audit.d.ts +0 -23
  40. package/dist/legacy/1/audit.d.ts.map +0 -1
  41. package/dist/legacy/1/audit.js +0 -61
  42. package/dist/legacy/1/audit.js.map +0 -1
  43. package/dist/legacy/1/bundle.d.ts +0 -111
  44. package/dist/legacy/1/bundle.d.ts.map +0 -1
  45. package/dist/legacy/1/bundle.js +0 -452
  46. package/dist/legacy/1/bundle.js.map +0 -1
  47. package/dist/legacy/1/clock-daemon.d.ts +0 -2
  48. package/dist/legacy/1/clock-daemon.d.ts.map +0 -1
  49. package/dist/legacy/1/clock-daemon.js +0 -72
  50. package/dist/legacy/1/clock-daemon.js.map +0 -1
  51. package/dist/legacy/1/clockworks.d.ts +0 -98
  52. package/dist/legacy/1/clockworks.d.ts.map +0 -1
  53. package/dist/legacy/1/clockworks.js +0 -359
  54. package/dist/legacy/1/clockworks.js.map +0 -1
  55. package/dist/legacy/1/conversation.d.ts +0 -165
  56. package/dist/legacy/1/conversation.d.ts.map +0 -1
  57. package/dist/legacy/1/conversation.js +0 -457
  58. package/dist/legacy/1/conversation.js.map +0 -1
  59. package/dist/legacy/1/engine.d.ts +0 -90
  60. package/dist/legacy/1/engine.d.ts.map +0 -1
  61. package/dist/legacy/1/engine.js +0 -89
  62. package/dist/legacy/1/engine.js.map +0 -1
  63. package/dist/legacy/1/events.d.ts +0 -88
  64. package/dist/legacy/1/events.d.ts.map +0 -1
  65. package/dist/legacy/1/events.js +0 -239
  66. package/dist/legacy/1/events.js.map +0 -1
  67. package/dist/legacy/1/guild-config.d.ts +0 -74
  68. package/dist/legacy/1/guild-config.d.ts.map +0 -1
  69. package/dist/legacy/1/guild-config.js +0 -51
  70. package/dist/legacy/1/guild-config.js.map +0 -1
  71. package/dist/legacy/1/id.d.ts +0 -8
  72. package/dist/legacy/1/id.d.ts.map +0 -1
  73. package/dist/legacy/1/id.js +0 -27
  74. package/dist/legacy/1/id.js.map +0 -1
  75. package/dist/legacy/1/index.d.ts +0 -28
  76. package/dist/legacy/1/index.d.ts.map +0 -1
  77. package/dist/legacy/1/index.js +0 -32
  78. package/dist/legacy/1/index.js.map +0 -1
  79. package/dist/legacy/1/init-guild.d.ts +0 -24
  80. package/dist/legacy/1/init-guild.d.ts.map +0 -1
  81. package/dist/legacy/1/init-guild.js +0 -230
  82. package/dist/legacy/1/init-guild.js.map +0 -1
  83. package/dist/legacy/1/install-tool.d.ts +0 -73
  84. package/dist/legacy/1/install-tool.d.ts.map +0 -1
  85. package/dist/legacy/1/install-tool.js +0 -436
  86. package/dist/legacy/1/install-tool.js.map +0 -1
  87. package/dist/legacy/1/instantiate.d.ts +0 -33
  88. package/dist/legacy/1/instantiate.d.ts.map +0 -1
  89. package/dist/legacy/1/instantiate.js +0 -137
  90. package/dist/legacy/1/instantiate.js.map +0 -1
  91. package/dist/legacy/1/manifest.d.ts +0 -132
  92. package/dist/legacy/1/manifest.d.ts.map +0 -1
  93. package/dist/legacy/1/manifest.js +0 -321
  94. package/dist/legacy/1/manifest.js.map +0 -1
  95. package/dist/legacy/1/migrate.d.ts +0 -84
  96. package/dist/legacy/1/migrate.d.ts.map +0 -1
  97. package/dist/legacy/1/migrate.js +0 -228
  98. package/dist/legacy/1/migrate.js.map +0 -1
  99. package/dist/legacy/1/nexus-home.d.ts +0 -11
  100. package/dist/legacy/1/nexus-home.d.ts.map +0 -1
  101. package/dist/legacy/1/nexus-home.js +0 -16
  102. package/dist/legacy/1/nexus-home.js.map +0 -1
  103. package/dist/legacy/1/plugin-descriptor.d.ts +0 -3
  104. package/dist/legacy/1/plugin-descriptor.d.ts.map +0 -1
  105. package/dist/legacy/1/plugin-descriptor.js +0 -2
  106. package/dist/legacy/1/plugin-descriptor.js.map +0 -1
  107. package/dist/legacy/1/preconditions.d.ts +0 -100
  108. package/dist/legacy/1/preconditions.d.ts.map +0 -1
  109. package/dist/legacy/1/preconditions.js +0 -189
  110. package/dist/legacy/1/preconditions.js.map +0 -1
  111. package/dist/legacy/1/rehydrate.d.ts +0 -22
  112. package/dist/legacy/1/rehydrate.d.ts.map +0 -1
  113. package/dist/legacy/1/rehydrate.js +0 -109
  114. package/dist/legacy/1/rehydrate.js.map +0 -1
  115. package/dist/legacy/1/remove-tool.d.ts +0 -19
  116. package/dist/legacy/1/remove-tool.d.ts.map +0 -1
  117. package/dist/legacy/1/remove-tool.js +0 -105
  118. package/dist/legacy/1/remove-tool.js.map +0 -1
  119. package/dist/legacy/1/session.d.ts +0 -343
  120. package/dist/legacy/1/session.d.ts.map +0 -1
  121. package/dist/legacy/1/session.js +0 -499
  122. package/dist/legacy/1/session.js.map +0 -1
  123. package/dist/legacy/1/tool-registry.d.ts +0 -12
  124. package/dist/legacy/1/tool-registry.d.ts.map +0 -1
  125. package/dist/legacy/1/tool-registry.js +0 -28
  126. package/dist/legacy/1/tool-registry.js.map +0 -1
  127. package/dist/legacy/1/tool.d.ts +0 -10
  128. package/dist/legacy/1/tool.d.ts.map +0 -1
  129. package/dist/legacy/1/tool.js +0 -2
  130. package/dist/legacy/1/tool.js.map +0 -1
  131. package/dist/legacy/1/upgrade.d.ts +0 -129
  132. package/dist/legacy/1/upgrade.d.ts.map +0 -1
  133. package/dist/legacy/1/upgrade.js +0 -355
  134. package/dist/legacy/1/upgrade.js.map +0 -1
  135. package/dist/legacy/1/workshop.d.ts +0 -95
  136. package/dist/legacy/1/workshop.d.ts.map +0 -1
  137. package/dist/legacy/1/workshop.js +0 -229
  138. package/dist/legacy/1/workshop.js.map +0 -1
  139. package/dist/legacy/1/worktree.d.ts +0 -67
  140. package/dist/legacy/1/worktree.d.ts.map +0 -1
  141. package/dist/legacy/1/worktree.js +0 -117
  142. package/dist/legacy/1/worktree.js.map +0 -1
  143. package/dist/legacy/1/writ.d.ts +0 -130
  144. package/dist/legacy/1/writ.d.ts.map +0 -1
  145. package/dist/legacy/1/writ.js +0 -599
  146. package/dist/legacy/1/writ.js.map +0 -1
  147. package/dist/rig-context.d.ts +0 -47
  148. package/dist/rig-context.d.ts.map +0 -1
  149. package/dist/rig-context.js +0 -11
  150. package/dist/rig-context.js.map +0 -1
  151. package/dist/rig-descriptor.d.ts +0 -39
  152. package/dist/rig-descriptor.d.ts.map +0 -1
  153. package/dist/rig-descriptor.js +0 -12
  154. package/dist/rig-descriptor.js.map +0 -1
  155. package/dist/rig.d.ts +0 -70
  156. package/dist/rig.d.ts.map +0 -1
  157. package/dist/rig.js +0 -14
  158. package/dist/rig.js.map +0 -1
  159. package/dist/tool.d.ts +0 -136
  160. package/dist/tool.d.ts.map +0 -1
  161. package/dist/tool.js +0 -135
  162. package/dist/tool.js.map +0 -1
  163. package/migrations/001-schema.sql +0 -177
  164. package/migrations/002-writs.sql +0 -44
  165. package/migrations/003-conversations.sql +0 -43
  166. package/migrations/004-remove-commissions.sql +0 -24
@@ -1,228 +0,0 @@
1
- /**
2
- * Database migration — applies pending SQL migrations to the guild's Books.
3
- *
4
- * Core framework migrations ship with the `@shardworks/nexus-core` package
5
- * and are applied automatically when the Books are opened (unless the guild
6
- * opts out via `settings.autoMigrate: false` in guild.json).
7
- *
8
- * Migrations are numbered sequentially (001-schema.sql, etc.) and applied in
9
- * order. The module tracks which migrations have been applied in a
10
- * `_migrations` table and only runs new ones.
11
- *
12
- * ## Migration sources
13
- *
14
- * 1. **Core migrations** — bundled with nexus-core, define the framework schema.
15
- * 2. **Guild migrations** — in the guild's `nexus/migrations/` directory, for
16
- * guild-specific schema extensions delivered by bundles.
17
- *
18
- * ## Migration file naming
19
- *
20
- * Files must match the pattern: NNN-description.sql
21
- * where NNN is a zero-padded sequence number.
22
- */
23
- import fs from 'node:fs';
24
- import path from 'node:path';
25
- import { fileURLToPath } from 'node:url';
26
- import Database from 'better-sqlite3';
27
- import { booksPath } from "./nexus-home.js";
28
- import { readGuildConfig } from "./guild-config.js";
29
- /** Pattern for migration filenames: NNN-description.sql */
30
- const MIGRATION_PATTERN = /^(\d{3})-(.+)\.sql$/;
31
- /**
32
- * Resolve the path to core's bundled migrations directory.
33
- *
34
- * In development (running from src/), this is `../../migrations/` relative
35
- * to this file. When published (running from dist/), it's `../migrations/`.
36
- * We check both locations.
37
- */
38
- function coreMigrationsDir() {
39
- const thisFile = fileURLToPath(import.meta.url);
40
- const thisDir = path.dirname(thisFile);
41
- // This file lives at src/legacy/1/migrate.ts (or dist/legacy/1/migrate.js).
42
- // The core migrations directory is three levels up at the package root.
43
- const fromRoot = path.resolve(thisDir, '..', '..', '..', 'migrations');
44
- if (fs.existsSync(fromRoot))
45
- return fromRoot;
46
- // Shouldn't happen, but don't crash — return a nonexistent path
47
- // and let discoverMigrations() handle it gracefully.
48
- return fromRoot;
49
- }
50
- /**
51
- * Ensure the _migrations tracking table exists.
52
- *
53
- * This table is NOT part of the regular schema migrations — it's the
54
- * module's own bookkeeping, created on first use.
55
- */
56
- function ensureMigrationsTable(db) {
57
- db.exec(`
58
- CREATE TABLE IF NOT EXISTS _migrations (
59
- sequence INTEGER PRIMARY KEY,
60
- filename TEXT NOT NULL,
61
- applied_at TEXT NOT NULL DEFAULT (datetime('now')),
62
- bundle TEXT,
63
- original_name TEXT
64
- );
65
- `);
66
- // Add provenance columns if upgrading from an older schema.
67
- // SQLite errors on duplicate ADD COLUMN, so check first.
68
- const cols = db.pragma('table_info(_migrations)');
69
- const colNames = new Set(cols.map(c => c.name));
70
- if (!colNames.has('bundle')) {
71
- db.exec(`ALTER TABLE _migrations ADD COLUMN bundle TEXT;`);
72
- }
73
- if (!colNames.has('original_name')) {
74
- db.exec(`ALTER TABLE _migrations ADD COLUMN original_name TEXT;`);
75
- }
76
- }
77
- /**
78
- * Discover migration files in a directory, sorted by sequence.
79
- */
80
- export function discoverMigrations(migrationsDir) {
81
- if (!fs.existsSync(migrationsDir))
82
- return [];
83
- const files = fs.readdirSync(migrationsDir);
84
- const migrations = [];
85
- for (const file of files) {
86
- const match = file.match(MIGRATION_PATTERN);
87
- if (!match)
88
- continue;
89
- migrations.push({
90
- sequence: parseInt(match[1], 10),
91
- filename: file,
92
- path: path.join(migrationsDir, file),
93
- });
94
- }
95
- // Sort by sequence number
96
- migrations.sort((a, b) => a.sequence - b.sequence);
97
- return migrations;
98
- }
99
- /**
100
- * Get the set of already-applied migration sequence numbers.
101
- */
102
- function getAppliedSequences(db) {
103
- const rows = db.prepare(`SELECT sequence FROM _migrations ORDER BY sequence`).all();
104
- return new Set(rows.map(r => r.sequence));
105
- }
106
- /**
107
- * Apply pending migrations from a list of migration files.
108
- *
109
- * Low-level function that applies migrations to an already-open database.
110
- * Used by both `applyCoreMigrations` and `applyMigrations`.
111
- */
112
- function applyMigrationFiles(db, migrations, applied, provenance) {
113
- const result = {
114
- applied: [],
115
- skipped: [],
116
- total: migrations.length,
117
- };
118
- for (const migration of migrations) {
119
- if (applied.has(migration.sequence)) {
120
- result.skipped.push(migration.filename);
121
- continue;
122
- }
123
- // Read and apply the migration.
124
- // PRAGMAs can't run inside transactions, so extract them and run separately.
125
- const sql = fs.readFileSync(migration.path, 'utf-8');
126
- const pragmaPattern = /^\s*PRAGMA\s+[^;]+;\s*$/gmi;
127
- const pragmas = sql.match(pragmaPattern) || [];
128
- const body = sql.replace(pragmaPattern, '').trim();
129
- for (const pragma of pragmas) {
130
- db.exec(pragma);
131
- }
132
- const prov = provenance?.[migration.filename];
133
- db.transaction(() => {
134
- if (body)
135
- db.exec(body);
136
- db.prepare(`INSERT INTO _migrations (sequence, filename, bundle, original_name) VALUES (?, ?, ?, ?)`).run(migration.sequence, migration.filename, prov?.bundle ?? null, prov?.originalName ?? null);
137
- })();
138
- result.applied.push(migration.filename);
139
- }
140
- return result;
141
- }
142
- /**
143
- * Apply pending core framework migrations to the guild's Books.
144
- *
145
- * Core migrations are bundled with the nexus-core package and define
146
- * the framework's required schema (sessions, writs, events, etc.).
147
- *
148
- * @param home - Absolute path to the guild root.
149
- * @returns Summary of what was applied and skipped.
150
- */
151
- export function applyCoreMigrations(home) {
152
- const migrations = discoverMigrations(coreMigrationsDir());
153
- if (migrations.length === 0) {
154
- return { applied: [], skipped: [], total: 0 };
155
- }
156
- const dbPath = booksPath(home);
157
- fs.mkdirSync(path.dirname(dbPath), { recursive: true });
158
- const db = new Database(dbPath);
159
- db.pragma('foreign_keys = ON');
160
- try {
161
- ensureMigrationsTable(db);
162
- const applied = getAppliedSequences(db);
163
- return applyMigrationFiles(db, migrations, applied);
164
- }
165
- finally {
166
- db.close();
167
- }
168
- }
169
- /**
170
- * Apply pending guild-local migrations to the guild's Books.
171
- *
172
- * Guild-local migrations live in `nexus/migrations/` within the guild
173
- * directory and are delivered by bundles for guild-specific schema extensions.
174
- *
175
- * @param home - Absolute path to the guild root.
176
- * @param provenance - Optional map of guild filename → bundle provenance.
177
- * @returns Summary of what was applied and skipped.
178
- */
179
- export function applyMigrations(home, provenance) {
180
- const migrationsDir = path.join(home, 'nexus', 'migrations');
181
- const dbPath = booksPath(home);
182
- // Discover available migrations
183
- const migrations = discoverMigrations(migrationsDir);
184
- if (migrations.length === 0) {
185
- return { applied: [], skipped: [], total: 0 };
186
- }
187
- const db = new Database(dbPath);
188
- db.pragma('foreign_keys = ON');
189
- try {
190
- ensureMigrationsTable(db);
191
- const applied = getAppliedSequences(db);
192
- return applyMigrationFiles(db, migrations, applied, provenance);
193
- }
194
- finally {
195
- db.close();
196
- }
197
- }
198
- // ── Auto-migration ──────────────────────────────────────────────────────
199
- /** Track which guild roots have been auto-migrated this process. */
200
- const migratedThisProcess = new Set();
201
- /**
202
- * Ensure the guild's Books database has all pending core migrations applied.
203
- *
204
- * Called automatically before database access. Reads `settings.autoMigrate`
205
- * from guild.json (defaults to `true`). Skips if auto-migration is disabled
206
- * or if this guild was already migrated in the current process.
207
- *
208
- * @param home - Absolute path to the guild root.
209
- * @returns The migrations that were applied, or null if skipped.
210
- */
211
- export function ensureBooks(home) {
212
- const resolved = path.resolve(home);
213
- if (migratedThisProcess.has(resolved))
214
- return null;
215
- const config = readGuildConfig(home);
216
- const autoMigrate = config.settings?.autoMigrate ?? true;
217
- if (!autoMigrate) {
218
- migratedThisProcess.add(resolved);
219
- return null;
220
- }
221
- const result = applyCoreMigrations(home);
222
- migratedThisProcess.add(resolved);
223
- if (result.applied.length > 0) {
224
- console.error(`Books: applied ${result.applied.length} pending migration(s): ${result.applied.join(', ')}`);
225
- }
226
- return result;
227
- }
228
- //# sourceMappingURL=migrate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/legacy/1/migrate.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export * from '../../nexus-home.ts';
2
- /**
3
- * @deprecated Internal use only. Raw DB path — use the Books abstraction instead.
4
- * Retained here for legacy/1 compatibility only.
5
- */
6
- export declare function booksPath(home: string): string;
7
- /**
8
- * @deprecated Use booksPath() instead. Retained for legacy/1 compatibility only.
9
- */
10
- export declare function ledgerPath(home: string): string;
11
- //# sourceMappingURL=nexus-home.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nexus-home.d.ts","sourceRoot":"","sources":["../../../src/legacy/1/nexus-home.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AAIpC;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C"}
@@ -1,16 +0,0 @@
1
- export * from "../../nexus-home.js";
2
- import path from 'node:path';
3
- /**
4
- * @deprecated Internal use only. Raw DB path — use the Books abstraction instead.
5
- * Retained here for legacy/1 compatibility only.
6
- */
7
- export function booksPath(home) {
8
- return path.join(home, '.nexus', 'nexus.db');
9
- }
10
- /**
11
- * @deprecated Use booksPath() instead. Retained for legacy/1 compatibility only.
12
- */
13
- export function ledgerPath(home) {
14
- return booksPath(home);
15
- }
16
- //# sourceMappingURL=nexus-home.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nexus-home.js","sourceRoot":"","sources":["../../../src/legacy/1/nexus-home.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AAEpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from '../../rig-descriptor.ts';
2
- export type { RigDescriptor as PluginDescriptor, RigDependency as PluginDependency } from '../../rig-descriptor.ts';
3
- //# sourceMappingURL=plugin-descriptor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-descriptor.d.ts","sourceRoot":"","sources":["../../../src/legacy/1/plugin-descriptor.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AAIxC,YAAY,EAAE,aAAa,IAAI,gBAAgB,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from "../../rig-descriptor.js";
2
- //# sourceMappingURL=plugin-descriptor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-descriptor.js","sourceRoot":"","sources":["../../../src/legacy/1/plugin-descriptor.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
@@ -1,100 +0,0 @@
1
- /**
2
- * Precondition checking for tools and engines.
3
- *
4
- * Tools and engines can declare preconditions in their descriptor files —
5
- * requirements that the environment must satisfy for the tool to be operational.
6
- * For example, a GitHub tool might require `gh` to be installed and authenticated.
7
- *
8
- * Preconditions are checked at three points:
9
- * 1. **Manifest time** — unavailable tools are excluded from the MCP config
10
- * and a note is added to the anima's system prompt.
11
- * 2. **Status command** — `nsg status` shows operational state of all tools.
12
- * 3. **Install time** — warnings are emitted for unmet preconditions (tool is
13
- * still installed — the environment may change).
14
- *
15
- * ## Descriptor format
16
- *
17
- * ```json
18
- * {
19
- * "preconditions": [
20
- * { "check": "command", "command": "gh", "message": "Install gh from https://cli.github.com/" },
21
- * { "check": "command-output", "command": "gh auth status", "pattern": "Logged in", "message": "Run: gh auth login" },
22
- * { "check": "env", "variable": "GITHUB_TOKEN", "message": "Set GITHUB_TOKEN env var" }
23
- * ]
24
- * }
25
- * ```
26
- */
27
- /** A precondition that checks whether a command exists on PATH. */
28
- export interface CommandPrecondition {
29
- check: 'command';
30
- /** The command name to look for (e.g. "gh", "git", "sqlite3"). */
31
- command: string;
32
- /** Human-readable message shown when the check fails. Should include remediation steps. */
33
- message: string;
34
- }
35
- /** A precondition that runs a command and checks its stdout against a regex pattern. */
36
- export interface CommandOutputPrecondition {
37
- check: 'command-output';
38
- /** The full command to run (e.g. "gh auth status"). */
39
- command: string;
40
- /** Regex pattern that must match somewhere in stdout+stderr for the check to pass. */
41
- pattern: string;
42
- /** Human-readable message shown when the check fails. */
43
- message: string;
44
- }
45
- /** A precondition that checks whether an environment variable is set and non-empty. */
46
- export interface EnvPrecondition {
47
- check: 'env';
48
- /** The environment variable name. */
49
- variable: string;
50
- /** Human-readable message shown when the check fails. */
51
- message: string;
52
- }
53
- export type Precondition = CommandPrecondition | CommandOutputPrecondition | EnvPrecondition;
54
- /** The result of checking a single precondition. */
55
- export interface PreconditionCheckResult {
56
- precondition: Precondition;
57
- passed: boolean;
58
- /** The failure message (from the precondition's `message` field). Only set when `passed` is false. */
59
- message?: string;
60
- }
61
- /** The result of checking all preconditions for a single tool or engine. */
62
- export interface ToolPreconditionResult {
63
- /** Tool name (from guild.json key). */
64
- name: string;
65
- /** Whether this is a tool or engine. */
66
- category: 'tools' | 'engines';
67
- /** Whether all preconditions passed (true if there are no preconditions). */
68
- available: boolean;
69
- /** Individual check results. Empty if no preconditions declared. */
70
- checks: PreconditionCheckResult[];
71
- /** Failure messages only — convenience accessor for checks that failed. */
72
- failures: string[];
73
- }
74
- /**
75
- * Read preconditions from a descriptor file (nexus-tool.json or nexus-engine.json).
76
- * Returns an empty array if the descriptor doesn't exist or has no preconditions field.
77
- */
78
- export declare function readPreconditions(descriptorPath: string): Precondition[];
79
- /** Run a single precondition check. */
80
- export declare function checkOne(precondition: Precondition): PreconditionCheckResult;
81
- /**
82
- * Check all preconditions in an array. Returns individual results.
83
- */
84
- export declare function checkPreconditions(preconditions: Precondition[]): PreconditionCheckResult[];
85
- /**
86
- * Check preconditions for all tools and engines in a guild.
87
- *
88
- * Returns a result for every registered tool, including those with no preconditions
89
- * (which are always marked available: true).
90
- */
91
- export declare function checkAllPreconditions(home: string, config: {
92
- tools: Record<string, unknown>;
93
- engines: Record<string, unknown>;
94
- }): ToolPreconditionResult[];
95
- /**
96
- * Check preconditions for a single tool by its descriptor path.
97
- * Convenience wrapper for install-time warnings.
98
- */
99
- export declare function checkToolPreconditions(descriptorPath: string): PreconditionCheckResult[];
100
- //# sourceMappingURL=preconditions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preconditions.d.ts","sourceRoot":"","sources":["../../../src/legacy/1/preconditions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAQH,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,SAAS,CAAC;IACjB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wFAAwF;AACxF,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,gBAAgB,CAAC;IACxB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,uFAAuF;AACvF,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,yBAAyB,GAAG,eAAe,CAAC;AAE7F,oDAAoD;AACpD,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,sGAAsG;IACtG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,4EAA4E;AAC5E,MAAM,WAAW,sBAAsB;IACrC,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,6EAA6E;IAC7E,SAAS,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAClC,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,EAAE,CA4BxE;AAMD,uCAAuC;AACvC,wBAAgB,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,uBAAuB,CAS5E;AAoDD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,uBAAuB,EAAE,CAE3F;AAmBD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC3E,sBAAsB,EAAE,CAgC1B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,uBAAuB,EAAE,CAGxF"}
@@ -1,189 +0,0 @@
1
- /**
2
- * Precondition checking for tools and engines.
3
- *
4
- * Tools and engines can declare preconditions in their descriptor files —
5
- * requirements that the environment must satisfy for the tool to be operational.
6
- * For example, a GitHub tool might require `gh` to be installed and authenticated.
7
- *
8
- * Preconditions are checked at three points:
9
- * 1. **Manifest time** — unavailable tools are excluded from the MCP config
10
- * and a note is added to the anima's system prompt.
11
- * 2. **Status command** — `nsg status` shows operational state of all tools.
12
- * 3. **Install time** — warnings are emitted for unmet preconditions (tool is
13
- * still installed — the environment may change).
14
- *
15
- * ## Descriptor format
16
- *
17
- * ```json
18
- * {
19
- * "preconditions": [
20
- * { "check": "command", "command": "gh", "message": "Install gh from https://cli.github.com/" },
21
- * { "check": "command-output", "command": "gh auth status", "pattern": "Logged in", "message": "Run: gh auth login" },
22
- * { "check": "env", "variable": "GITHUB_TOKEN", "message": "Set GITHUB_TOKEN env var" }
23
- * ]
24
- * }
25
- * ```
26
- */
27
- import { execSync } from 'node:child_process';
28
- import fs from 'node:fs';
29
- import path from 'node:path';
30
- // ── Descriptor reading ─────────────────────────────────────────────────
31
- /**
32
- * Read preconditions from a descriptor file (nexus-tool.json or nexus-engine.json).
33
- * Returns an empty array if the descriptor doesn't exist or has no preconditions field.
34
- */
35
- export function readPreconditions(descriptorPath) {
36
- if (!fs.existsSync(descriptorPath))
37
- return [];
38
- try {
39
- const descriptor = JSON.parse(fs.readFileSync(descriptorPath, 'utf-8'));
40
- const raw = descriptor.preconditions;
41
- if (!Array.isArray(raw))
42
- return [];
43
- // Validate each entry has at minimum { check, message }
44
- return raw.filter((p) => {
45
- if (typeof p !== 'object' || p === null)
46
- return false;
47
- const obj = p;
48
- if (typeof obj.check !== 'string' || typeof obj.message !== 'string')
49
- return false;
50
- switch (obj.check) {
51
- case 'command':
52
- return typeof obj.command === 'string';
53
- case 'command-output':
54
- return typeof obj.command === 'string' && typeof obj.pattern === 'string';
55
- case 'env':
56
- return typeof obj.variable === 'string';
57
- default:
58
- return false; // Unknown check type — skip
59
- }
60
- });
61
- }
62
- catch {
63
- return [];
64
- }
65
- }
66
- // ── Check execution ────────────────────────────────────────────────────
67
- const CHECK_TIMEOUT_MS = 5000;
68
- /** Run a single precondition check. */
69
- export function checkOne(precondition) {
70
- switch (precondition.check) {
71
- case 'command':
72
- return checkCommand(precondition);
73
- case 'command-output':
74
- return checkCommandOutput(precondition);
75
- case 'env':
76
- return checkEnv(precondition);
77
- }
78
- }
79
- function checkCommand(p) {
80
- try {
81
- // `which` on Unix, `where` on Windows — but we only target Unix for now
82
- execSync(`which ${p.command}`, { stdio: 'pipe', timeout: CHECK_TIMEOUT_MS });
83
- return { precondition: p, passed: true };
84
- }
85
- catch {
86
- return { precondition: p, passed: false, message: p.message };
87
- }
88
- }
89
- function checkCommandOutput(p) {
90
- try {
91
- // Capture both stdout and stderr (many CLIs write status to stderr)
92
- const output = execSync(p.command, {
93
- stdio: 'pipe',
94
- timeout: CHECK_TIMEOUT_MS,
95
- encoding: 'utf-8',
96
- });
97
- // execSync only captures stdout in the return value when encoding is set.
98
- // stderr goes to... nowhere with stdio: 'pipe'. We need a different approach
99
- // for commands that write to stderr.
100
- const combined = output ?? '';
101
- const regex = new RegExp(p.pattern);
102
- if (regex.test(combined)) {
103
- return { precondition: p, passed: true };
104
- }
105
- return { precondition: p, passed: false, message: p.message };
106
- }
107
- catch (err) {
108
- // Some commands (like `gh auth status` when not logged in) exit non-zero
109
- // but still produce useful output. Check stderr/stdout from the error.
110
- if (err && typeof err === 'object' && 'stdout' in err) {
111
- const execErr = err;
112
- const combined = (execErr.stdout ?? '') + (execErr.stderr ?? '');
113
- const regex = new RegExp(p.pattern);
114
- if (regex.test(combined)) {
115
- return { precondition: p, passed: true };
116
- }
117
- }
118
- return { precondition: p, passed: false, message: p.message };
119
- }
120
- }
121
- function checkEnv(p) {
122
- const value = process.env[p.variable];
123
- if (value !== undefined && value !== '') {
124
- return { precondition: p, passed: true };
125
- }
126
- return { precondition: p, passed: false, message: p.message };
127
- }
128
- /**
129
- * Check all preconditions in an array. Returns individual results.
130
- */
131
- export function checkPreconditions(preconditions) {
132
- return preconditions.map(checkOne);
133
- }
134
- // ── Guild-wide checking ────────────────────────────────────────────────
135
- /**
136
- * Resolve the descriptor path for a tool registered in guild.json.
137
- *
138
- * Tools live at: `{home}/{categoryDir}/{name}/{descriptorFile}`
139
- */
140
- function resolveDescriptorPath(home, name, category) {
141
- const categoryDir = category === 'tools' ? 'tools' : 'engines';
142
- const descriptorFile = category === 'tools' ? 'nexus-tool.json' : 'nexus-engine.json';
143
- return path.join(home, categoryDir, name, descriptorFile);
144
- }
145
- /**
146
- * Check preconditions for all tools and engines in a guild.
147
- *
148
- * Returns a result for every registered tool, including those with no preconditions
149
- * (which are always marked available: true).
150
- */
151
- export function checkAllPreconditions(home, config) {
152
- const results = [];
153
- for (const name of Object.keys(config.tools)) {
154
- const descriptorPath = resolveDescriptorPath(home, name, 'tools');
155
- const preconditions = readPreconditions(descriptorPath);
156
- const checks = checkPreconditions(preconditions);
157
- const failures = checks.filter(c => !c.passed).map(c => c.message);
158
- results.push({
159
- name,
160
- category: 'tools',
161
- available: failures.length === 0,
162
- checks,
163
- failures,
164
- });
165
- }
166
- for (const name of Object.keys(config.engines)) {
167
- const descriptorPath = resolveDescriptorPath(home, name, 'engines');
168
- const preconditions = readPreconditions(descriptorPath);
169
- const checks = checkPreconditions(preconditions);
170
- const failures = checks.filter(c => !c.passed).map(c => c.message);
171
- results.push({
172
- name,
173
- category: 'engines',
174
- available: failures.length === 0,
175
- checks,
176
- failures,
177
- });
178
- }
179
- return results;
180
- }
181
- /**
182
- * Check preconditions for a single tool by its descriptor path.
183
- * Convenience wrapper for install-time warnings.
184
- */
185
- export function checkToolPreconditions(descriptorPath) {
186
- const preconditions = readPreconditions(descriptorPath);
187
- return checkPreconditions(preconditions);
188
- }
189
- //# sourceMappingURL=preconditions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preconditions.js","sourceRoot":"","sources":["../../../src/legacy/1/preconditions.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- export interface RehydrateResult {
2
- /** Workshop bare clones restored from remote URLs. */
3
- workshopsCloned: string[];
4
- /** Workshops that failed to clone (name + error message). */
5
- workshopsFailed: {
6
- name: string;
7
- error: string;
8
- }[];
9
- /** Tools restored from package.json (registry/git-url). */
10
- fromPackageJson: number;
11
- /** Tools restored from on-disk source (workshop/tarball). */
12
- fromSlotSource: string[];
13
- /** Tools that need manual re-linking. */
14
- needsRelink: string[];
15
- }
16
- /**
17
- * Rehydrate a guild's node_modules from tracked state.
18
- *
19
- * Idempotent and safe to run at any time.
20
- */
21
- export declare function rehydrate(home: string): RehydrateResult;
22
- //# sourceMappingURL=rehydrate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rehydrate.d.ts","sourceRoot":"","sources":["../../../src/legacy/1/rehydrate.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,6DAA6D;IAC7D,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnD,2DAA2D;IAC3D,eAAe,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,yCAAyC;IACzC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAoFvD"}