@shardworks/nexus 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.
- package/README.md +208 -0
- package/dist/cli.d.ts +4 -8
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -8
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts +14 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +27 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +19 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +90 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/plugin.d.ts +28 -0
- package/dist/commands/plugin.d.ts.map +1 -0
- package/dist/commands/plugin.js +174 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/status.d.ts +16 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +54 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/test-helpers.d.ts +18 -0
- package/dist/commands/test-helpers.d.ts.map +1 -0
- package/dist/commands/test-helpers.js +56 -0
- package/dist/commands/test-helpers.js.map +1 -0
- package/dist/commands/upgrade.d.ts +13 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +21 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/version.d.ts +15 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +52 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/helpers.d.ts +27 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +48 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/program.d.ts +11 -26
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +45 -92
- package/dist/program.js.map +1 -1
- package/package.json +9 -20
- package/dist/v1/cli.d.ts +0 -3
- package/dist/v1/cli.d.ts.map +0 -1
- package/dist/v1/cli.js +0 -4
- package/dist/v1/cli.js.map +0 -1
- package/dist/v1/commands/anima.d.ts +0 -2
- package/dist/v1/commands/anima.d.ts.map +0 -1
- package/dist/v1/commands/anima.js +0 -176
- package/dist/v1/commands/anima.js.map +0 -1
- package/dist/v1/commands/audit.d.ts +0 -2
- package/dist/v1/commands/audit.d.ts.map +0 -1
- package/dist/v1/commands/audit.js +0 -42
- package/dist/v1/commands/audit.js.map +0 -1
- package/dist/v1/commands/clock.d.ts +0 -2
- package/dist/v1/commands/clock.d.ts.map +0 -1
- package/dist/v1/commands/clock.js +0 -185
- package/dist/v1/commands/clock.js.map +0 -1
- package/dist/v1/commands/consult.d.ts +0 -9
- package/dist/v1/commands/consult.d.ts.map +0 -1
- package/dist/v1/commands/consult.js +0 -105
- package/dist/v1/commands/consult.js.map +0 -1
- package/dist/v1/commands/convene.d.ts +0 -2
- package/dist/v1/commands/convene.d.ts.map +0 -1
- package/dist/v1/commands/convene.js +0 -78
- package/dist/v1/commands/convene.js.map +0 -1
- package/dist/v1/commands/conversation.d.ts +0 -2
- package/dist/v1/commands/conversation.d.ts.map +0 -1
- package/dist/v1/commands/conversation.js +0 -140
- package/dist/v1/commands/conversation.js.map +0 -1
- package/dist/v1/commands/dashboard.d.ts +0 -2
- package/dist/v1/commands/dashboard.d.ts.map +0 -1
- package/dist/v1/commands/dashboard.js +0 -36
- package/dist/v1/commands/dashboard.js.map +0 -1
- package/dist/v1/commands/dispatch.d.ts +0 -2
- package/dist/v1/commands/dispatch.d.ts.map +0 -1
- package/dist/v1/commands/dispatch.js +0 -41
- package/dist/v1/commands/dispatch.js.map +0 -1
- package/dist/v1/commands/event.d.ts +0 -2
- package/dist/v1/commands/event.d.ts.map +0 -1
- package/dist/v1/commands/event.js +0 -65
- package/dist/v1/commands/event.js.map +0 -1
- package/dist/v1/commands/init.d.ts +0 -2
- package/dist/v1/commands/init.d.ts.map +0 -1
- package/dist/v1/commands/init.js +0 -98
- package/dist/v1/commands/init.js.map +0 -1
- package/dist/v1/commands/install-tool.d.ts +0 -2
- package/dist/v1/commands/install-tool.d.ts.map +0 -1
- package/dist/v1/commands/install-tool.js +0 -74
- package/dist/v1/commands/install-tool.js.map +0 -1
- package/dist/v1/commands/rehydrate.d.ts +0 -2
- package/dist/v1/commands/rehydrate.d.ts.map +0 -1
- package/dist/v1/commands/rehydrate.js +0 -43
- package/dist/v1/commands/rehydrate.js.map +0 -1
- package/dist/v1/commands/remove-tool.d.ts +0 -2
- package/dist/v1/commands/remove-tool.d.ts.map +0 -1
- package/dist/v1/commands/remove-tool.js +0 -25
- package/dist/v1/commands/remove-tool.js.map +0 -1
- package/dist/v1/commands/session.d.ts +0 -2
- package/dist/v1/commands/session.d.ts.map +0 -1
- package/dist/v1/commands/session.js +0 -93
- package/dist/v1/commands/session.js.map +0 -1
- package/dist/v1/commands/signal.d.ts +0 -2
- package/dist/v1/commands/signal.d.ts.map +0 -1
- package/dist/v1/commands/signal.js +0 -36
- package/dist/v1/commands/signal.js.map +0 -1
- package/dist/v1/commands/status.d.ts +0 -2
- package/dist/v1/commands/status.d.ts.map +0 -1
- package/dist/v1/commands/status.js +0 -111
- package/dist/v1/commands/status.js.map +0 -1
- package/dist/v1/commands/tool.d.ts +0 -2
- package/dist/v1/commands/tool.d.ts.map +0 -1
- package/dist/v1/commands/tool.js +0 -47
- package/dist/v1/commands/tool.js.map +0 -1
- package/dist/v1/commands/upgrade-books.d.ts +0 -2
- package/dist/v1/commands/upgrade-books.d.ts.map +0 -1
- package/dist/v1/commands/upgrade-books.js +0 -33
- package/dist/v1/commands/upgrade-books.js.map +0 -1
- package/dist/v1/commands/upgrade.d.ts +0 -2
- package/dist/v1/commands/upgrade.d.ts.map +0 -1
- package/dist/v1/commands/upgrade.js +0 -222
- package/dist/v1/commands/upgrade.js.map +0 -1
- package/dist/v1/commands/version.d.ts +0 -2
- package/dist/v1/commands/version.d.ts.map +0 -1
- package/dist/v1/commands/version.js +0 -80
- package/dist/v1/commands/version.js.map +0 -1
- package/dist/v1/commands/workshop.d.ts +0 -2
- package/dist/v1/commands/workshop.d.ts.map +0 -1
- package/dist/v1/commands/workshop.js +0 -128
- package/dist/v1/commands/workshop.js.map +0 -1
- package/dist/v1/commands/writ.d.ts +0 -2
- package/dist/v1/commands/writ.d.ts.map +0 -1
- package/dist/v1/commands/writ.js +0 -202
- package/dist/v1/commands/writ.js.map +0 -1
- package/dist/v1/index.d.ts +0 -2
- package/dist/v1/index.d.ts.map +0 -1
- package/dist/v1/index.js +0 -2
- package/dist/v1/index.js.map +0 -1
- package/dist/v1/program.d.ts +0 -2
- package/dist/v1/program.d.ts.map +0 -1
- package/dist/v1/program.js +0 -70
- package/dist/v1/program.js.map +0 -1
- package/dist/v1/resolve-home.d.ts +0 -16
- package/dist/v1/resolve-home.d.ts.map +0 -1
- package/dist/v1/resolve-home.js +0 -18
- package/dist/v1/resolve-home.js.map +0 -1
package/dist/program.js
CHANGED
|
@@ -1,40 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* nsg program — dynamic Commander setup
|
|
2
|
+
* nsg program — dynamic Commander setup.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Two command sources:
|
|
5
|
+
*
|
|
6
|
+
* 1. **Framework commands** — hardcoded in the CLI package (init, status,
|
|
7
|
+
* version, upgrade, plugin management). Always available, even without
|
|
8
|
+
* a guild.
|
|
9
|
+
*
|
|
10
|
+
* 2. **Plugin tools** — discovered at runtime via The Instrumentarium
|
|
11
|
+
* (tools apparatus). Only available when a guild is present and the
|
|
12
|
+
* tools apparatus is installed.
|
|
6
13
|
*
|
|
7
14
|
* Tool names are auto-grouped when multiple tools share a hyphen prefix:
|
|
8
|
-
* '
|
|
15
|
+
* 'plugin-list' + 'plugin-install' → 'nsg plugin list' / 'nsg plugin install'.
|
|
9
16
|
* A tool like 'show-writ' stays flat ('nsg show-writ') since no other tool
|
|
10
17
|
* starts with 'show-'.
|
|
11
|
-
*
|
|
12
|
-
* Commander lives here; rig handles all manifest and import logic.
|
|
13
18
|
*/
|
|
14
19
|
import path from 'node:path';
|
|
15
20
|
import { Command } from 'commander';
|
|
16
21
|
import { z } from 'zod';
|
|
17
|
-
import { findGuildRoot,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
* e.g. 'writId' → '--writ-id'
|
|
22
|
-
*/
|
|
23
|
-
export function toFlag(key) {
|
|
24
|
-
return `--${key.replace(/([A-Z])/g, (c) => `-${c.toLowerCase()}`)}`;
|
|
25
|
-
}
|
|
22
|
+
import { findGuildRoot, guild } from '@shardworks/nexus-core';
|
|
23
|
+
import { createGuild } from '@shardworks/nexus-arbor';
|
|
24
|
+
import { frameworkCommands } from "./commands/index.js";
|
|
25
|
+
import { toFlag, isBooleanSchema, findGroupPrefixes } from "./helpers.js";
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
28
|
-
* Used to register Commander flags without <value> for boolean params.
|
|
29
|
-
*/
|
|
30
|
-
export function isBooleanSchema(schema) {
|
|
31
|
-
return (schema.safeParse(true).success &&
|
|
32
|
-
schema.safeParse(false).success &&
|
|
33
|
-
!schema.safeParse(42).success &&
|
|
34
|
-
!schema.safeParse('test').success);
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Build a Commander command from a Tool.
|
|
27
|
+
* Build a Commander command from a ToolDefinition.
|
|
38
28
|
*
|
|
39
29
|
* Generates options from the Zod param shape. Commander converts kebab-case
|
|
40
30
|
* flags back to camelCase in opts(), matching the tool's schema keys directly.
|
|
@@ -42,7 +32,7 @@ export function isBooleanSchema(schema) {
|
|
|
42
32
|
* The action handler validates params through the tool's Zod schema before
|
|
43
33
|
* calling the handler — Zod error messages are surfaced cleanly.
|
|
44
34
|
*/
|
|
45
|
-
function buildToolCommand(commandName, toolDef
|
|
35
|
+
function buildToolCommand(commandName, toolDef) {
|
|
46
36
|
const cmd = new Command(commandName).description(toolDef.description);
|
|
47
37
|
const shape = toolDef.params.shape;
|
|
48
38
|
for (const [key, schema] of Object.entries(shape)) {
|
|
@@ -62,7 +52,7 @@ function buildToolCommand(commandName, toolDef, ctx) {
|
|
|
62
52
|
cmd.action(async (opts) => {
|
|
63
53
|
try {
|
|
64
54
|
const validated = toolDef.params.parse(opts);
|
|
65
|
-
const result = await toolDef.handler(validated
|
|
55
|
+
const result = await toolDef.handler(validated);
|
|
66
56
|
const output = typeof result === 'string' ? result : JSON.stringify(result, null, 2);
|
|
67
57
|
console.log(output);
|
|
68
58
|
}
|
|
@@ -75,64 +65,23 @@ function buildToolCommand(commandName, toolDef, ctx) {
|
|
|
75
65
|
return cmd;
|
|
76
66
|
}
|
|
77
67
|
/**
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
* Built-in tools (version, status, rig-*) don't use book access. If they
|
|
81
|
-
* ever try, an informative error is thrown rather than a cryptic failure.
|
|
82
|
-
*/
|
|
83
|
-
function createMinimalRigContext(home) {
|
|
84
|
-
return {
|
|
85
|
-
home,
|
|
86
|
-
book() {
|
|
87
|
-
throw new Error('book() is not available outside a guild context.');
|
|
88
|
-
},
|
|
89
|
-
rigBook() {
|
|
90
|
-
throw new Error('rigBook() is not available outside a guild context.');
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Determine which hyphen prefixes have enough tools to warrant a group.
|
|
96
|
-
*
|
|
97
|
-
* Returns a Set of prefixes that have 2+ tools sharing them.
|
|
98
|
-
* 'rig-list' + 'rig-install' → 'rig' is a group.
|
|
99
|
-
* 'show-writ' alone → 'show' is NOT a group.
|
|
100
|
-
*/
|
|
101
|
-
export function findGroupPrefixes(tools) {
|
|
102
|
-
const prefixCounts = new Map();
|
|
103
|
-
for (const t of tools) {
|
|
104
|
-
const idx = t.name.indexOf('-');
|
|
105
|
-
if (idx === -1)
|
|
106
|
-
continue;
|
|
107
|
-
const prefix = t.name.slice(0, idx);
|
|
108
|
-
prefixCounts.set(prefix, (prefixCounts.get(prefix) ?? 0) + 1);
|
|
109
|
-
}
|
|
110
|
-
const groups = new Set();
|
|
111
|
-
for (const [prefix, count] of prefixCounts) {
|
|
112
|
-
if (count >= 2)
|
|
113
|
-
groups.add(prefix);
|
|
114
|
-
}
|
|
115
|
-
return groups;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Register all tools as Commander commands.
|
|
68
|
+
* Register tool definitions as Commander commands.
|
|
119
69
|
*
|
|
120
70
|
* Tools whose hyphen prefix appears in `groupPrefixes` are nested:
|
|
121
|
-
* '
|
|
71
|
+
* 'plugin-list' → 'nsg plugin list'.
|
|
122
72
|
*
|
|
123
73
|
* All other tools are registered flat:
|
|
124
74
|
* 'show-writ' → 'nsg show-writ'.
|
|
125
75
|
* 'signal' → 'nsg signal'.
|
|
126
76
|
*/
|
|
127
|
-
function
|
|
77
|
+
function registerTools(program, tools) {
|
|
128
78
|
const groupPrefixes = findGroupPrefixes(tools);
|
|
129
79
|
const groups = new Map();
|
|
130
80
|
for (const toolDef of tools) {
|
|
131
|
-
const ctx = ctxFactory(toolDef);
|
|
132
81
|
const idx = toolDef.name.indexOf('-');
|
|
133
82
|
// No hyphen, or prefix doesn't qualify as a group → flat command
|
|
134
83
|
if (idx === -1 || !groupPrefixes.has(toolDef.name.slice(0, idx))) {
|
|
135
|
-
program.addCommand(buildToolCommand(toolDef.name, toolDef
|
|
84
|
+
program.addCommand(buildToolCommand(toolDef.name, toolDef));
|
|
136
85
|
continue;
|
|
137
86
|
}
|
|
138
87
|
// Nested: split on first hyphen
|
|
@@ -144,7 +93,7 @@ function registerAllTools(program, tools, ctxFactory) {
|
|
|
144
93
|
program.addCommand(group);
|
|
145
94
|
groups.set(groupName, group);
|
|
146
95
|
}
|
|
147
|
-
group.addCommand(buildToolCommand(subName, toolDef
|
|
96
|
+
group.addCommand(buildToolCommand(subName, toolDef));
|
|
148
97
|
}
|
|
149
98
|
}
|
|
150
99
|
// ── Entry ──────────────────────────────────────────────────────────────
|
|
@@ -164,10 +113,10 @@ export async function main() {
|
|
|
164
113
|
}
|
|
165
114
|
const preOpts = pre.opts();
|
|
166
115
|
const program = new Command('nsg')
|
|
167
|
-
.description('Nexus Mk 2.1 —
|
|
116
|
+
.description('Nexus Mk 2.1 — guild CLI')
|
|
168
117
|
.option('--guild-root <path>', 'Guild root directory (default: auto-detect from cwd)');
|
|
169
|
-
// Discover guild root.
|
|
170
|
-
// plugin tools only load when a guild is found.
|
|
118
|
+
// Discover guild root. Framework commands work without a guild;
|
|
119
|
+
// plugin tools only load when a guild with The Instrumentarium is found.
|
|
171
120
|
let home;
|
|
172
121
|
try {
|
|
173
122
|
home = preOpts.guildRoot
|
|
@@ -177,22 +126,26 @@ export async function main() {
|
|
|
177
126
|
catch {
|
|
178
127
|
// Not in a guild
|
|
179
128
|
}
|
|
180
|
-
// Always register
|
|
181
|
-
//
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
const builtinHome = home ?? process.cwd();
|
|
188
|
-
registerAllTools(program, builtins, () => createMinimalRigContext(builtinHome));
|
|
189
|
-
// Load guild rig tools when inside a guild
|
|
129
|
+
// Always register framework commands (init, status, version, upgrade,
|
|
130
|
+
// plugin management). These work with or without a guild.
|
|
131
|
+
registerTools(program, frameworkCommands);
|
|
132
|
+
// Load plugin-contributed tools when inside a guild.
|
|
133
|
+
// Tools are discovered via The Instrumentarium (tools apparatus).
|
|
134
|
+
// If the guild doesn't have the tools apparatus installed, no plugin
|
|
135
|
+
// tools are available — only framework commands.
|
|
190
136
|
if (home) {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
137
|
+
await createGuild(home);
|
|
138
|
+
try {
|
|
139
|
+
const instrumentarium = guild().apparatus('tools');
|
|
140
|
+
const pluginTools = instrumentarium.list()
|
|
141
|
+
.filter((r) => !r.definition.callableBy || r.definition.callableBy.includes('cli'))
|
|
142
|
+
.map((r) => r.definition);
|
|
143
|
+
registerTools(program, pluginTools);
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// No Instrumentarium installed — only framework commands available.
|
|
147
|
+
// This is fine; the guild just doesn't have plugin-contributed CLI tools.
|
|
148
|
+
}
|
|
196
149
|
}
|
|
197
150
|
program.parse(process.argv);
|
|
198
151
|
}
|
package/dist/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,42 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shardworks/nexus",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.101",
|
|
4
4
|
"license": "ISC",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/shardworks/nexus",
|
|
8
|
-
"directory": "packages/cli"
|
|
8
|
+
"directory": "packages/framework/cli"
|
|
9
9
|
},
|
|
10
|
-
"description": "
|
|
10
|
+
"description": "The nsg CLI — framework commands and dynamic plugin-contributed tool discovery via The Instrumentarium",
|
|
11
11
|
"type": "module",
|
|
12
12
|
"bin": {
|
|
13
|
-
"
|
|
14
|
-
"nsg": "./dist/cli.js",
|
|
15
|
-
"nsg1": "./dist/v1/cli.js"
|
|
13
|
+
"nsg": "./dist/cli.js"
|
|
16
14
|
},
|
|
17
15
|
"exports": {
|
|
18
16
|
".": {
|
|
19
|
-
"types": "./dist/
|
|
20
|
-
"import": "./dist/
|
|
21
|
-
},
|
|
22
|
-
"./commands/*": {
|
|
23
|
-
"types": "./dist/v1/commands/*.d.ts",
|
|
24
|
-
"import": "./dist/v1/commands/*.js"
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"import": "./dist/index.js"
|
|
25
19
|
}
|
|
26
20
|
},
|
|
27
21
|
"dependencies": {
|
|
28
|
-
"@shardworks/guild-monitor": "0.1.16",
|
|
29
|
-
"better-sqlite3": "12.8.0",
|
|
30
22
|
"commander": "14.0.3",
|
|
31
23
|
"zod": "4.3.6",
|
|
32
|
-
"@shardworks/
|
|
33
|
-
"@shardworks/nexus-core": "0.1.
|
|
34
|
-
"@shardworks/
|
|
35
|
-
"@shardworks/nexus-stdlib": "0.1.99"
|
|
24
|
+
"@shardworks/nexus-arbor": "0.1.101",
|
|
25
|
+
"@shardworks/nexus-core": "0.1.101",
|
|
26
|
+
"@shardworks/tools-apparatus": "0.1.101"
|
|
36
27
|
},
|
|
37
28
|
"devDependencies": {
|
|
38
|
-
"@commander-js/extra-typings": "14.0.0",
|
|
39
|
-
"@types/better-sqlite3": "7.6.13",
|
|
40
29
|
"@types/node": "25.5.0"
|
|
41
30
|
},
|
|
42
31
|
"files": [
|
package/dist/v1/cli.d.ts
DELETED
package/dist/v1/cli.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/v1/cli.ts"],"names":[],"mappings":""}
|
package/dist/v1/cli.js
DELETED
package/dist/v1/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/v1/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anima.d.ts","sourceRoot":"","sources":["../../../src/v1/commands/anima.ts"],"names":[],"mappings":"AAQA,wBAAgB,gBAAgB,gCA6L/B"}
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import { createCommand } from 'commander';
|
|
2
|
-
import { instantiate, manifest, listAnimas, showAnima, updateAnima, removeAnima, checkAnimaStaleness, checkAllAnimaStaleness, } from '@shardworks/nexus-core';
|
|
3
|
-
import { resolveHome } from "../resolve-home.js";
|
|
4
|
-
export function makeAnimaCommand() {
|
|
5
|
-
const anima = createCommand('anima')
|
|
6
|
-
.description('Manage animas');
|
|
7
|
-
// nsg anima create <name> --roles <roles>
|
|
8
|
-
anima.addCommand(createCommand('create')
|
|
9
|
-
.description('Create a new anima in the guild')
|
|
10
|
-
.argument('<name>', 'Name for the new anima')
|
|
11
|
-
.requiredOption('--roles <roles>', 'Comma-separated roles (e.g. artificer,sage)')
|
|
12
|
-
.option('--curriculum <curriculum>', 'Curriculum to assign')
|
|
13
|
-
.option('--temperament <temperament>', 'Temperament to assign')
|
|
14
|
-
.action((name, options, cmd) => {
|
|
15
|
-
const home = resolveHome(cmd);
|
|
16
|
-
const roles = options.roles.split(',').map(r => r.trim()).filter(Boolean);
|
|
17
|
-
if (roles.length === 0) {
|
|
18
|
-
console.error('Error: at least one role is required');
|
|
19
|
-
process.exitCode = 1;
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
try {
|
|
23
|
-
const result = instantiate({
|
|
24
|
-
home, name, roles,
|
|
25
|
-
curriculum: options.curriculum,
|
|
26
|
-
temperament: options.temperament,
|
|
27
|
-
});
|
|
28
|
-
console.log(`Anima "${result.name}" created (id: ${result.animaId})`);
|
|
29
|
-
console.log(` Roles: ${result.roles.join(', ')}`);
|
|
30
|
-
if (result.curriculum)
|
|
31
|
-
console.log(` Curriculum: ${result.curriculum}`);
|
|
32
|
-
if (result.temperament)
|
|
33
|
-
console.log(` Temperament: ${result.temperament}`);
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
console.error(`Error: ${err.message}`);
|
|
37
|
-
process.exitCode = 1;
|
|
38
|
-
}
|
|
39
|
-
}));
|
|
40
|
-
// nsg anima list [--status <status>] [--role <role>]
|
|
41
|
-
anima.addCommand(createCommand('list')
|
|
42
|
-
.description('List animas in the guild')
|
|
43
|
-
.option('--status <status>', 'Filter by status (aspirant, active, retired)')
|
|
44
|
-
.option('--role <role>', 'Filter by role')
|
|
45
|
-
.action((options, cmd) => {
|
|
46
|
-
const home = resolveHome(cmd);
|
|
47
|
-
try {
|
|
48
|
-
const animas = listAnimas(home, options);
|
|
49
|
-
if (animas.length === 0) {
|
|
50
|
-
console.log('No animas found.');
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
// Check staleness for all active animas in one pass
|
|
54
|
-
const stalenessMap = checkAllAnimaStaleness(home);
|
|
55
|
-
console.log(`${animas.length} anima${animas.length === 1 ? '' : 's'}:\n`);
|
|
56
|
-
for (const a of animas) {
|
|
57
|
-
const staleness = stalenessMap.get(a.id);
|
|
58
|
-
const statusIcon = a.status === 'active' ? '●' : a.status === 'retired' ? '○' : '◌';
|
|
59
|
-
const staleFlag = staleness ? ' ⚠ stale' : '';
|
|
60
|
-
console.log(` ${statusIcon} ${a.name} [${a.id}]${staleFlag}`);
|
|
61
|
-
console.log(` Roles: ${a.roles.join(', ')}`);
|
|
62
|
-
if (staleness?.curriculum) {
|
|
63
|
-
console.log(` Curriculum: ${staleness.curriculum.composedVersion} → ${staleness.curriculum.currentVersion} available`);
|
|
64
|
-
}
|
|
65
|
-
if (staleness?.temperament) {
|
|
66
|
-
console.log(` Temperament: ${staleness.temperament.composedVersion} → ${staleness.temperament.currentVersion} available`);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
catch (err) {
|
|
71
|
-
console.error(`Error: ${err.message}`);
|
|
72
|
-
process.exitCode = 1;
|
|
73
|
-
}
|
|
74
|
-
}));
|
|
75
|
-
// nsg anima show <name>
|
|
76
|
-
anima.addCommand(createCommand('show')
|
|
77
|
-
.description('Show detailed information about an anima')
|
|
78
|
-
.argument('<name>', 'Anima ID or name')
|
|
79
|
-
.action((name, _, cmd) => {
|
|
80
|
-
const home = resolveHome(cmd);
|
|
81
|
-
try {
|
|
82
|
-
const result = showAnima(home, name);
|
|
83
|
-
if (!result) {
|
|
84
|
-
console.error(`Anima "${name}" not found.`);
|
|
85
|
-
process.exitCode = 1;
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
const staleness = result.status === 'active'
|
|
89
|
-
? checkAnimaStaleness(home, result.id)
|
|
90
|
-
: null;
|
|
91
|
-
console.log(`${result.name} [${result.id}]`);
|
|
92
|
-
console.log(` Status: ${result.status}${staleness?.stale ? ' ⚠ stale composition' : ''}`);
|
|
93
|
-
console.log(` Roles: ${result.roles.join(', ')}`);
|
|
94
|
-
if (result.curriculumName) {
|
|
95
|
-
const currStale = staleness?.curriculum;
|
|
96
|
-
const currLabel = currStale
|
|
97
|
-
? ` (${currStale.composedVersion} → ${currStale.currentVersion} available)`
|
|
98
|
-
: '';
|
|
99
|
-
console.log(` Curriculum: ${result.curriculumName} v${result.curriculumVersion}${currLabel}`);
|
|
100
|
-
}
|
|
101
|
-
if (result.temperamentName) {
|
|
102
|
-
const tempStale = staleness?.temperament;
|
|
103
|
-
const tempLabel = tempStale
|
|
104
|
-
? ` (${tempStale.composedVersion} → ${tempStale.currentVersion} available)`
|
|
105
|
-
: '';
|
|
106
|
-
console.log(` Temperament: ${result.temperamentName} v${result.temperamentVersion}${tempLabel}`);
|
|
107
|
-
}
|
|
108
|
-
console.log(` Created: ${result.createdAt}`);
|
|
109
|
-
console.log(` Updated: ${result.updatedAt}`);
|
|
110
|
-
}
|
|
111
|
-
catch (err) {
|
|
112
|
-
console.error(`Error: ${err.message}`);
|
|
113
|
-
process.exitCode = 1;
|
|
114
|
-
}
|
|
115
|
-
}));
|
|
116
|
-
// nsg anima update <name> [--status <status>] [--roles <roles>]
|
|
117
|
-
anima.addCommand(createCommand('update')
|
|
118
|
-
.description('Update an anima\'s status or roles')
|
|
119
|
-
.argument('<name>', 'Anima ID or name')
|
|
120
|
-
.option('--status <status>', 'New status (aspirant, active, retired)')
|
|
121
|
-
.option('--roles <roles>', 'New roles (comma-separated, replaces all)')
|
|
122
|
-
.action((name, options, cmd) => {
|
|
123
|
-
const home = resolveHome(cmd);
|
|
124
|
-
try {
|
|
125
|
-
const roles = options.roles?.split(',').map(r => r.trim()).filter(Boolean);
|
|
126
|
-
const result = updateAnima(home, name, { status: options.status, roles });
|
|
127
|
-
console.log(`Anima "${result.name}" updated.`);
|
|
128
|
-
console.log(` Status: ${result.status}`);
|
|
129
|
-
console.log(` Roles: ${result.roles.join(', ')}`);
|
|
130
|
-
}
|
|
131
|
-
catch (err) {
|
|
132
|
-
console.error(`Error: ${err.message}`);
|
|
133
|
-
process.exitCode = 1;
|
|
134
|
-
}
|
|
135
|
-
}));
|
|
136
|
-
// nsg anima remove <name>
|
|
137
|
-
anima.addCommand(createCommand('remove')
|
|
138
|
-
.description('Remove (retire) an anima from the guild')
|
|
139
|
-
.argument('<name>', 'Anima ID or name')
|
|
140
|
-
.action((name, _, cmd) => {
|
|
141
|
-
const home = resolveHome(cmd);
|
|
142
|
-
try {
|
|
143
|
-
removeAnima(home, name);
|
|
144
|
-
console.log(`Anima "${name}" removed.`);
|
|
145
|
-
}
|
|
146
|
-
catch (err) {
|
|
147
|
-
console.error(`Error: ${err.message}`);
|
|
148
|
-
process.exitCode = 1;
|
|
149
|
-
}
|
|
150
|
-
}));
|
|
151
|
-
// nsg anima manifest <name> — special debug/inspect verb
|
|
152
|
-
anima.addCommand(createCommand('manifest')
|
|
153
|
-
.description('Resolve an anima\'s composition and show session config')
|
|
154
|
-
.argument('<anima>', 'Anima name to manifest')
|
|
155
|
-
.option('--json', 'Output full session config as JSON')
|
|
156
|
-
.action(async (animaName, options, cmd) => {
|
|
157
|
-
const home = resolveHome(cmd);
|
|
158
|
-
try {
|
|
159
|
-
const result = await manifest(home, animaName);
|
|
160
|
-
if (options.json) {
|
|
161
|
-
console.log(JSON.stringify(result, null, 2));
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
console.log(`Anima: ${result.anima.name} (${result.anima.roles.join(', ')})`);
|
|
165
|
-
console.log(`Tools: ${result.tools.map(i => i.name).join(', ')}`);
|
|
166
|
-
console.log(`System prompt: ${result.systemPrompt.length} chars`);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
catch (err) {
|
|
170
|
-
console.error(`Error: ${err.message}`);
|
|
171
|
-
process.exitCode = 1;
|
|
172
|
-
}
|
|
173
|
-
}));
|
|
174
|
-
return anima;
|
|
175
|
-
}
|
|
176
|
-
//# sourceMappingURL=anima.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anima.js","sourceRoot":"","sources":["../../../src/v1/commands/anima.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/v1/commands/audit.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,gCA0C/B"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { createCommand } from 'commander';
|
|
2
|
-
import { listAuditLog } from '@shardworks/nexus-core';
|
|
3
|
-
import { resolveHome } from "../resolve-home.js";
|
|
4
|
-
export function makeAuditCommand() {
|
|
5
|
-
const cmd = createCommand('audit')
|
|
6
|
-
.description('View audit log');
|
|
7
|
-
// nsg audit list [--actor <name>] [--action <action>] [--target <type>] [--limit <n>]
|
|
8
|
-
cmd.addCommand(createCommand('list')
|
|
9
|
-
.description('List audit log entries')
|
|
10
|
-
.option('--actor <name>', 'Filter by actor')
|
|
11
|
-
.option('--action <action>', 'Filter by action')
|
|
12
|
-
.option('--target <type>', 'Filter by target type')
|
|
13
|
-
.option('--target-id <id>', 'Filter by target ID')
|
|
14
|
-
.option('--limit <n>', 'Maximum number of results', '20')
|
|
15
|
-
.action((options, cmd) => {
|
|
16
|
-
const home = resolveHome(cmd);
|
|
17
|
-
try {
|
|
18
|
-
const items = listAuditLog(home, {
|
|
19
|
-
actor: options.actor,
|
|
20
|
-
action: options.action,
|
|
21
|
-
targetType: options.target,
|
|
22
|
-
targetId: options.targetId,
|
|
23
|
-
limit: parseInt(options.limit, 10),
|
|
24
|
-
});
|
|
25
|
-
if (items.length === 0) {
|
|
26
|
-
console.log('No audit entries found.');
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
console.log(`${items.length} audit entr${items.length === 1 ? 'y' : 'ies'}:\n`);
|
|
30
|
-
for (const a of items) {
|
|
31
|
-
const target = a.targetType ? ` ${a.targetType}:${a.targetId}` : '';
|
|
32
|
-
console.log(` ${a.timestamp} ${a.actor} ${a.action}${target}`);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
console.error(`Error: ${err.message}`);
|
|
37
|
-
process.exitCode = 1;
|
|
38
|
-
}
|
|
39
|
-
}));
|
|
40
|
-
return cmd;
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=audit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/v1/commands/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC;SAC/B,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAEjC,sFAAsF;IACtF,GAAG,CAAC,UAAU,CACZ,aAAa,CAAC,MAAM,CAAC;SAClB,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;SAC3C,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;SAC/C,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;SAClD,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;SACjD,MAAM,CAAC,aAAa,EAAE,2BAA2B,EAAE,IAAI,CAAC;SACxD,MAAM,CAAC,CAAC,OAA+F,EAAE,GAAG,EAAE,EAAE;QAC/G,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE;gBAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,UAAU,EAAE,OAAO,CAAC,MAAM;gBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;aACnC,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,cAAc,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YAChF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,UAAW,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CACL,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../../src/v1/commands/clock.ts"],"names":[],"mappings":"AAsCA,wBAAgB,gBAAgB,gCA+K/B"}
|