wicked-crew 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/evidence.d.ts +97 -0
- package/dist/api/evidence.d.ts.map +1 -0
- package/dist/api/evidence.js +144 -0
- package/dist/api/evidence.js.map +1 -0
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +379 -12
- package/dist/api/routes.js.map +1 -1
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +7 -2
- package/dist/api/server.js.map +1 -1
- package/dist/cli/index.js +31 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/core/adapter.d.ts +57 -2
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +480 -3
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/bridge-path.d.ts +34 -0
- package/dist/core/bridge-path.d.ts.map +1 -0
- package/dist/core/bridge-path.js +67 -0
- package/dist/core/bridge-path.js.map +1 -0
- package/dist/core/types.d.ts +146 -5
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +3 -1
- package/dist/core/types.js.map +1 -1
- package/dist/studio/assets/index-CckxWxam.js +420 -0
- package/dist/studio/assets/index-CjQFuKL4.css +32 -0
- package/dist/studio/index.html +5 -2
- package/package.json +7 -3
- package/dist/studio/assets/index-CYdz3nG5.js +0 -50
- package/dist/studio/assets/index-O14t6s9U.css +0 -32
package/dist/core/adapter.js
CHANGED
|
@@ -1,10 +1,161 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';
|
|
2
|
+
import { execFile } from 'node:child_process';
|
|
3
|
+
import { mkdir, access, readFile, writeFile, chmod, rm } from 'node:fs/promises';
|
|
4
|
+
import { join, dirname, resolve, isAbsolute, relative, sep } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { homedir } from 'node:os';
|
|
7
|
+
import { promisify } from 'node:util';
|
|
8
|
+
import { randomUUID } from 'node:crypto';
|
|
9
|
+
import { DEFAULT_SETTINGS } from './types.js';
|
|
10
|
+
const execFileAsync = promisify(execFile);
|
|
11
|
+
/** Resolved path under the user's home directory. */
|
|
12
|
+
function wickedDir(...parts) {
|
|
13
|
+
const home = process.env.HOME ?? process.env.USERPROFILE ?? '/tmp';
|
|
14
|
+
return join(home, '.wicked', ...parts);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Workflow overlay directory — mirrors the Rust `workflow_overlay_dir()` logic in
|
|
18
|
+
* `pipeline.rs`. The Rust actor reads drop-in workflow JSONs from this path at startup
|
|
19
|
+
* and (with registerWorkflow NAPI) at runtime. TS must write to the same location so
|
|
20
|
+
* the files are picked up on the next daemon start.
|
|
21
|
+
* • `$WICKED_WORKFLOWS_DIR` — explicit override (matches Rust env check)
|
|
22
|
+
* • `~/.config/wicked-core/workflows` — default (matches Rust default)
|
|
23
|
+
*/
|
|
24
|
+
function workflowOverlayDir() {
|
|
25
|
+
if (process.env.WICKED_WORKFLOWS_DIR)
|
|
26
|
+
return process.env.WICKED_WORKFLOWS_DIR;
|
|
27
|
+
const home = process.env.HOME ?? process.env.USERPROFILE ?? '/tmp';
|
|
28
|
+
return join(home, '.config', 'wicked-core', 'workflows');
|
|
29
|
+
}
|
|
30
|
+
function settingsFilePath() {
|
|
31
|
+
return join(homedir(), '.config', 'wicked-core', 'settings.json');
|
|
32
|
+
}
|
|
33
|
+
/** Find the wicked-core standalone binary for the gate-hook command.
|
|
34
|
+
* Checks common install locations so the Rust actor can build a correct
|
|
35
|
+
* hook command even when loaded as a napi addon (where current_exe() = node).
|
|
36
|
+
*/
|
|
37
|
+
function locateWickedCoreExe() {
|
|
38
|
+
const exeName = process.platform === 'win32' ? 'wicked-core.exe' : 'wicked-core';
|
|
39
|
+
const candidates = [];
|
|
40
|
+
// User-local install (cargo install / manual).
|
|
41
|
+
const home = process.env.HOME ?? process.env.USERPROFILE;
|
|
42
|
+
if (home) {
|
|
43
|
+
candidates.push(join(home, '.local', 'bin', exeName));
|
|
44
|
+
candidates.push(join(home, '.cargo', 'bin', exeName));
|
|
45
|
+
}
|
|
46
|
+
// Monorepo dev build.
|
|
47
|
+
candidates.push(join(dirname(fileURLToPath(import.meta.url)), '../../..', 'wicked-core', 'target', 'release', exeName));
|
|
48
|
+
// PATH lookup.
|
|
49
|
+
const pathDirs = (process.env.PATH ?? '').split(process.platform === 'win32' ? ';' : ':');
|
|
50
|
+
for (const dir of pathDirs) {
|
|
51
|
+
candidates.push(join(dir, exeName));
|
|
52
|
+
}
|
|
53
|
+
const { existsSync } = require('node:fs');
|
|
54
|
+
return candidates.find((p) => existsSync(p));
|
|
55
|
+
}
|
|
2
56
|
// The native addon is a CommonJS cdylib (`index.node`); load it with a CJS
|
|
3
57
|
// require even though this daemon is ESM. This module is the ONLY place that
|
|
4
58
|
// touches wicked-core-ts (DES-STUDIO-001 §5.2/§5.3), so the FINALIZING
|
|
5
59
|
// `subscribe` seam has a blast radius of exactly one file.
|
|
6
60
|
const require = createRequire(import.meta.url);
|
|
7
61
|
const { Core } = require('wicked-core-ts');
|
|
62
|
+
// ── Built-in workflow definitions (crew#44) ──────────────────────────────────
|
|
63
|
+
// Static mirrors of wicked-core workflow defs: feature, bug, migration, survey-repo,
|
|
64
|
+
// repo-graph, domain-graph-slice, memories, onboarding, and chat.
|
|
65
|
+
// Swap for `this.core.listWorkflowsJson()` / `this.core.getWorkflowJson(id)` once
|
|
66
|
+
// the wicked-core-ts NAPI methods land.
|
|
67
|
+
const BUILTIN_WORKFLOWS = [
|
|
68
|
+
{
|
|
69
|
+
id: 'chat',
|
|
70
|
+
is_system: true,
|
|
71
|
+
phases: [
|
|
72
|
+
{ id: 'explore', kind: 'recon', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: [], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: 'onboarding',
|
|
77
|
+
is_system: true,
|
|
78
|
+
phases: [
|
|
79
|
+
{ id: 'index', kind: 'recon', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: [], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
80
|
+
{ id: 'annotate', kind: 'recon', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['index'], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
81
|
+
{ id: 'domain', kind: 'recon', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['annotate'], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: 'feature',
|
|
86
|
+
phases: [
|
|
87
|
+
{ id: 'clarify', kind: 'recon', gate_type: 'value', gate: { human_confirm: { unconditional: false } }, executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: [], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
88
|
+
{ id: 'design', kind: 'recon', gate_type: 'strategy', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['clarify'], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
89
|
+
{ id: 'build', kind: 'build', gate_type: 'execution', gate: 'auto', executes_code: true, verified_evidence: false, required_deliverables: [], depends_on: ['design'], role: 'creator', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
90
|
+
{ id: 'adversarial-review', kind: 'review', gate_type: 'execution', gate: { human_confirm: { unconditional: false } }, executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['build'], role: 'evaluator', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
91
|
+
{ id: 'test', kind: 'test', gate_type: 'execution', gate: { human_confirm_if: 'verdict_not_pass' }, executes_code: false, verified_evidence: true, required_deliverables: [], depends_on: ['build'], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
92
|
+
{ id: 'review', kind: 'review', gate_type: 'execution', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['test'], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
93
|
+
],
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
id: 'bug',
|
|
97
|
+
phases: [
|
|
98
|
+
{ id: 'triage', kind: 'recon', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: [], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
99
|
+
{ id: 'reproduce', kind: 'test', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['triage'], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
100
|
+
{ id: 'fix', kind: 'build', gate_type: 'execution', gate: 'auto', executes_code: true, verified_evidence: false, required_deliverables: [], depends_on: ['reproduce'], role: 'creator', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
101
|
+
{ id: 'verify', kind: 'test', gate_type: 'execution', gate: { human_confirm_if: 'verdict_not_pass' }, executes_code: false, verified_evidence: true, required_deliverables: [], depends_on: ['fix'], role: 'evaluator', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: 'migration',
|
|
106
|
+
phases: [
|
|
107
|
+
{ id: 'plan', kind: 'recon', gate_type: 'strategy', gate: { human_confirm: { unconditional: false } }, executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: [], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
108
|
+
{ id: 'execute', kind: 'build', gate_type: 'execution', gate: 'auto', executes_code: true, verified_evidence: false, required_deliverables: [], depends_on: ['plan'], role: 'creator', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
109
|
+
{ id: 'cutover', kind: 'build', gate_type: 'execution', gate: { human_confirm: { unconditional: true } }, executes_code: true, verified_evidence: false, required_deliverables: [], depends_on: ['execute'], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
110
|
+
{ id: 'verify', kind: 'test', gate_type: 'execution', gate: { human_confirm_if: 'verdict_not_pass' }, executes_code: false, verified_evidence: true, required_deliverables: [], depends_on: ['cutover'], role: 'evaluator', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
111
|
+
{ id: 'cleanup', kind: 'build', gate_type: null, gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['verify'], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
id: 'repo-graph',
|
|
116
|
+
is_system: true,
|
|
117
|
+
phases: [
|
|
118
|
+
{ id: 'index', kind: 'recon', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: [], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
119
|
+
{ id: 'annotate', kind: 'recon', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['index'], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
id: 'survey-repo',
|
|
124
|
+
is_system: true,
|
|
125
|
+
phases: [
|
|
126
|
+
{ id: 'structure', kind: 'recon', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: [], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
127
|
+
{ id: 'stack', kind: 'recon', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['structure'], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
128
|
+
{ id: 'conventions', kind: 'recon', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['stack'], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
129
|
+
],
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
id: 'domain-graph-slice',
|
|
133
|
+
is_system: true,
|
|
134
|
+
phases: [
|
|
135
|
+
{ id: 'identify', kind: 'recon', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: [], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
136
|
+
{ id: 'extract', kind: 'build', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['identify'], role: 'creator', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
137
|
+
{ id: 'validate', kind: 'review', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['extract'], role: 'evaluator', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
138
|
+
],
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
id: 'memories',
|
|
142
|
+
is_system: true,
|
|
143
|
+
phases: [
|
|
144
|
+
{ id: 'gather', kind: 'recon', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: [], role: 'neutral', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
145
|
+
{ id: 'store', kind: 'build', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['gather'], role: 'creator', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
id: 'collab',
|
|
150
|
+
is_system: true,
|
|
151
|
+
phases: [
|
|
152
|
+
{ id: 'propose', kind: 'recon', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: [], role: 'creator', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
153
|
+
{ id: 'critique', kind: 'review', gate_type: 'value', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['propose'], role: 'evaluator', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
154
|
+
{ id: 'revise', kind: 'recon', gate_type: 'strategy', gate: 'auto', executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['critique'], role: 'creator', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
155
|
+
{ id: 'verdict', kind: 'review', gate_type: 'value', gate: { human_confirm: { unconditional: false } }, executes_code: false, verified_evidence: false, required_deliverables: [], depends_on: ['revise'], role: 'evaluator', skill_ref: null, allowed_skills: [], validator_pin: null },
|
|
156
|
+
],
|
|
157
|
+
},
|
|
158
|
+
];
|
|
8
159
|
/**
|
|
9
160
|
* The single isolation boundary over wicked-core-ts. It holds the ONE `Core`
|
|
10
161
|
* handle, makes the ONE `subscribe()` call for the whole process, parses each
|
|
@@ -17,6 +168,8 @@ export class CoreAdapter {
|
|
|
17
168
|
subscription;
|
|
18
169
|
listeners = new Set();
|
|
19
170
|
closed = false;
|
|
171
|
+
/** Built-in workflow ids whose overlay JSON has been written this process lifetime. */
|
|
172
|
+
_builtinOverlayWritten = new Set();
|
|
20
173
|
/** `true` when this adapter armed the event-driven exec seam (for readiness/reporting). */
|
|
21
174
|
engineExec;
|
|
22
175
|
/** The bus db the exec seam runs over when armed (else `undefined`). */
|
|
@@ -38,6 +191,15 @@ export class CoreAdapter {
|
|
|
38
191
|
}
|
|
39
192
|
this.engineExec = armExec;
|
|
40
193
|
this.busDbPath = armExec ? opts.busDbPath : undefined;
|
|
194
|
+
// Give the Rust actor the path to the wicked-core standalone binary so the gate-hook
|
|
195
|
+
// command works when wicked-core is loaded as a napi-rs addon (where current_exe()
|
|
196
|
+
// returns the Node.js interpreter, not wicked-core). The actor checks WICKED_CORE_EXE
|
|
197
|
+
// first, so this env wins over the current_exe() fallback.
|
|
198
|
+
if (!process.env['WICKED_CORE_EXE']) {
|
|
199
|
+
const wcExe = locateWickedCoreExe();
|
|
200
|
+
if (wcExe)
|
|
201
|
+
process.env['WICKED_CORE_EXE'] = wcExe;
|
|
202
|
+
}
|
|
41
203
|
this.core = opts.stub ? Core.spawnStub(opts.dbPath) : Core.spawn(opts.dbPath);
|
|
42
204
|
// The ONE subscribe() for the process. Error-first callback (index.d.ts:56):
|
|
43
205
|
// one JSON string per CoreEvent, in emission order. A throw in a listener is
|
|
@@ -78,7 +240,7 @@ export class CoreAdapter {
|
|
|
78
240
|
return this.core.ping();
|
|
79
241
|
}
|
|
80
242
|
/** Launch an interactive, resumable run → the run id. */
|
|
81
|
-
launchRun(input) {
|
|
243
|
+
async launchRun(input) {
|
|
82
244
|
const opts = {
|
|
83
245
|
problem: input.problem,
|
|
84
246
|
sessionId: input.sessionId,
|
|
@@ -90,6 +252,20 @@ export class CoreAdapter {
|
|
|
90
252
|
opts.humanConfirm = input.humanConfirm;
|
|
91
253
|
if (input.repoRef !== undefined)
|
|
92
254
|
opts.repoRef = input.repoRef;
|
|
255
|
+
if (input.workflow !== undefined) {
|
|
256
|
+
opts.workflow = input.workflow;
|
|
257
|
+
// Ensure built-in workflow definitions are present in the Rust overlay dir on first use.
|
|
258
|
+
// Uses a dedicated helper (not registerWorkflow) to avoid adding built-ins to userWorkflows,
|
|
259
|
+
// which would duplicate them in listWorkflows(). The write is skipped after the first call
|
|
260
|
+
// per process lifetime.
|
|
261
|
+
const builtinDef = BUILTIN_WORKFLOWS.find((w) => w.id === input.workflow);
|
|
262
|
+
if (builtinDef && !this._builtinOverlayWritten.has(input.workflow)) {
|
|
263
|
+
// Mark before await so concurrent launchRun() calls for the same builtin
|
|
264
|
+
// don't both pass the has() check and race to write the same file.
|
|
265
|
+
this._builtinOverlayWritten.add(input.workflow);
|
|
266
|
+
await this._writeBuiltinOverlay(builtinDef);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
93
269
|
return this.core.launchRun(opts);
|
|
94
270
|
}
|
|
95
271
|
/** Resume a run from its persisted cursor → the status token. */
|
|
@@ -104,26 +280,302 @@ export class CoreAdapter {
|
|
|
104
280
|
cancelRun(runId) {
|
|
105
281
|
return this.core.cancelRun(runId);
|
|
106
282
|
}
|
|
283
|
+
/** Inject an operator message into a run's active PTY worker(s). target="all" or a CLI key. */
|
|
284
|
+
injectWorkerMessage(runId, message, target) {
|
|
285
|
+
if (typeof this.core.injectWorkerMessage !== 'function') {
|
|
286
|
+
return Promise.reject(new Error('Operator message injection is not yet supported by this wicked-core build'));
|
|
287
|
+
}
|
|
288
|
+
return this.core.injectWorkerMessage(runId, message, target);
|
|
289
|
+
}
|
|
107
290
|
/** Run ids on the store. */
|
|
108
291
|
async sessions() {
|
|
109
292
|
return JSON.parse(await this.core.sessions());
|
|
110
293
|
}
|
|
111
294
|
/** Every run + its ordered units. */
|
|
112
295
|
async sessionsDetail() {
|
|
113
|
-
|
|
296
|
+
const views = JSON.parse(await this.core.sessionsDetail());
|
|
297
|
+
// The Rust core always stores workflow_id as 'wf-<session-uuid>' (an instance ID, not the
|
|
298
|
+
// definition name). Patch it back to the definition name so the studio's chat/work filters work.
|
|
299
|
+
// phase_ref is only set on executed units and uses format 'wf-<uuid>:unit-N' (not the phase id).
|
|
300
|
+
// The phase id is reliably embedded in the unit id as '<session-uuid>:<phase-id>'.
|
|
301
|
+
for (const view of views) {
|
|
302
|
+
if (view.session.workflow_id?.startsWith('wf-')) {
|
|
303
|
+
const phases = [...view.units].sort((a, b) => a.ord - b.ord).map((u) => {
|
|
304
|
+
const colonIdx = u.id.indexOf(':');
|
|
305
|
+
return colonIdx >= 0 ? u.id.slice(colonIdx + 1) : '';
|
|
306
|
+
});
|
|
307
|
+
if (view.units.length === 1) {
|
|
308
|
+
// Single-unit chat sessions have phase id 'explore' (from the chat workflow def).
|
|
309
|
+
// 'u1' is ambiguous — it appears on any single-unit run without an explicit workflow,
|
|
310
|
+
// including Do Work runs, so we leave those unpatched rather than misclassify them.
|
|
311
|
+
const phase = phases[0] ?? '';
|
|
312
|
+
if (phase === 'explore')
|
|
313
|
+
view.session.workflow_id = 'chat';
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
// Multi-unit: match against builtin workflow defs by phase sequence
|
|
317
|
+
const match = BUILTIN_WORKFLOWS.find((def) => def.phases.length === phases.length &&
|
|
318
|
+
def.phases.every((p, i) => p.id === phases[i]));
|
|
319
|
+
if (match)
|
|
320
|
+
view.session.workflow_id = match.id;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return views;
|
|
114
325
|
}
|
|
115
326
|
/** A unit's captured transcript (string, or `null`). */
|
|
116
327
|
async workOutput(unitId) {
|
|
117
328
|
return JSON.parse(await this.core.workOutput(unitId));
|
|
118
329
|
}
|
|
119
|
-
/**
|
|
330
|
+
/** repo id → onboarding run id (in-memory; graph persists on disk across restarts). */
|
|
331
|
+
repoOnboardRunIds = new Map();
|
|
332
|
+
/** repo ids with an onboarding run in flight — guards against concurrent double-launch. */
|
|
333
|
+
onboardingInFlight = new Set();
|
|
334
|
+
/** Register a local git repo → the persisted `RepoEntry`. */
|
|
120
335
|
async registerRepo(name, rootPath) {
|
|
121
336
|
return JSON.parse(await this.core.registerRepo(name, rootPath));
|
|
122
337
|
}
|
|
338
|
+
/**
|
|
339
|
+
* Clone a remote git URL, register it, then launch an `onboarding` workflow run.
|
|
340
|
+
* `checkoutPath` overrides the default clone destination (`~/.wicked/repos/<name>`).
|
|
341
|
+
*/
|
|
342
|
+
async cloneAndRegisterRepo(name, gitUrl, checkoutPath) {
|
|
343
|
+
const reposRoot = wickedDir('repos');
|
|
344
|
+
let cloneDir;
|
|
345
|
+
if (checkoutPath) {
|
|
346
|
+
// Expand leading ~/ so callers can use home-relative paths.
|
|
347
|
+
const expanded = checkoutPath.startsWith('~/')
|
|
348
|
+
? join(homedir(), checkoutPath.slice(2))
|
|
349
|
+
: checkoutPath;
|
|
350
|
+
if (!isAbsolute(expanded)) {
|
|
351
|
+
throw new Error('checkoutPath must be an absolute path (or start with ~/)');
|
|
352
|
+
}
|
|
353
|
+
cloneDir = resolve(expanded);
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
cloneDir = join(reposRoot, name);
|
|
357
|
+
// Defense-in-depth: name validated by schema, but guard direct calls too.
|
|
358
|
+
// Use relative() instead of startsWith(root+'/') so this works cross-platform
|
|
359
|
+
// (Windows uses backslash separators, making a literal '/' suffix check unreliable).
|
|
360
|
+
const rel = relative(reposRoot, cloneDir);
|
|
361
|
+
if (rel === '..' || rel.startsWith('..' + sep) || isAbsolute(rel)) {
|
|
362
|
+
throw new Error('Unsafe repo name: would escape the repos directory');
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
// Ensure the parent exists (first-run, nested checkoutPath, etc.) before the
|
|
366
|
+
// atomic create below — recursive mkdir is safe for parents since we are not
|
|
367
|
+
// the intended owner of those directories.
|
|
368
|
+
await mkdir(resolve(cloneDir, '..'), { recursive: true });
|
|
369
|
+
// Atomic exclusive mkdir: succeeds only if we created the directory, throws
|
|
370
|
+
// EEXIST if it already existed. This is race-safe — recursive mkdir would
|
|
371
|
+
// silently succeed for existing dirs, making weMadeDir unreliable.
|
|
372
|
+
let weMadeDir = false;
|
|
373
|
+
try {
|
|
374
|
+
await mkdir(cloneDir);
|
|
375
|
+
weMadeDir = true;
|
|
376
|
+
}
|
|
377
|
+
catch (err) {
|
|
378
|
+
const code = err.code;
|
|
379
|
+
if (code !== 'EEXIST')
|
|
380
|
+
throw err;
|
|
381
|
+
// Directory already existed — verify it is actually a directory (not a file).
|
|
382
|
+
await access(join(cloneDir, '.'));
|
|
383
|
+
}
|
|
384
|
+
let needsClone = true;
|
|
385
|
+
try {
|
|
386
|
+
await access(join(cloneDir, '.git'));
|
|
387
|
+
needsClone = false;
|
|
388
|
+
}
|
|
389
|
+
catch { /* not yet cloned */ }
|
|
390
|
+
if (needsClone) {
|
|
391
|
+
try {
|
|
392
|
+
await execFileAsync('git', ['clone', '--', gitUrl, cloneDir], {
|
|
393
|
+
timeout: 5 * 60 * 1000,
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
catch (err) {
|
|
397
|
+
// Cleanup is best-effort: swallow any cleanup error so the original
|
|
398
|
+
// clone failure is what the caller sees.
|
|
399
|
+
if (weMadeDir) {
|
|
400
|
+
await rm(cloneDir, { recursive: true, force: true }).catch(() => { });
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
// Pre-existing dir: remove a partially-written .git so the next call
|
|
404
|
+
// doesn't incorrectly skip cloning against a broken working tree.
|
|
405
|
+
await rm(join(cloneDir, '.git'), { recursive: true, force: true }).catch(() => { });
|
|
406
|
+
}
|
|
407
|
+
throw err;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
const entry = await this.registerRepo(name, cloneDir);
|
|
411
|
+
const runId = await this.launchOnboardingRun(entry.id, name);
|
|
412
|
+
return { repoId: entry.id, runId };
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Launch the built-in `onboarding` workflow for a registered repo.
|
|
416
|
+
* The run's `workdir` = the repo root; Tool phases run estate commands there.
|
|
417
|
+
* Returns the run id so the UI can navigate directly to it.
|
|
418
|
+
*/
|
|
419
|
+
async launchOnboardingRun(repoId, repoName) {
|
|
420
|
+
if (this.onboardingInFlight.has(repoId)) {
|
|
421
|
+
const existing = this.repoOnboardRunIds.get(repoId);
|
|
422
|
+
if (existing)
|
|
423
|
+
return existing;
|
|
424
|
+
}
|
|
425
|
+
this.onboardingInFlight.add(repoId);
|
|
426
|
+
const runId = randomUUID();
|
|
427
|
+
try {
|
|
428
|
+
// Write onboarding.json to the Rust overlay dir so the actor picks it up on (re)start.
|
|
429
|
+
// Uses _writeBuiltinOverlay (not registerWorkflow) to avoid adding onboarding to userWorkflows,
|
|
430
|
+
// which would cause a duplicate entry in listWorkflows().
|
|
431
|
+
if (!this._builtinOverlayWritten.has('onboarding')) {
|
|
432
|
+
this._builtinOverlayWritten.add('onboarding');
|
|
433
|
+
await this._writeBuiltinOverlay(BUILTIN_WORKFLOWS.find((w) => w.id === 'onboarding'));
|
|
434
|
+
}
|
|
435
|
+
await this.launchRun({
|
|
436
|
+
problem: `Onboard repository: ${repoName}`,
|
|
437
|
+
sessionId: runId,
|
|
438
|
+
clisJson: JSON.stringify(CoreAdapter.roster()),
|
|
439
|
+
workflow: 'onboarding',
|
|
440
|
+
repoRef: repoId,
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
finally {
|
|
444
|
+
this.onboardingInFlight.delete(repoId);
|
|
445
|
+
}
|
|
446
|
+
this.repoOnboardRunIds.set(repoId, runId);
|
|
447
|
+
return runId;
|
|
448
|
+
}
|
|
449
|
+
/** Return the onboarding run id for a repo (undefined if not launched this session). */
|
|
450
|
+
getOnboardRunId(repoId) {
|
|
451
|
+
return this.repoOnboardRunIds.get(repoId);
|
|
452
|
+
}
|
|
123
453
|
/** List every registered repo. */
|
|
124
454
|
async listRepos() {
|
|
125
455
|
return JSON.parse(await this.core.listRepos());
|
|
126
456
|
}
|
|
457
|
+
// ── Governance reads (crew#40) ──────────────────────────────────────────────
|
|
458
|
+
/** All registered governance policies. */
|
|
459
|
+
async listPolicies() {
|
|
460
|
+
return JSON.parse(await this.core.listPolicies());
|
|
461
|
+
}
|
|
462
|
+
/** All conformance rules on the store. */
|
|
463
|
+
async listConformanceRules() {
|
|
464
|
+
return JSON.parse(await this.core.listConformanceRules());
|
|
465
|
+
}
|
|
466
|
+
/** All recorded conformance claims (governance decisions). */
|
|
467
|
+
async listConformanceClaims() {
|
|
468
|
+
return JSON.parse(await this.core.listConformanceClaims());
|
|
469
|
+
}
|
|
470
|
+
/** Front-half coverage gate report; null when the store has no graph nodes. */
|
|
471
|
+
async getCoverageReport() {
|
|
472
|
+
return JSON.parse(await this.core.getCoverageReport());
|
|
473
|
+
}
|
|
474
|
+
// ── Governance writes (crew#42) ────────────────────────────────────────────
|
|
475
|
+
/** Upsert a governance policy via the single-writer actor. */
|
|
476
|
+
async upsertPolicy(policy) {
|
|
477
|
+
await this.core.upsertPolicy(JSON.stringify(policy));
|
|
478
|
+
}
|
|
479
|
+
/** Upsert a conformance rule via the single-writer actor. */
|
|
480
|
+
async upsertConformanceRule(rule) {
|
|
481
|
+
await this.core.upsertConformanceRule(JSON.stringify(rule));
|
|
482
|
+
}
|
|
483
|
+
/** Recall conformance rules matching a facet query (read-only, does not block actor). */
|
|
484
|
+
async recallRulesPreview(query) {
|
|
485
|
+
const cleanQuery = {};
|
|
486
|
+
for (const [k, v] of Object.entries(query)) {
|
|
487
|
+
// Fastify may parse duplicate params as arrays — take the first string value only.
|
|
488
|
+
const scalar = Array.isArray(v) ? v[0] : v;
|
|
489
|
+
if (typeof scalar === 'string' && scalar.length > 0)
|
|
490
|
+
cleanQuery[k] = scalar;
|
|
491
|
+
}
|
|
492
|
+
const json = await this.core.recallRulesPreview(JSON.stringify(cleanQuery));
|
|
493
|
+
return JSON.parse(json);
|
|
494
|
+
}
|
|
495
|
+
// ── Workflow viewer + builder (crew#44) ────────────────────────────────────
|
|
496
|
+
// Built-ins are static TypeScript mirrors of workflow.rs. User-registered
|
|
497
|
+
// workflows are added to `userWorkflows` and persisted to disk; the Rust actor
|
|
498
|
+
// picks them up via `register_workflow` NAPI (when available) for immediate use.
|
|
499
|
+
userWorkflows = new Map();
|
|
500
|
+
listWorkflows() {
|
|
501
|
+
// Builtins first (stable ordering), but user-registered workflows take precedence when
|
|
502
|
+
// ids conflict — consistent with getWorkflow() which prefers userWorkflows.get().
|
|
503
|
+
const seen = new Set();
|
|
504
|
+
const result = [];
|
|
505
|
+
for (const w of BUILTIN_WORKFLOWS) {
|
|
506
|
+
const override = this.userWorkflows.get(w.id);
|
|
507
|
+
if (!seen.has(w.id)) {
|
|
508
|
+
seen.add(w.id);
|
|
509
|
+
result.push(override ?? w);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
for (const w of this.userWorkflows.values()) {
|
|
513
|
+
if (!seen.has(w.id)) {
|
|
514
|
+
seen.add(w.id);
|
|
515
|
+
result.push(w);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
return result;
|
|
519
|
+
}
|
|
520
|
+
getWorkflow(id) {
|
|
521
|
+
return this.userWorkflows.get(id) ?? BUILTIN_WORKFLOWS.find((w) => w.id === id) ?? null;
|
|
522
|
+
}
|
|
523
|
+
/** Write a built-in workflow definition to the Rust overlay dir (and hot-register when possible).
|
|
524
|
+
* Unlike registerWorkflow(), this does NOT touch userWorkflows, avoiding duplicates in listWorkflows(). */
|
|
525
|
+
async _writeBuiltinOverlay(def) {
|
|
526
|
+
const dir = workflowOverlayDir();
|
|
527
|
+
await mkdir(dir, { recursive: true });
|
|
528
|
+
const overlayDef = { ...def };
|
|
529
|
+
delete overlayDef.is_system;
|
|
530
|
+
await writeFile(join(dir, `${def.id}.json`), JSON.stringify(overlayDef, null, 2), 'utf8');
|
|
531
|
+
const core = this.core;
|
|
532
|
+
if (typeof core['registerWorkflow'] === 'function') {
|
|
533
|
+
await core['registerWorkflow'](JSON.stringify(overlayDef));
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* Register a user-authored workflow: persist to the Rust workflow overlay dir
|
|
538
|
+
* (`~/.config/wicked-core/workflows/<id>.json` or `$WICKED_WORKFLOWS_DIR`),
|
|
539
|
+
* update the in-memory registry, and (when core supports it) register in the
|
|
540
|
+
* Rust actor so runs using this workflow work immediately without a restart.
|
|
541
|
+
*/
|
|
542
|
+
async registerWorkflow(def) {
|
|
543
|
+
const SAFE_ID = /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/;
|
|
544
|
+
if (!SAFE_ID.test(def.id) || def.id.length > 128) {
|
|
545
|
+
throw new Error('workflow id must start with a letter/digit and contain only letters, digits, dots, hyphens, and underscores');
|
|
546
|
+
}
|
|
547
|
+
const dir = workflowOverlayDir();
|
|
548
|
+
await mkdir(dir, { recursive: true });
|
|
549
|
+
const path = join(dir, `${def.id}.json`);
|
|
550
|
+
// Strip `is_system` before writing — the Rust core's overlay format does not recognise that
|
|
551
|
+
// field and silently drops any workflow whose JSON it cannot fully deserialise.
|
|
552
|
+
const overlayDef = { ...def };
|
|
553
|
+
delete overlayDef.is_system;
|
|
554
|
+
await writeFile(path, JSON.stringify(overlayDef, null, 2), 'utf8');
|
|
555
|
+
this.userWorkflows.set(def.id, def);
|
|
556
|
+
// Hot-register in the Rust actor when the NAPI method is available.
|
|
557
|
+
// Falls back gracefully if running against an older core build.
|
|
558
|
+
const core = this.core;
|
|
559
|
+
if (typeof core['registerWorkflow'] === 'function') {
|
|
560
|
+
await core['registerWorkflow'](JSON.stringify(overlayDef));
|
|
561
|
+
}
|
|
562
|
+
return def.id;
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* Save an inline script to `~/.wicked/scripts/<name>.<ext>`, make it executable,
|
|
566
|
+
* and return the absolute path. Tool-executor phases use this path as their command.
|
|
567
|
+
*/
|
|
568
|
+
async saveScript(name, content, lang) {
|
|
569
|
+
const ext = lang === 'python' ? 'py' : 'sh';
|
|
570
|
+
const dir = wickedDir('scripts');
|
|
571
|
+
await mkdir(dir, { recursive: true });
|
|
572
|
+
const filename = `${name.replace(/[^a-z0-9_-]/gi, '_')}.${ext}`;
|
|
573
|
+
const path = join(dir, filename);
|
|
574
|
+
const shebang = lang === 'python' ? '#!/usr/bin/env python3\n' : '#!/usr/bin/env bash\n';
|
|
575
|
+
await writeFile(path, shebang + content, 'utf8');
|
|
576
|
+
await chmod(path, 0o755);
|
|
577
|
+
return path;
|
|
578
|
+
}
|
|
127
579
|
// ── PTY terminal sessions (DES-TERMINAL-001 §6) ────────────────────────────
|
|
128
580
|
// Thin wrappers over the four core-ts terminal methods. Output does NOT return
|
|
129
581
|
// here — it arrives as `terminalOutput` CoreEvents on the single subscription
|
|
@@ -150,6 +602,31 @@ export class CoreAdapter {
|
|
|
150
602
|
closeTerminal(id) {
|
|
151
603
|
return this.core.closeTerminal(id);
|
|
152
604
|
}
|
|
605
|
+
// ── System settings ───────────────────────────────────────────────────────
|
|
606
|
+
async getSettings() {
|
|
607
|
+
try {
|
|
608
|
+
const raw = await readFile(settingsFilePath(), 'utf8');
|
|
609
|
+
const parsed = JSON.parse(raw);
|
|
610
|
+
// Validate numeric fields; drop anything out-of-range rather than propagate bad values.
|
|
611
|
+
if ('graphNodeLimit' in parsed) {
|
|
612
|
+
const v = parsed.graphNodeLimit;
|
|
613
|
+
if (typeof v !== 'number' || !Number.isInteger(v) || v < 1 || v > 10000)
|
|
614
|
+
delete parsed.graphNodeLimit;
|
|
615
|
+
}
|
|
616
|
+
return { ...DEFAULT_SETTINGS, ...parsed };
|
|
617
|
+
}
|
|
618
|
+
catch {
|
|
619
|
+
return { ...DEFAULT_SETTINGS };
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
async updateSettings(patch) {
|
|
623
|
+
const current = await this.getSettings();
|
|
624
|
+
const next = { ...current, ...patch };
|
|
625
|
+
const path = settingsFilePath();
|
|
626
|
+
await mkdir(dirname(path), { recursive: true });
|
|
627
|
+
await writeFile(path, JSON.stringify(next, null, 2), 'utf8');
|
|
628
|
+
return next;
|
|
629
|
+
}
|
|
153
630
|
/**
|
|
154
631
|
* Tear down the single subscription (stop delivery, release the pump thread +
|
|
155
632
|
* callback) so the process can exit cleanly. Idempotent.
|
package/dist/core/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/core/adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/core/adapter.ts"],"names":[],"mappings":"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"}
|