openplanr 1.13.2 → 1.14.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/README.md +46 -4
- package/dist/cli/commands/artifact.d.ts.map +1 -1
- package/dist/cli/commands/artifact.js +17 -6
- package/dist/cli/commands/artifact.js.map +1 -1
- package/dist/cli/commands/operate.d.ts +3 -0
- package/dist/cli/commands/operate.d.ts.map +1 -0
- package/dist/cli/commands/operate.js +568 -0
- package/dist/cli/commands/operate.js.map +1 -0
- package/dist/cli/index.js +42 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/services/ai-service.d.ts +9 -2
- package/dist/services/ai-service.d.ts.map +1 -1
- package/dist/services/ai-service.js +14 -6
- package/dist/services/ai-service.js.map +1 -1
- package/dist/services/artifact-pipeline-service.d.ts +1 -0
- package/dist/services/artifact-pipeline-service.d.ts.map +1 -1
- package/dist/services/artifact-pipeline-service.js.map +1 -1
- package/dist/services/delta-apply-service.js +1 -1
- package/dist/services/delta-apply-service.js.map +1 -1
- package/dist/services/operate/advisors.d.ts +219 -0
- package/dist/services/operate/advisors.d.ts.map +1 -0
- package/dist/services/operate/advisors.js +745 -0
- package/dist/services/operate/advisors.js.map +1 -0
- package/dist/services/operate/artifact-route-generation.d.ts +111 -0
- package/dist/services/operate/artifact-route-generation.d.ts.map +1 -0
- package/dist/services/operate/artifact-route-generation.js +459 -0
- package/dist/services/operate/artifact-route-generation.js.map +1 -0
- package/dist/services/operate/artifacts.d.ts +26 -0
- package/dist/services/operate/artifacts.d.ts.map +1 -0
- package/dist/services/operate/artifacts.js +92 -0
- package/dist/services/operate/artifacts.js.map +1 -0
- package/dist/services/operate/canonical.d.ts +18 -0
- package/dist/services/operate/canonical.d.ts.map +1 -0
- package/dist/services/operate/canonical.js +157 -0
- package/dist/services/operate/canonical.js.map +1 -0
- package/dist/services/operate/config.d.ts +56 -0
- package/dist/services/operate/config.d.ts.map +1 -0
- package/dist/services/operate/config.js +644 -0
- package/dist/services/operate/config.js.map +1 -0
- package/dist/services/operate/consolidation.d.ts +18 -0
- package/dist/services/operate/consolidation.d.ts.map +1 -0
- package/dist/services/operate/consolidation.js +539 -0
- package/dist/services/operate/consolidation.js.map +1 -0
- package/dist/services/operate/doctor.d.ts +12 -0
- package/dist/services/operate/doctor.d.ts.map +1 -0
- package/dist/services/operate/doctor.js +307 -0
- package/dist/services/operate/doctor.js.map +1 -0
- package/dist/services/operate/engine.d.ts +53 -0
- package/dist/services/operate/engine.d.ts.map +1 -0
- package/dist/services/operate/engine.js +1097 -0
- package/dist/services/operate/engine.js.map +1 -0
- package/dist/services/operate/event-store.d.ts +57 -0
- package/dist/services/operate/event-store.d.ts.map +1 -0
- package/dist/services/operate/event-store.js +232 -0
- package/dist/services/operate/event-store.js.map +1 -0
- package/dist/services/operate/evidence-cache.d.ts +17 -0
- package/dist/services/operate/evidence-cache.d.ts.map +1 -0
- package/dist/services/operate/evidence-cache.js +96 -0
- package/dist/services/operate/evidence-cache.js.map +1 -0
- package/dist/services/operate/evidence-import.d.ts +40 -0
- package/dist/services/operate/evidence-import.d.ts.map +1 -0
- package/dist/services/operate/evidence-import.js +340 -0
- package/dist/services/operate/evidence-import.js.map +1 -0
- package/dist/services/operate/evidence-readiness.d.ts +8 -0
- package/dist/services/operate/evidence-readiness.d.ts.map +1 -0
- package/dist/services/operate/evidence-readiness.js +78 -0
- package/dist/services/operate/evidence-readiness.js.map +1 -0
- package/dist/services/operate/evidence.d.ts +71 -0
- package/dist/services/operate/evidence.d.ts.map +1 -0
- package/dist/services/operate/evidence.js +1022 -0
- package/dist/services/operate/evidence.js.map +1 -0
- package/dist/services/operate/ids.d.ts +7 -0
- package/dist/services/operate/ids.d.ts.map +1 -0
- package/dist/services/operate/ids.js +23 -0
- package/dist/services/operate/ids.js.map +1 -0
- package/dist/services/operate/index.d.ts +14 -0
- package/dist/services/operate/index.d.ts.map +1 -0
- package/dist/services/operate/index.js +881 -0
- package/dist/services/operate/index.js.map +1 -0
- package/dist/services/operate/journal.d.ts +34 -0
- package/dist/services/operate/journal.d.ts.map +1 -0
- package/dist/services/operate/journal.js +229 -0
- package/dist/services/operate/journal.js.map +1 -0
- package/dist/services/operate/legacy-import-service.d.ts +58 -0
- package/dist/services/operate/legacy-import-service.d.ts.map +1 -0
- package/dist/services/operate/legacy-import-service.js +922 -0
- package/dist/services/operate/legacy-import-service.js.map +1 -0
- package/dist/services/operate/lifecycle.d.ts +88 -0
- package/dist/services/operate/lifecycle.d.ts.map +1 -0
- package/dist/services/operate/lifecycle.js +556 -0
- package/dist/services/operate/lifecycle.js.map +1 -0
- package/dist/services/operate/lock-service.d.ts +37 -0
- package/dist/services/operate/lock-service.d.ts.map +1 -0
- package/dist/services/operate/lock-service.js +208 -0
- package/dist/services/operate/lock-service.js.map +1 -0
- package/dist/services/operate/maintenance.d.ts +38 -0
- package/dist/services/operate/maintenance.d.ts.map +1 -0
- package/dist/services/operate/maintenance.js +699 -0
- package/dist/services/operate/maintenance.js.map +1 -0
- package/dist/services/operate/outcomes.d.ts +48 -0
- package/dist/services/operate/outcomes.d.ts.map +1 -0
- package/dist/services/operate/outcomes.js +312 -0
- package/dist/services/operate/outcomes.js.map +1 -0
- package/dist/services/operate/pipeline-handoff.d.ts +138 -0
- package/dist/services/operate/pipeline-handoff.d.ts.map +1 -0
- package/dist/services/operate/pipeline-handoff.js +175 -0
- package/dist/services/operate/pipeline-handoff.js.map +1 -0
- package/dist/services/operate/projection-persistence.d.ts +55 -0
- package/dist/services/operate/projection-persistence.d.ts.map +1 -0
- package/dist/services/operate/projection-persistence.js +393 -0
- package/dist/services/operate/projection-persistence.js.map +1 -0
- package/dist/services/operate/projection.d.ts +4 -0
- package/dist/services/operate/projection.d.ts.map +1 -0
- package/dist/services/operate/projection.js +128 -0
- package/dist/services/operate/projection.js.map +1 -0
- package/dist/services/operate/protocol.d.ts +60 -0
- package/dist/services/operate/protocol.d.ts.map +1 -0
- package/dist/services/operate/protocol.js +62 -0
- package/dist/services/operate/protocol.js.map +1 -0
- package/dist/services/operate/read-only-providers.d.ts +38 -0
- package/dist/services/operate/read-only-providers.d.ts.map +1 -0
- package/dist/services/operate/read-only-providers.js +286 -0
- package/dist/services/operate/read-only-providers.js.map +1 -0
- package/dist/services/operate/redaction.d.ts +47 -0
- package/dist/services/operate/redaction.d.ts.map +1 -0
- package/dist/services/operate/redaction.js +279 -0
- package/dist/services/operate/redaction.js.map +1 -0
- package/dist/services/operate/reducer.d.ts +10 -0
- package/dist/services/operate/reducer.d.ts.map +1 -0
- package/dist/services/operate/reducer.js +11 -0
- package/dist/services/operate/reducer.js.map +1 -0
- package/dist/services/operate/routes.d.ts +49 -0
- package/dist/services/operate/routes.d.ts.map +1 -0
- package/dist/services/operate/routes.js +996 -0
- package/dist/services/operate/routes.js.map +1 -0
- package/dist/services/operate/shipment-observer.d.ts +14 -0
- package/dist/services/operate/shipment-observer.d.ts.map +1 -0
- package/dist/services/operate/shipment-observer.js +321 -0
- package/dist/services/operate/shipment-observer.js.map +1 -0
- package/dist/services/operate/stalled-item-service.d.ts +18 -0
- package/dist/services/operate/stalled-item-service.d.ts.map +1 -0
- package/dist/services/operate/stalled-item-service.js +121 -0
- package/dist/services/operate/stalled-item-service.js.map +1 -0
- package/dist/services/operate/subprocess-env.d.ts +4 -0
- package/dist/services/operate/subprocess-env.d.ts.map +1 -0
- package/dist/services/operate/subprocess-env.js +45 -0
- package/dist/services/operate/subprocess-env.js.map +1 -0
- package/dist/services/operate/types.d.ts +729 -0
- package/dist/services/operate/types.d.ts.map +1 -0
- package/dist/services/operate/types.js +13 -0
- package/dist/services/operate/types.js.map +1 -0
- package/dist/services/operate/workspace.d.ts +59 -0
- package/dist/services/operate/workspace.d.ts.map +1 -0
- package/dist/services/operate/workspace.js +316 -0
- package/dist/services/operate/workspace.js.map +1 -0
- package/dist/services/runtime-manager-service.d.ts.map +1 -1
- package/dist/services/runtime-manager-service.js +71 -2
- package/dist/services/runtime-manager-service.js.map +1 -1
- package/package.json +10 -4
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
import { isNonInteractive } from '../../services/interactive-state.js';
|
|
2
|
+
import { executeOperateAction, } from '../../services/operate/index.js';
|
|
3
|
+
import { promptCheckbox, promptConfirm, promptMultiText, promptSelect, promptText, } from '../../services/prompt-service.js';
|
|
4
|
+
import { display, logger } from '../../utils/logger.js';
|
|
5
|
+
const MAX_STDIN_BYTES = 64 * 1024;
|
|
6
|
+
function collect(value, previous) {
|
|
7
|
+
return [...previous, value];
|
|
8
|
+
}
|
|
9
|
+
function projectDir(program) {
|
|
10
|
+
return String(program.opts().projectDir);
|
|
11
|
+
}
|
|
12
|
+
function wantsJson(command, options) {
|
|
13
|
+
return Boolean(options.json || command.optsWithGlobals().json);
|
|
14
|
+
}
|
|
15
|
+
async function readBoundedStdin(enabled) {
|
|
16
|
+
if (!enabled)
|
|
17
|
+
return undefined;
|
|
18
|
+
const chunks = [];
|
|
19
|
+
let bytes = 0;
|
|
20
|
+
for await (const value of process.stdin) {
|
|
21
|
+
const chunk = Buffer.isBuffer(value) ? value : Buffer.from(value);
|
|
22
|
+
bytes += chunk.byteLength;
|
|
23
|
+
if (bytes > MAX_STDIN_BYTES) {
|
|
24
|
+
const error = new Error(`Standard input exceeds the ${MAX_STDIN_BYTES}-byte limit.`);
|
|
25
|
+
error.name = 'E_OPERATE_INPUT_TOO_LARGE';
|
|
26
|
+
throw error;
|
|
27
|
+
}
|
|
28
|
+
chunks.push(chunk);
|
|
29
|
+
}
|
|
30
|
+
return Buffer.concat(chunks).toString('utf8').trimEnd();
|
|
31
|
+
}
|
|
32
|
+
function renderHuman(result) {
|
|
33
|
+
if (result.message) {
|
|
34
|
+
if (result.ok)
|
|
35
|
+
logger.success(result.message);
|
|
36
|
+
else
|
|
37
|
+
logger.warn(result.message);
|
|
38
|
+
}
|
|
39
|
+
if (result.lines) {
|
|
40
|
+
for (const line of result.lines)
|
|
41
|
+
display.line(line);
|
|
42
|
+
}
|
|
43
|
+
if (result.data !== undefined) {
|
|
44
|
+
if (result.action === 'inspect' &&
|
|
45
|
+
typeof result.data === 'object' &&
|
|
46
|
+
result.data !== null &&
|
|
47
|
+
!Array.isArray(result.data)) {
|
|
48
|
+
const data = result.data;
|
|
49
|
+
const pipeline = typeof data.pipeline === 'object' && data.pipeline !== null
|
|
50
|
+
? data.pipeline
|
|
51
|
+
: {};
|
|
52
|
+
display.line(`Project context: ${data.project === true ? 'detected' : 'not detected'}`);
|
|
53
|
+
display.line(`Initialization: ${data.initialized === true ? 'configured' : 'not configured'}`);
|
|
54
|
+
display.line(pipeline.available === true
|
|
55
|
+
? `Pipeline: Protocol ${String(pipeline.protocolVersion ?? 'compatible')} ready`
|
|
56
|
+
: 'Pipeline: not installed (read-only inspection remains available)');
|
|
57
|
+
if (typeof data.commitSafeRoot === 'string') {
|
|
58
|
+
display.line(`Commit-safe state: ${data.commitSafeRoot}`);
|
|
59
|
+
}
|
|
60
|
+
if (typeof data.machineLocalState === 'string') {
|
|
61
|
+
display.line(`Machine-local data: ${data.machineLocalState}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else if (result.action === 'demo' &&
|
|
65
|
+
typeof result.data === 'object' &&
|
|
66
|
+
result.data !== null &&
|
|
67
|
+
!Array.isArray(result.data)) {
|
|
68
|
+
const data = result.data;
|
|
69
|
+
if (typeof data.brief === 'string')
|
|
70
|
+
display.line(data.brief);
|
|
71
|
+
const evidenceCount = Array.isArray(data.evidence) ? data.evidence.length : 0;
|
|
72
|
+
display.line(`Evidence: ${evidenceCount} sanitized deterministic record${evidenceCount === 1 ? '' : 's'}`);
|
|
73
|
+
if (typeof data.note === 'string')
|
|
74
|
+
display.line(data.note);
|
|
75
|
+
}
|
|
76
|
+
else if (typeof result.data === 'string')
|
|
77
|
+
display.line(result.data);
|
|
78
|
+
else
|
|
79
|
+
display.line(JSON.stringify(result.data, null, 2));
|
|
80
|
+
}
|
|
81
|
+
if (result.preview !== undefined) {
|
|
82
|
+
display.heading('Preview:');
|
|
83
|
+
display.line(JSON.stringify(result.preview, null, 2));
|
|
84
|
+
}
|
|
85
|
+
if (result.next?.length) {
|
|
86
|
+
display.blank();
|
|
87
|
+
display.heading('Next:');
|
|
88
|
+
for (const command of result.next)
|
|
89
|
+
display.line(` ${command}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async function executeForResult(program, command, action, args, options) {
|
|
93
|
+
const json = wantsJson(command, options);
|
|
94
|
+
let stdin;
|
|
95
|
+
try {
|
|
96
|
+
stdin = await readBoundedStdin(Boolean(options.stdin));
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
const result = {
|
|
100
|
+
schemaVersion: '1.0.0',
|
|
101
|
+
protocolVersion: '1.2.0',
|
|
102
|
+
ok: false,
|
|
103
|
+
action,
|
|
104
|
+
code: error instanceof Error && error.name.startsWith('E_')
|
|
105
|
+
? error.name
|
|
106
|
+
: 'E_OPERATE_INPUT_TOO_LARGE',
|
|
107
|
+
message: error instanceof Error ? error.message : String(error),
|
|
108
|
+
state: null,
|
|
109
|
+
paths: {},
|
|
110
|
+
counts: {},
|
|
111
|
+
warnings: [],
|
|
112
|
+
nextActions: ['Reduce the stdin payload to 65536 bytes or fewer and retry.'],
|
|
113
|
+
next: ['Reduce the stdin payload to 65536 bytes or fewer and retry.'],
|
|
114
|
+
exitCode: 2,
|
|
115
|
+
};
|
|
116
|
+
if (json)
|
|
117
|
+
display.line(JSON.stringify(result));
|
|
118
|
+
else
|
|
119
|
+
renderHuman(result);
|
|
120
|
+
process.exitCode = result.exitCode;
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
const request = {
|
|
124
|
+
action,
|
|
125
|
+
projectRoot: projectDir(program),
|
|
126
|
+
arguments: Object.fromEntries(Object.entries(args).filter((entry) => entry[1] !== undefined)),
|
|
127
|
+
options: {
|
|
128
|
+
...options,
|
|
129
|
+
...(Array.isArray(options.source) ? { sources: options.source } : {}),
|
|
130
|
+
...(Array.isArray(options.component) ? { components: options.component } : {}),
|
|
131
|
+
json,
|
|
132
|
+
yes: Boolean(options.yes || program.opts().yes),
|
|
133
|
+
},
|
|
134
|
+
interactive: !json && !isNonInteractive(),
|
|
135
|
+
...(stdin === undefined ? {} : { stdin }),
|
|
136
|
+
};
|
|
137
|
+
const result = await executeOperateAction(request);
|
|
138
|
+
if (json)
|
|
139
|
+
display.line(JSON.stringify(result));
|
|
140
|
+
else
|
|
141
|
+
renderHuman(result);
|
|
142
|
+
if (!result.ok)
|
|
143
|
+
process.exitCode = result.exitCode ?? 1;
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
async function execute(program, command, action, args, options) {
|
|
147
|
+
await executeForResult(program, command, action, args, options);
|
|
148
|
+
}
|
|
149
|
+
async function executeRunWithProviderConsent(program, command, options) {
|
|
150
|
+
const first = await executeForResult(program, command, 'run', {}, options);
|
|
151
|
+
if (first.ok ||
|
|
152
|
+
first.code !== 'E_OPERATE_AUTHORITY_REQUIRED' ||
|
|
153
|
+
wantsJson(command, options) ||
|
|
154
|
+
isNonInteractive()) {
|
|
155
|
+
return first;
|
|
156
|
+
}
|
|
157
|
+
const approved = await promptConfirm('Approve the disclosed provider policy for this operating run?', false);
|
|
158
|
+
if (!approved)
|
|
159
|
+
return first;
|
|
160
|
+
process.exitCode = undefined;
|
|
161
|
+
return executeForResult(program, command, 'run', {}, {
|
|
162
|
+
...options,
|
|
163
|
+
yes: true,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
async function guidedInitOptions(options) {
|
|
167
|
+
if (isNonInteractive())
|
|
168
|
+
return options;
|
|
169
|
+
const noChoices = options.profile === undefined &&
|
|
170
|
+
options.profileFile === undefined &&
|
|
171
|
+
options.decisionOwner === undefined &&
|
|
172
|
+
options.planningEngine === undefined &&
|
|
173
|
+
options.runtime === undefined &&
|
|
174
|
+
options.cadence === undefined &&
|
|
175
|
+
options.timezone === undefined &&
|
|
176
|
+
(!Array.isArray(options.component) || options.component.length === 0) &&
|
|
177
|
+
(!Array.isArray(options.source) || options.source.length === 0) &&
|
|
178
|
+
(!Array.isArray(options.evidenceFile) || options.evidenceFile.length === 0) &&
|
|
179
|
+
options.sensitivityCeiling === undefined;
|
|
180
|
+
if (!noChoices)
|
|
181
|
+
return options;
|
|
182
|
+
logger.heading('OpenPlanr Operating Board');
|
|
183
|
+
logger.dim('Configure one product workspace. Component repositories remain read-only.');
|
|
184
|
+
const profile = await promptSelect('Operating profile:', [
|
|
185
|
+
{ name: 'SaaS — balanced product, growth, risk, and operations', value: 'saas' },
|
|
186
|
+
{ name: 'Product — activation and customer outcomes', value: 'product' },
|
|
187
|
+
{ name: 'Engineering — delivery, reliability, and risk', value: 'engineering' },
|
|
188
|
+
{ name: 'Custom — validated profile file', value: 'custom' },
|
|
189
|
+
], 'saas');
|
|
190
|
+
const profileFile = profile === 'custom' ? await promptText('Validated custom profile file:') : undefined;
|
|
191
|
+
const decisionOwner = await promptText('Who owns final operating decisions?');
|
|
192
|
+
const planningEngine = await promptSelect('Which engine creates accepted DEV specs?', [
|
|
193
|
+
{ name: 'OpenPlanr — dedicated planning CLI', value: 'openplanr' },
|
|
194
|
+
{ name: 'Pipeline PO — feature-local planning handoff', value: 'pipeline-po' },
|
|
195
|
+
], 'openplanr');
|
|
196
|
+
const runtime = await promptSelect('Preferred coding runtime:', [
|
|
197
|
+
{ name: 'Auto-detect a compatible runtime', value: 'auto' },
|
|
198
|
+
{ name: 'Claude Code', value: 'claude' },
|
|
199
|
+
{ name: 'Codex', value: 'codex' },
|
|
200
|
+
{ name: 'Cursor', value: 'cursor' },
|
|
201
|
+
], 'auto');
|
|
202
|
+
const cadence = await promptSelect('Operating cadence:', [
|
|
203
|
+
{ name: 'Manual — run only when requested', value: 'manual' },
|
|
204
|
+
{ name: 'Weekly display cadence', value: 'weekly' },
|
|
205
|
+
{ name: 'Monthly display cadence', value: 'monthly' },
|
|
206
|
+
], 'manual');
|
|
207
|
+
const timezone = await promptText('Display timezone (IANA):', Intl.DateTimeFormat().resolvedOptions().timeZone);
|
|
208
|
+
const sensitivityCeiling = await promptSelect('Highest evidence class allowed in this workspace:', [
|
|
209
|
+
{ name: 'Internal — recommended', value: 'internal' },
|
|
210
|
+
{ name: 'Public only', value: 'public' },
|
|
211
|
+
{ name: 'Confidential', value: 'confidential' },
|
|
212
|
+
{ name: 'Restricted', value: 'restricted' },
|
|
213
|
+
], 'internal');
|
|
214
|
+
const sources = await promptCheckbox('Evidence sources:', [
|
|
215
|
+
{ name: 'Repository files and metadata', value: 'repository', checked: true },
|
|
216
|
+
{ name: 'OpenPlanr planning and delivery records', value: 'planr', checked: true },
|
|
217
|
+
{ name: 'Git history and working-tree metadata', value: 'git', checked: true },
|
|
218
|
+
{ name: 'GitHub (read-only; requires configured credentials)', value: 'github' },
|
|
219
|
+
{ name: 'Linear (read-only; requires configured credentials)', value: 'linear' },
|
|
220
|
+
{ name: 'Local JSON/CSV files (workspace-contained)', value: 'file-import' },
|
|
221
|
+
]);
|
|
222
|
+
const evidenceFiles = sources.includes('file-import')
|
|
223
|
+
? await promptMultiText('Workspace-contained JSON/CSV evidence paths', 'comma-separated paths')
|
|
224
|
+
: [];
|
|
225
|
+
const components = await promptMultiText('Read-only component repository paths (leave empty for this repository only)', 'comma-separated paths');
|
|
226
|
+
const charter = {
|
|
227
|
+
purpose: await promptText('What product outcome does this workspace exist to create?'),
|
|
228
|
+
stage: await promptText('Current product stage:'),
|
|
229
|
+
businessModel: await promptText('Business model:', 'Not yet specified'),
|
|
230
|
+
idealCustomer: await promptText('Ideal customer profile:', 'Not yet specified'),
|
|
231
|
+
goals: await promptMultiText('Current goals', 'comma-separated'),
|
|
232
|
+
successMetrics: await promptMultiText('Success metrics', 'comma-separated'),
|
|
233
|
+
guardrails: await promptMultiText('Human authority and product guardrails', 'comma-separated'),
|
|
234
|
+
knownUnknowns: await promptMultiText('Known unknowns', 'comma-separated'),
|
|
235
|
+
};
|
|
236
|
+
return {
|
|
237
|
+
...options,
|
|
238
|
+
profile,
|
|
239
|
+
...(profileFile ? { profileFile } : {}),
|
|
240
|
+
decisionOwner,
|
|
241
|
+
planningEngine,
|
|
242
|
+
runtime,
|
|
243
|
+
cadence,
|
|
244
|
+
timezone,
|
|
245
|
+
sensitivityCeiling,
|
|
246
|
+
sources,
|
|
247
|
+
evidenceFile: evidenceFiles,
|
|
248
|
+
components,
|
|
249
|
+
charter,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
function json(command) {
|
|
253
|
+
return command.option('--json', 'emit one versioned machine-readable result', false);
|
|
254
|
+
}
|
|
255
|
+
function preview(command) {
|
|
256
|
+
return command
|
|
257
|
+
.option('--preview', 'inspect without writes or provider/model calls', false)
|
|
258
|
+
.option('--dry-run', 'allow disclosed model calls but commit no state', false);
|
|
259
|
+
}
|
|
260
|
+
function confirmed(command) {
|
|
261
|
+
return command.option('--yes', 'confirm this named action non-interactively', false);
|
|
262
|
+
}
|
|
263
|
+
function stdin(command) {
|
|
264
|
+
return command.option('--stdin', `read the sensitive answer from standard input (maximum ${MAX_STDIN_BYTES} bytes)`, false);
|
|
265
|
+
}
|
|
266
|
+
function machineBinding(command) {
|
|
267
|
+
return command
|
|
268
|
+
.option('--cycle-id <cycleId>', 'prepared operating cycle')
|
|
269
|
+
.option('--evidence-digest <digest>', 'immutable evidence snapshot digest')
|
|
270
|
+
.option('--lease <lease>', 'active adapter lease')
|
|
271
|
+
.option('--idempotency-key <key>', 'idempotent lifecycle call key');
|
|
272
|
+
}
|
|
273
|
+
function readGroup(program, parent, noun, singularArgument) {
|
|
274
|
+
json(parent.command('list').description(`List ${noun}`)).action(function (opts) {
|
|
275
|
+
return execute(program, this, `${noun}.list`, {}, opts);
|
|
276
|
+
});
|
|
277
|
+
json(parent.command(`show <${singularArgument}>`).description(`Show one ${noun.replace(/s$/, '')}`)).action(function (id, opts) {
|
|
278
|
+
return execute(program, this, `${noun}.show`, { id }, opts);
|
|
279
|
+
});
|
|
280
|
+
return parent;
|
|
281
|
+
}
|
|
282
|
+
export function registerOperateCommand(program) {
|
|
283
|
+
const operate = program
|
|
284
|
+
.command('operate')
|
|
285
|
+
.description('Turn verified product evidence into governed DEV, OWNER, and AGENT routes');
|
|
286
|
+
json(operate
|
|
287
|
+
.command('inspect')
|
|
288
|
+
.description('Inspect Operating Board readiness without initialization or credentials')).action(function (opts) {
|
|
289
|
+
return execute(program, this, 'inspect', {}, opts);
|
|
290
|
+
});
|
|
291
|
+
json(operate
|
|
292
|
+
.command('demo')
|
|
293
|
+
.description('Produce a deterministic credential-free operating brief without project writes')).action(function (opts) {
|
|
294
|
+
return execute(program, this, 'demo', {}, opts);
|
|
295
|
+
});
|
|
296
|
+
json(confirmed(preview(operate
|
|
297
|
+
.command('init')
|
|
298
|
+
.description('Initialize the product charter, workspace, privacy, and runtime policy')
|
|
299
|
+
.option('--profile <profile>', 'saas, product, engineering, or custom')
|
|
300
|
+
.option('--profile-file <path>', 'custom operating profile')
|
|
301
|
+
.option('--decision-owner <name>', 'human decision owner')
|
|
302
|
+
.option('--planning-engine <engine>', 'openplanr or pipeline-po')
|
|
303
|
+
.option('--runtime <runtime>', 'auto, claude, codex, or cursor')
|
|
304
|
+
.option('--cadence <cadence>', 'manual, weekly, or monthly')
|
|
305
|
+
.option('--timezone <zone>', 'IANA display timezone')
|
|
306
|
+
.option('--component <path>', 'read-only component repository (repeatable)', collect, [])
|
|
307
|
+
.option('--source <source>', 'evidence source (repeatable)', collect, [])
|
|
308
|
+
.option('--evidence-file <path>', 'workspace-contained JSON/CSV evidence file (repeatable)', collect, [])
|
|
309
|
+
.option('--sensitivity-ceiling <class>', 'public, internal, confidential, or restricted')))).action(function (opts) {
|
|
310
|
+
return (async () => {
|
|
311
|
+
const resolved = await guidedInitOptions(opts);
|
|
312
|
+
const interactive = !wantsJson(this, resolved) && !isNonInteractive() && !resolved.yes && !program.opts().yes;
|
|
313
|
+
let result;
|
|
314
|
+
if (interactive && !resolved.preview && !resolved.dryRun) {
|
|
315
|
+
const previewResult = await executeForResult(program, this, 'init', {}, {
|
|
316
|
+
...resolved,
|
|
317
|
+
preview: true,
|
|
318
|
+
});
|
|
319
|
+
if (!previewResult.ok)
|
|
320
|
+
return;
|
|
321
|
+
if (!(await promptConfirm('Apply this exact Operating Board configuration?', true))) {
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
result = await executeForResult(program, this, 'init', {}, {
|
|
325
|
+
...resolved,
|
|
326
|
+
preview: false,
|
|
327
|
+
yes: true,
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
result = await executeForResult(program, this, 'init', {}, resolved);
|
|
332
|
+
}
|
|
333
|
+
const legacyMigration = result.data?.legacyMigration;
|
|
334
|
+
if (result.ok &&
|
|
335
|
+
!resolved.preview &&
|
|
336
|
+
!resolved.dryRun &&
|
|
337
|
+
!resolved.json &&
|
|
338
|
+
!isNonInteractive() &&
|
|
339
|
+
legacyMigration?.record?.state === 'previewed') {
|
|
340
|
+
const count = legacyMigration.counts?.importable ?? 0;
|
|
341
|
+
if (await promptConfirm(`Import ${count} unambiguous legacy .planr/board record(s) now? Original files will remain untouched.`, false)) {
|
|
342
|
+
const migrationResult = await executeForResult(program, this, 'migrate.apply', {}, { yes: true });
|
|
343
|
+
if (!migrationResult.ok)
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
if (result.ok &&
|
|
348
|
+
!resolved.preview &&
|
|
349
|
+
!resolved.dryRun &&
|
|
350
|
+
!resolved.json &&
|
|
351
|
+
!isNonInteractive() &&
|
|
352
|
+
(await promptConfirm('Run the first operating cycle now?', true))) {
|
|
353
|
+
await executeRunWithProviderConsent(program, this, {
|
|
354
|
+
runtime: resolved.runtime ?? 'auto',
|
|
355
|
+
depth: 'standard',
|
|
356
|
+
focus: [],
|
|
357
|
+
offline: false,
|
|
358
|
+
reviewOnly: false,
|
|
359
|
+
preview: false,
|
|
360
|
+
dryRun: false,
|
|
361
|
+
yes: false,
|
|
362
|
+
json: false,
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
})();
|
|
366
|
+
});
|
|
367
|
+
const config = operate
|
|
368
|
+
.command('config')
|
|
369
|
+
.description('Inspect or validate operating configuration');
|
|
370
|
+
json(config.command('show')).action(function (opts) {
|
|
371
|
+
return execute(program, this, 'config.show', {}, opts);
|
|
372
|
+
});
|
|
373
|
+
json(config.command('edit')).action(function (opts) {
|
|
374
|
+
return execute(program, this, 'config.edit', {}, opts);
|
|
375
|
+
});
|
|
376
|
+
json(config.command('validate')).action(function (opts) {
|
|
377
|
+
return execute(program, this, 'config.validate', {}, opts);
|
|
378
|
+
});
|
|
379
|
+
const profiles = operate.command('profiles').description('Inspect operating profiles');
|
|
380
|
+
json(profiles.command('list')).action(function (opts) {
|
|
381
|
+
return execute(program, this, 'profiles.list', {}, opts);
|
|
382
|
+
});
|
|
383
|
+
json(profiles.command('show <profile>')).action(function (profile, opts) {
|
|
384
|
+
return execute(program, this, 'profiles.show', { profile }, opts);
|
|
385
|
+
});
|
|
386
|
+
json(profiles.command('validate <path>')).action(function (file, opts) {
|
|
387
|
+
return execute(program, this, 'profiles.validate', { file }, opts);
|
|
388
|
+
});
|
|
389
|
+
const sources = operate.command('sources').description('Inspect and test evidence sources');
|
|
390
|
+
json(sources.command('list')).action(function (opts) {
|
|
391
|
+
return execute(program, this, 'sources.list', {}, opts);
|
|
392
|
+
});
|
|
393
|
+
json(sources.command('show <source>')).action(function (source, opts) {
|
|
394
|
+
return execute(program, this, 'sources.show', { source }, opts);
|
|
395
|
+
});
|
|
396
|
+
json(sources.command('test <source>')).action(function (source, opts) {
|
|
397
|
+
return execute(program, this, 'sources.test', { source }, opts);
|
|
398
|
+
});
|
|
399
|
+
json(confirmed(preview(operate
|
|
400
|
+
.command('run')
|
|
401
|
+
.description('Collect evidence and produce a reviewable operating cycle')
|
|
402
|
+
.option('--focus <lens>', 'evaluate one lens (repeatable)', collect, [])
|
|
403
|
+
.option('--depth <depth>', 'standard or deep', 'standard')
|
|
404
|
+
.option('--runtime <runtime>', 'auto, claude, codex, or cursor', 'auto')
|
|
405
|
+
.option('--offline', 'use local evidence and deterministic providers only', false)
|
|
406
|
+
.option('--review-only', 'reconcile existing routes and outcomes only', false)))).action(function (opts) {
|
|
407
|
+
return executeRunWithProviderConsent(program, this, opts).then(() => undefined);
|
|
408
|
+
});
|
|
409
|
+
json(operate.command('review [cycleId]').description('Review a cycle at the human gate')).action(function (cycleId, opts) {
|
|
410
|
+
return execute(program, this, 'review', { cycleId }, opts);
|
|
411
|
+
});
|
|
412
|
+
json(operate.command('status').description('Show current operating status')).action(function (opts) {
|
|
413
|
+
return execute(program, this, 'status', {}, opts);
|
|
414
|
+
});
|
|
415
|
+
json(operate.command('brief [cycleId]').description('Render the concise operating brief')).action(function (cycleId, opts) {
|
|
416
|
+
return execute(program, this, 'brief', { cycleId }, opts);
|
|
417
|
+
});
|
|
418
|
+
const cycles = readGroup(program, operate.command('cycles').description('Manage operating cycle lifecycle'), 'cycles', 'cycleId');
|
|
419
|
+
for (const action of ['resume', 'cancel', 'recover', 'close']) {
|
|
420
|
+
json(confirmed(cycles.command(`${action} <cycleId>`).description(`${action} an operating cycle`))).action(function (cycleId, opts) {
|
|
421
|
+
return execute(program, this, `cycles.${action}`, { cycleId }, opts);
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
const findings = readGroup(program, operate.command('findings').description('Govern operating findings'), 'findings', 'findingId');
|
|
425
|
+
for (const action of ['accept', 'reject', 'supersede']) {
|
|
426
|
+
json(confirmed(findings
|
|
427
|
+
.command(`${action} <findingId>`)
|
|
428
|
+
.description(action === 'accept'
|
|
429
|
+
? 'Accept governance for a finding without applying its route'
|
|
430
|
+
: `${action} a finding`)
|
|
431
|
+
.option('--impact <score>', 'audited Impact amendment')
|
|
432
|
+
.option('--confidence <score>', 'audited Confidence amendment')
|
|
433
|
+
.option('--ease <score>', 'audited Ease amendment')
|
|
434
|
+
.option('--reason <text>', 'audit reason for the decision'))).action(function (findingId, opts) {
|
|
435
|
+
return execute(program, this, `findings.${action}`, { findingId }, opts);
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
const routes = readGroup(program, operate.command('routes').description('Preview, apply, or roll back governed routes'), 'routes', 'routeId');
|
|
439
|
+
json(confirmed(preview(routes
|
|
440
|
+
.command('apply <routeId>')
|
|
441
|
+
.description('Preview or apply the exact digest-bound route')
|
|
442
|
+
.option('--preview-digest <digest>', 'digest returned by the route preview')))).action(function (routeId, opts) {
|
|
443
|
+
return (async () => {
|
|
444
|
+
const interactive = !wantsJson(this, opts) && !isNonInteractive() && !opts.yes && !program.opts().yes;
|
|
445
|
+
if (!interactive || opts.preview || opts.dryRun) {
|
|
446
|
+
await execute(program, this, 'routes.apply', { routeId }, opts);
|
|
447
|
+
return;
|
|
448
|
+
}
|
|
449
|
+
let previewDigest = opts.previewDigest;
|
|
450
|
+
if (!previewDigest) {
|
|
451
|
+
const previewResult = await executeForResult(program, this, 'routes.apply', { routeId }, { ...opts, preview: true });
|
|
452
|
+
if (!previewResult.ok)
|
|
453
|
+
return;
|
|
454
|
+
previewDigest = previewResult.data
|
|
455
|
+
?.previewDigest;
|
|
456
|
+
}
|
|
457
|
+
if (!previewDigest ||
|
|
458
|
+
!(await promptConfirm(`Apply route ${routeId} using this exact preview digest?`, true))) {
|
|
459
|
+
return;
|
|
460
|
+
}
|
|
461
|
+
await execute(program, this, 'routes.apply', { routeId }, {
|
|
462
|
+
...opts,
|
|
463
|
+
preview: false,
|
|
464
|
+
previewDigest,
|
|
465
|
+
yes: true,
|
|
466
|
+
});
|
|
467
|
+
})();
|
|
468
|
+
});
|
|
469
|
+
json(confirmed(routes.command('rollback <routeId>'))).action(function (routeId, opts) {
|
|
470
|
+
return execute(program, this, 'routes.rollback', { routeId }, opts);
|
|
471
|
+
});
|
|
472
|
+
const decisions = readGroup(program, operate.command('decisions').description('Inspect and answer owner decisions'), 'decisions', 'decisionId');
|
|
473
|
+
json(confirmed(stdin(decisions
|
|
474
|
+
.command('decide <decisionId>')
|
|
475
|
+
.description('Record an owner decision')
|
|
476
|
+
.option('--value <value>', 'decision value')
|
|
477
|
+
.option('--reason <text>', 'decision rationale')))).action(function (decisionId, opts) {
|
|
478
|
+
return execute(program, this, 'decisions.decide', { decisionId }, opts);
|
|
479
|
+
});
|
|
480
|
+
const gaps = readGroup(program, operate.command('gaps').description('Inspect and answer evidence gaps'), 'gaps', 'gapId');
|
|
481
|
+
json(confirmed(stdin(gaps
|
|
482
|
+
.command('answer <gapId>')
|
|
483
|
+
.description('Answer an evidence or charter gap')
|
|
484
|
+
.option('--value <value>', 'answer value')))).action(function (gapId, opts) {
|
|
485
|
+
return execute(program, this, 'gaps.answer', { gapId }, opts);
|
|
486
|
+
});
|
|
487
|
+
json(confirmed(gaps
|
|
488
|
+
.command('verify <gapId>')
|
|
489
|
+
.description('Verify an answered gap against collected evidence')
|
|
490
|
+
.option('--evidence-ref <id>', 'verified evidence identifier (repeatable)', collect, []))).action(function (gapId, opts) {
|
|
491
|
+
return execute(program, this, 'gaps.verify', { gapId }, opts);
|
|
492
|
+
});
|
|
493
|
+
readGroup(program, operate.command('evidence').description('Inspect sanitized evidence metadata'), 'evidence', 'evidenceId');
|
|
494
|
+
const migrate = operate.command('migrate').description('Inspect or apply legacy board migration');
|
|
495
|
+
json(migrate.command('inspect')).action(function (opts) {
|
|
496
|
+
return execute(program, this, 'migrate.inspect', {}, opts);
|
|
497
|
+
});
|
|
498
|
+
json(confirmed(migrate.command('apply'))).action(function (opts) {
|
|
499
|
+
return (async () => {
|
|
500
|
+
const interactive = !wantsJson(this, opts) && !isNonInteractive() && !opts.yes && !program.opts().yes;
|
|
501
|
+
if (!interactive) {
|
|
502
|
+
await execute(program, this, 'migrate.apply', {}, opts);
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
const inspection = await executeForResult(program, this, 'migrate.inspect', {}, opts);
|
|
506
|
+
if (!inspection.ok)
|
|
507
|
+
return;
|
|
508
|
+
const record = inspection.data?.record;
|
|
509
|
+
if (!record)
|
|
510
|
+
return;
|
|
511
|
+
if (record.state !== 'previewed' ||
|
|
512
|
+
!(await promptConfirm(`Apply legacy migration ${record.id}? Exact source bytes will be backed up and left untouched.`, false))) {
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
await execute(program, this, 'migrate.apply', {}, { ...opts, yes: true });
|
|
516
|
+
})();
|
|
517
|
+
});
|
|
518
|
+
const migrations = readGroup(program, operate.command('migrations').description('Inspect or roll back operating migrations'), 'migrations', 'migrationId');
|
|
519
|
+
json(confirmed(migrations.command('rollback <migrationId>'))).action(function (migrationId, opts) {
|
|
520
|
+
return (async () => {
|
|
521
|
+
const interactive = !wantsJson(this, opts) && !isNonInteractive() && !opts.yes && !program.opts().yes;
|
|
522
|
+
if (interactive &&
|
|
523
|
+
!(await promptConfirm(`Roll back imported state for ${migrationId}? Legacy source files will not be changed.`, false))) {
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
await execute(program, this, 'migrations.rollback', { migrationId }, interactive ? { ...opts, yes: true } : opts);
|
|
527
|
+
})();
|
|
528
|
+
});
|
|
529
|
+
const cache = operate.command('cache').description('Inspect or purge machine-local evidence');
|
|
530
|
+
json(cache.command('status')).action(function (opts) {
|
|
531
|
+
return execute(program, this, 'cache.status', {}, opts);
|
|
532
|
+
});
|
|
533
|
+
json(confirmed(cache.command('purge'))).action(function (opts) {
|
|
534
|
+
return execute(program, this, 'cache.purge', {}, opts);
|
|
535
|
+
});
|
|
536
|
+
const integrity = operate
|
|
537
|
+
.command('integrity')
|
|
538
|
+
.description('Inspect or enable signed checkpoints');
|
|
539
|
+
json(integrity.command('status')).action(function (opts) {
|
|
540
|
+
return execute(program, this, 'integrity.status', {}, opts);
|
|
541
|
+
});
|
|
542
|
+
json(confirmed(integrity.command('enable'))).action(function (opts) {
|
|
543
|
+
return execute(program, this, 'integrity.enable', {}, opts);
|
|
544
|
+
});
|
|
545
|
+
const diagnostics = operate.command('diagnostics').description('Export redacted diagnostics');
|
|
546
|
+
json(diagnostics.command('export').option('--output <path>', 'output archive or JSON path')).action(function (opts) {
|
|
547
|
+
return execute(program, this, 'diagnostics.export', {}, opts);
|
|
548
|
+
});
|
|
549
|
+
const security = operate.command('security').description('Exceptional sensitive-data repair');
|
|
550
|
+
json(confirmed(security.command('repair'))).action(function (opts) {
|
|
551
|
+
return execute(program, this, 'security.repair', {}, opts);
|
|
552
|
+
});
|
|
553
|
+
const adapter = operate
|
|
554
|
+
.command('adapter')
|
|
555
|
+
.description('Machine-only, lease-bound runtime adapter lifecycle');
|
|
556
|
+
json(machineBinding(adapter.command('prepare')).option('--role <roles>', 'comma-separated advisor roles bound to this isolated dispatch')).action(function (opts) {
|
|
557
|
+
return execute(program, this, 'adapter.prepare', {}, { ...opts, json: true });
|
|
558
|
+
});
|
|
559
|
+
json(stdin(machineBinding(adapter.command('record').requiredOption('--role <role>', 'operating advisor role')))).action(function (opts) {
|
|
560
|
+
return execute(program, this, 'adapter.record', {}, { ...opts, json: true });
|
|
561
|
+
});
|
|
562
|
+
for (const action of ['finalize', 'resume', 'cancel']) {
|
|
563
|
+
json(machineBinding(adapter.command(action))).action(function (opts) {
|
|
564
|
+
return execute(program, this, `adapter.${action}`, {}, { ...opts, json: true });
|
|
565
|
+
});
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
//# sourceMappingURL=operate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operate.js","sourceRoot":"","sources":["../../../src/cli/commands/operate.ts"],"names":[],"mappings":"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"}
|