@neurcode-ai/cli 0.12.0 → 0.15.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 +60 -8
- package/dist/api-client.d.ts +284 -0
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +111 -0
- package/dist/api-client.js.map +1 -1
- package/dist/commands/activate.d.ts +82 -0
- package/dist/commands/activate.d.ts.map +1 -0
- package/dist/commands/activate.js +551 -0
- package/dist/commands/activate.js.map +1 -0
- package/dist/commands/admission.d.ts +67 -0
- package/dist/commands/admission.d.ts.map +1 -0
- package/dist/commands/admission.js +350 -0
- package/dist/commands/admission.js.map +1 -0
- package/dist/commands/agent.d.ts +3 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +2045 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/demo.d.ts +3 -0
- package/dist/commands/demo.d.ts.map +1 -0
- package/dist/commands/demo.js +102 -0
- package/dist/commands/demo.js.map +1 -0
- package/dist/commands/governance.d.ts.map +1 -1
- package/dist/commands/governance.js +12 -0
- package/dist/commands/governance.js.map +1 -1
- package/dist/commands/home.d.ts +21 -0
- package/dist/commands/home.d.ts.map +1 -0
- package/dist/commands/home.js +253 -0
- package/dist/commands/home.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +58 -44
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +44 -22
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/profile.d.ts +14 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +118 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/quickstart.d.ts +2 -2
- package/dist/commands/quickstart.d.ts.map +1 -1
- package/dist/commands/quickstart.js +33 -30
- package/dist/commands/quickstart.js.map +1 -1
- package/dist/commands/remediate-export.d.ts +6 -1
- package/dist/commands/remediate-export.d.ts.map +1 -1
- package/dist/commands/remediate-export.js +375 -8
- package/dist/commands/remediate-export.js.map +1 -1
- package/dist/commands/replay.d.ts.map +1 -1
- package/dist/commands/replay.js +84 -0
- package/dist/commands/replay.js.map +1 -1
- package/dist/commands/run.d.ts +3 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +98 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/runtime-adapter.d.ts +8 -0
- package/dist/commands/runtime-adapter.d.ts.map +1 -0
- package/dist/commands/runtime-adapter.js +375 -0
- package/dist/commands/runtime-adapter.js.map +1 -0
- package/dist/commands/runtime-doctor.d.ts +6 -0
- package/dist/commands/runtime-doctor.d.ts.map +1 -0
- package/dist/commands/runtime-doctor.js +478 -0
- package/dist/commands/runtime-doctor.js.map +1 -0
- package/dist/commands/runtime-report.d.ts +13 -0
- package/dist/commands/runtime-report.d.ts.map +1 -0
- package/dist/commands/runtime-report.js +81 -0
- package/dist/commands/runtime-report.js.map +1 -0
- package/dist/commands/runtime-sync.d.ts +17 -0
- package/dist/commands/runtime-sync.d.ts.map +1 -0
- package/dist/commands/runtime-sync.js +656 -0
- package/dist/commands/runtime-sync.js.map +1 -0
- package/dist/commands/runtime.d.ts +16 -0
- package/dist/commands/runtime.d.ts.map +1 -0
- package/dist/commands/runtime.js +380 -0
- package/dist/commands/runtime.js.map +1 -0
- package/dist/commands/session-hook.d.ts +35 -0
- package/dist/commands/session-hook.d.ts.map +1 -0
- package/dist/commands/session-hook.js +1297 -0
- package/dist/commands/session-hook.js.map +1 -0
- package/dist/commands/session.d.ts +91 -0
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +1226 -0
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/verify-output.d.ts.map +1 -1
- package/dist/commands/verify-output.js +22 -0
- package/dist/commands/verify-output.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +21 -3
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/whoami.d.ts +7 -4
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +59 -34
- package/dist/commands/whoami.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +24 -5
- package/dist/config.js.map +1 -1
- package/dist/daemon/routes.d.ts.map +1 -1
- package/dist/daemon/routes.js +8 -0
- package/dist/daemon/routes.js.map +1 -1
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +88 -0
- package/dist/daemon/server.js.map +1 -1
- package/dist/governance/canonical-pipeline.d.ts.map +1 -1
- package/dist/governance/canonical-pipeline.js +29 -3
- package/dist/governance/canonical-pipeline.js.map +1 -1
- package/dist/governance/impact-analysis.d.ts +27 -0
- package/dist/governance/impact-analysis.d.ts.map +1 -0
- package/dist/governance/impact-analysis.js +274 -0
- package/dist/governance/impact-analysis.js.map +1 -0
- package/dist/index.js +484 -29
- package/dist/index.js.map +1 -1
- package/dist/intent-engine/matcher.d.ts.map +1 -1
- package/dist/intent-engine/matcher.js +3 -12
- package/dist/intent-engine/matcher.js.map +1 -1
- package/dist/utils/admission-artifact.d.ts +59 -0
- package/dist/utils/admission-artifact.d.ts.map +1 -0
- package/dist/utils/admission-artifact.js +410 -0
- package/dist/utils/admission-artifact.js.map +1 -0
- package/dist/utils/agent-adapter-setup.d.ts +80 -0
- package/dist/utils/agent-adapter-setup.d.ts.map +1 -0
- package/dist/utils/agent-adapter-setup.js +577 -0
- package/dist/utils/agent-adapter-setup.js.map +1 -0
- package/dist/utils/agent-guard-supervisor.d.ts +75 -0
- package/dist/utils/agent-guard-supervisor.d.ts.map +1 -0
- package/dist/utils/agent-guard-supervisor.js +388 -0
- package/dist/utils/agent-guard-supervisor.js.map +1 -0
- package/dist/utils/agent-guard.d.ts +92 -0
- package/dist/utils/agent-guard.d.ts.map +1 -0
- package/dist/utils/agent-guard.js +326 -0
- package/dist/utils/agent-guard.js.map +1 -0
- package/dist/utils/agent-session-launcher.d.ts +89 -0
- package/dist/utils/agent-session-launcher.d.ts.map +1 -0
- package/dist/utils/agent-session-launcher.js +308 -0
- package/dist/utils/agent-session-launcher.js.map +1 -0
- package/dist/utils/bash-command-analysis.d.ts +19 -0
- package/dist/utils/bash-command-analysis.d.ts.map +1 -0
- package/dist/utils/bash-command-analysis.js +295 -0
- package/dist/utils/bash-command-analysis.js.map +1 -0
- package/dist/utils/consequence-nudges.d.ts +30 -0
- package/dist/utils/consequence-nudges.d.ts.map +1 -0
- package/dist/utils/consequence-nudges.js +313 -0
- package/dist/utils/consequence-nudges.js.map +1 -0
- package/dist/utils/drift-intelligence.d.ts.map +1 -1
- package/dist/utils/drift-intelligence.js +29 -7
- package/dist/utils/drift-intelligence.js.map +1 -1
- package/dist/utils/git-coverage.d.ts +57 -0
- package/dist/utils/git-coverage.d.ts.map +1 -0
- package/dist/utils/git-coverage.js +302 -0
- package/dist/utils/git-coverage.js.map +1 -0
- package/dist/utils/gitignore.d.ts.map +1 -1
- package/dist/utils/gitignore.js +2 -1
- package/dist/utils/gitignore.js.map +1 -1
- package/dist/utils/governed-intent.d.ts +10 -0
- package/dist/utils/governed-intent.d.ts.map +1 -0
- package/dist/utils/governed-intent.js +108 -0
- package/dist/utils/governed-intent.js.map +1 -0
- package/dist/utils/hook-heartbeat.d.ts +55 -0
- package/dist/utils/hook-heartbeat.d.ts.map +1 -0
- package/dist/utils/hook-heartbeat.js +116 -0
- package/dist/utils/hook-heartbeat.js.map +1 -0
- package/dist/utils/intent-continuity.d.ts +21 -0
- package/dist/utils/intent-continuity.d.ts.map +1 -0
- package/dist/utils/intent-continuity.js +192 -0
- package/dist/utils/intent-continuity.js.map +1 -0
- package/dist/utils/messages.d.ts +1 -1
- package/dist/utils/messages.d.ts.map +1 -1
- package/dist/utils/messages.js +35 -23
- package/dist/utils/messages.js.map +1 -1
- package/dist/utils/runtime-companion.d.ts +137 -0
- package/dist/utils/runtime-companion.d.ts.map +1 -0
- package/dist/utils/runtime-companion.js +231 -0
- package/dist/utils/runtime-companion.js.map +1 -0
- package/dist/utils/runtime-connection.d.ts +46 -0
- package/dist/utils/runtime-connection.d.ts.map +1 -0
- package/dist/utils/runtime-connection.js +148 -0
- package/dist/utils/runtime-connection.js.map +1 -0
- package/dist/utils/runtime-evidence.d.ts +68 -0
- package/dist/utils/runtime-evidence.d.ts.map +1 -0
- package/dist/utils/runtime-evidence.js +248 -0
- package/dist/utils/runtime-evidence.js.map +1 -0
- package/dist/utils/runtime-live.d.ts +33 -0
- package/dist/utils/runtime-live.d.ts.map +1 -0
- package/dist/utils/runtime-live.js +361 -0
- package/dist/utils/runtime-live.js.map +1 -0
- package/dist/utils/runtime-outbox.d.ts +76 -0
- package/dist/utils/runtime-outbox.d.ts.map +1 -0
- package/dist/utils/runtime-outbox.js +410 -0
- package/dist/utils/runtime-outbox.js.map +1 -0
- package/dist/utils/runtime-receipt.d.ts +50 -0
- package/dist/utils/runtime-receipt.d.ts.map +1 -0
- package/dist/utils/runtime-receipt.js +223 -0
- package/dist/utils/runtime-receipt.js.map +1 -0
- package/dist/utils/runtime-state.d.ts +44 -0
- package/dist/utils/runtime-state.d.ts.map +1 -0
- package/dist/utils/runtime-state.js +151 -0
- package/dist/utils/runtime-state.js.map +1 -0
- package/dist/utils/state.d.ts +21 -0
- package/dist/utils/state.d.ts.map +1 -1
- package/dist/utils/state.js +30 -0
- package/dist/utils/state.js.map +1 -1
- package/dist/utils/structural-understanding.d.ts +334 -0
- package/dist/utils/structural-understanding.d.ts.map +1 -0
- package/dist/utils/structural-understanding.js +2316 -0
- package/dist/utils/structural-understanding.js.map +1 -0
- package/dist/utils/v0-governance.d.ts +197 -0
- package/dist/utils/v0-governance.d.ts.map +1 -0
- package/dist/utils/v0-governance.js +904 -0
- package/dist/utils/v0-governance.js.map +1 -0
- package/package.json +6 -6
- package/dist/utils/box.d.ts +0 -16
- package/dist/utils/box.d.ts.map +0 -1
- package/dist/utils/box.js +0 -85
- package/dist/utils/box.js.map +0 -1
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RUNTIME_BACKEND_RECEIPT_SCHEMA_VERSION = void 0;
|
|
4
|
+
exports.canonicalStringify = canonicalStringify;
|
|
5
|
+
exports.canonicalHash = canonicalHash;
|
|
6
|
+
exports.extractRuntimeReceiptArtifacts = extractRuntimeReceiptArtifacts;
|
|
7
|
+
exports.verifyRuntimeBackendEvidenceReceipt = verifyRuntimeBackendEvidenceReceipt;
|
|
8
|
+
const node_crypto_1 = require("node:crypto");
|
|
9
|
+
exports.RUNTIME_BACKEND_RECEIPT_SCHEMA_VERSION = 'neurcode.backend-evidence-receipt.v1';
|
|
10
|
+
const SOURCE_LIKE_KEYS = new Set([
|
|
11
|
+
'content',
|
|
12
|
+
'filecontent',
|
|
13
|
+
'file_content',
|
|
14
|
+
'sourcetext',
|
|
15
|
+
'source_text',
|
|
16
|
+
'sourcecode',
|
|
17
|
+
'source_code',
|
|
18
|
+
'diff',
|
|
19
|
+
'difftext',
|
|
20
|
+
'diff_text',
|
|
21
|
+
'patch',
|
|
22
|
+
'before',
|
|
23
|
+
'after',
|
|
24
|
+
'promptwithsource',
|
|
25
|
+
'prompt_with_source',
|
|
26
|
+
]);
|
|
27
|
+
function asRecord(value) {
|
|
28
|
+
return value && typeof value === 'object' && !Array.isArray(value)
|
|
29
|
+
? value
|
|
30
|
+
: null;
|
|
31
|
+
}
|
|
32
|
+
function canonicalize(value) {
|
|
33
|
+
if (value === undefined)
|
|
34
|
+
return null;
|
|
35
|
+
if (value === null || typeof value === 'string' || typeof value === 'boolean')
|
|
36
|
+
return value;
|
|
37
|
+
if (typeof value === 'number')
|
|
38
|
+
return Number.isFinite(value) ? value : null;
|
|
39
|
+
if (Array.isArray(value))
|
|
40
|
+
return value.map((entry) => canonicalize(entry));
|
|
41
|
+
const record = asRecord(value);
|
|
42
|
+
if (!record)
|
|
43
|
+
return String(value);
|
|
44
|
+
const output = {};
|
|
45
|
+
for (const key of Object.keys(record).sort()) {
|
|
46
|
+
const child = record[key];
|
|
47
|
+
if (child !== undefined)
|
|
48
|
+
output[key] = canonicalize(child);
|
|
49
|
+
}
|
|
50
|
+
return output;
|
|
51
|
+
}
|
|
52
|
+
function canonicalStringify(value) {
|
|
53
|
+
return JSON.stringify(canonicalize(value));
|
|
54
|
+
}
|
|
55
|
+
function canonicalHash(value, length = 32) {
|
|
56
|
+
return (0, node_crypto_1.createHash)('sha256').update(canonicalStringify(value)).digest('hex').slice(0, length);
|
|
57
|
+
}
|
|
58
|
+
function assertSourceFreeRuntimeReceipt(value, path = 'receipt') {
|
|
59
|
+
if (Array.isArray(value)) {
|
|
60
|
+
value.forEach((entry, index) => assertSourceFreeRuntimeReceipt(entry, `${path}[${index}]`));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const record = asRecord(value);
|
|
64
|
+
if (!record)
|
|
65
|
+
return;
|
|
66
|
+
for (const [key, child] of Object.entries(record)) {
|
|
67
|
+
const normalizedKey = key.toLowerCase().replace(/[^a-z0-9_]/g, '');
|
|
68
|
+
const compactKey = normalizedKey.replace(/_/g, '');
|
|
69
|
+
if (SOURCE_LIKE_KEYS.has(normalizedKey) || SOURCE_LIKE_KEYS.has(compactKey)) {
|
|
70
|
+
throw new Error(`source-like receipt payload key is not allowed: ${path}.${key}`);
|
|
71
|
+
}
|
|
72
|
+
assertSourceFreeRuntimeReceipt(child, `${path}.${key}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function signingSecret() {
|
|
76
|
+
return typeof process.env.NEURCODE_RECEIPT_SIGNING_SECRET === 'string'
|
|
77
|
+
? process.env.NEURCODE_RECEIPT_SIGNING_SECRET.trim()
|
|
78
|
+
: '';
|
|
79
|
+
}
|
|
80
|
+
function hmacSha256(secret, payload) {
|
|
81
|
+
return (0, node_crypto_1.createHmac)('sha256', secret).update(payload).digest('hex');
|
|
82
|
+
}
|
|
83
|
+
function safeEqualHex(left, right) {
|
|
84
|
+
if (!/^[a-f0-9]+$/i.test(left) || !/^[a-f0-9]+$/i.test(right))
|
|
85
|
+
return false;
|
|
86
|
+
const leftBuffer = Buffer.from(left, 'hex');
|
|
87
|
+
const rightBuffer = Buffer.from(right, 'hex');
|
|
88
|
+
return leftBuffer.length === rightBuffer.length && (0, node_crypto_1.timingSafeEqual)(leftBuffer, rightBuffer);
|
|
89
|
+
}
|
|
90
|
+
function looksLikeReceipt(value) {
|
|
91
|
+
const record = asRecord(value);
|
|
92
|
+
return record?.schemaVersion === exports.RUNTIME_BACKEND_RECEIPT_SCHEMA_VERSION
|
|
93
|
+
&& typeof record.receiptId === 'string'
|
|
94
|
+
&& typeof record.recordHash === 'string'
|
|
95
|
+
&& typeof record.canonicalHash === 'string'
|
|
96
|
+
&& typeof record.receiptHash === 'string';
|
|
97
|
+
}
|
|
98
|
+
function signedPayload(receipt) {
|
|
99
|
+
return {
|
|
100
|
+
schemaVersion: receipt.schemaVersion,
|
|
101
|
+
receiptId: receipt.receiptId,
|
|
102
|
+
issuer: receipt.issuer,
|
|
103
|
+
issuedAt: receipt.issuedAt,
|
|
104
|
+
organizationId: receipt.organizationId,
|
|
105
|
+
repoId: receipt.repoId ?? null,
|
|
106
|
+
repoKey: receipt.repoKey ?? null,
|
|
107
|
+
sessionId: receipt.sessionId,
|
|
108
|
+
recordHash: receipt.recordHash,
|
|
109
|
+
replayHash: receipt.replayHash ?? null,
|
|
110
|
+
evidenceHash: receipt.evidenceHash,
|
|
111
|
+
policyEvidenceVersion: receipt.policyEvidenceVersion,
|
|
112
|
+
sourceFree: receipt.sourceFree,
|
|
113
|
+
sessionSummary: receipt.sessionSummary,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function extractRuntimeReceiptArtifacts(value) {
|
|
117
|
+
const receipts = [];
|
|
118
|
+
function visit(candidate, path) {
|
|
119
|
+
if (looksLikeReceipt(candidate)) {
|
|
120
|
+
receipts.push({ path, receipt: candidate });
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const record = asRecord(candidate);
|
|
124
|
+
if (!record)
|
|
125
|
+
return;
|
|
126
|
+
if (looksLikeReceipt(record.backendReceipt)) {
|
|
127
|
+
receipts.push({ path: `${path}.backendReceipt`, receipt: record.backendReceipt });
|
|
128
|
+
}
|
|
129
|
+
if (looksLikeReceipt(record.receipt)) {
|
|
130
|
+
receipts.push({ path: `${path}.receipt`, receipt: record.receipt });
|
|
131
|
+
}
|
|
132
|
+
if (Array.isArray(record.receipts)) {
|
|
133
|
+
record.receipts.forEach((entry, index) => {
|
|
134
|
+
if (looksLikeReceipt(entry))
|
|
135
|
+
receipts.push({ path: `${path}.receipts[${index}]`, receipt: entry });
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
visit(value, '$');
|
|
140
|
+
return receipts;
|
|
141
|
+
}
|
|
142
|
+
function verifyRuntimeBackendEvidenceReceipt(value) {
|
|
143
|
+
const receipt = asRecord(value);
|
|
144
|
+
const reasons = [];
|
|
145
|
+
if (!receipt) {
|
|
146
|
+
return {
|
|
147
|
+
valid: false,
|
|
148
|
+
status: 'tampered',
|
|
149
|
+
receiptId: null,
|
|
150
|
+
canonicalHash: null,
|
|
151
|
+
receiptHash: null,
|
|
152
|
+
signatureStatus: 'unknown',
|
|
153
|
+
signingKeyId: null,
|
|
154
|
+
sourceFree: false,
|
|
155
|
+
checks: { canonicalHash: false, receiptHash: false, signature: false, sourceFree: false },
|
|
156
|
+
reasons: ['receipt must be an object'],
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
let sourceFree = true;
|
|
160
|
+
try {
|
|
161
|
+
assertSourceFreeRuntimeReceipt(receipt);
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
sourceFree = false;
|
|
165
|
+
reasons.push(error instanceof Error ? error.message : String(error));
|
|
166
|
+
}
|
|
167
|
+
const candidate = signedPayload(receipt);
|
|
168
|
+
const expectedCanonicalHash = canonicalHash(candidate);
|
|
169
|
+
const canonicalHashValid = receipt.canonicalHash === expectedCanonicalHash;
|
|
170
|
+
if (!canonicalHashValid)
|
|
171
|
+
reasons.push('canonical hash mismatch');
|
|
172
|
+
const expectedReceiptHash = canonicalHash({
|
|
173
|
+
...candidate,
|
|
174
|
+
canonicalHash: receipt.canonicalHash,
|
|
175
|
+
signatureStatus: receipt.signatureStatus,
|
|
176
|
+
signingKeyId: receipt.signingKeyId ?? null,
|
|
177
|
+
signatureAlgorithm: receipt.signatureAlgorithm,
|
|
178
|
+
signature: receipt.signature ?? null,
|
|
179
|
+
});
|
|
180
|
+
const receiptHashValid = receipt.receiptHash === expectedReceiptHash;
|
|
181
|
+
if (!receiptHashValid)
|
|
182
|
+
reasons.push('receipt hash mismatch');
|
|
183
|
+
let signatureValid = false;
|
|
184
|
+
const secret = signingSecret();
|
|
185
|
+
if (receipt.signatureStatus !== 'signed' || !receipt.signature) {
|
|
186
|
+
reasons.push('receipt is unsigned');
|
|
187
|
+
}
|
|
188
|
+
else if (!secret) {
|
|
189
|
+
reasons.push('NEURCODE_RECEIPT_SIGNING_SECRET is not configured for verification');
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
const expectedSignature = hmacSha256(secret, canonicalStringify(candidate));
|
|
193
|
+
signatureValid = safeEqualHex(receipt.signature, expectedSignature);
|
|
194
|
+
if (!signatureValid)
|
|
195
|
+
reasons.push('signature mismatch');
|
|
196
|
+
}
|
|
197
|
+
const valid = sourceFree && canonicalHashValid && receiptHashValid && signatureValid;
|
|
198
|
+
const status = valid
|
|
199
|
+
? 'valid'
|
|
200
|
+
: receipt.signatureStatus !== 'signed'
|
|
201
|
+
? 'unsigned'
|
|
202
|
+
: !secret
|
|
203
|
+
? 'unverifiable'
|
|
204
|
+
: 'tampered';
|
|
205
|
+
return {
|
|
206
|
+
valid,
|
|
207
|
+
status,
|
|
208
|
+
receiptId: typeof receipt.receiptId === 'string' ? receipt.receiptId : null,
|
|
209
|
+
canonicalHash: typeof receipt.canonicalHash === 'string' ? receipt.canonicalHash : null,
|
|
210
|
+
receiptHash: typeof receipt.receiptHash === 'string' ? receipt.receiptHash : null,
|
|
211
|
+
signatureStatus: typeof receipt.signatureStatus === 'string' ? receipt.signatureStatus : 'unknown',
|
|
212
|
+
signingKeyId: typeof receipt.signingKeyId === 'string' ? receipt.signingKeyId : null,
|
|
213
|
+
sourceFree,
|
|
214
|
+
checks: {
|
|
215
|
+
canonicalHash: canonicalHashValid,
|
|
216
|
+
receiptHash: receiptHashValid,
|
|
217
|
+
signature: signatureValid,
|
|
218
|
+
sourceFree,
|
|
219
|
+
},
|
|
220
|
+
reasons,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=runtime-receipt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-receipt.js","sourceRoot":"","sources":["../../src/utils/runtime-receipt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime state guardrails.
|
|
3
|
+
*
|
|
4
|
+
* Detects the operational state of a project root and produces structured
|
|
5
|
+
* "what's next" guidance when a command would otherwise fail with a raw
|
|
6
|
+
* runtime / git / filesystem error.
|
|
7
|
+
*
|
|
8
|
+
* Pure, deterministic, no network. Read-only. No mutations to .neurcode/
|
|
9
|
+
* or any other on-disk state.
|
|
10
|
+
*
|
|
11
|
+
* Aesthetic discipline: subtle sophistication, no terminal theatrics.
|
|
12
|
+
* Aligned with the operational-experience refabrication phase
|
|
13
|
+
* (docs/ux/final-operational-experience-report.md).
|
|
14
|
+
*/
|
|
15
|
+
export type RuntimeStateIssue = 'not-a-git-repo' | 'no-head-commit' | 'no-neurcode-dir' | 'no-intent-pack';
|
|
16
|
+
export interface RuntimeStateSnapshot {
|
|
17
|
+
projectRoot: string;
|
|
18
|
+
isGitRepo: boolean;
|
|
19
|
+
hasHeadCommit: boolean;
|
|
20
|
+
hasNeurcodeDir: boolean;
|
|
21
|
+
hasIntentPack: boolean;
|
|
22
|
+
hasLastVerifyOutput: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare function detectRuntimeState(projectRoot: string): RuntimeStateSnapshot;
|
|
25
|
+
/**
|
|
26
|
+
* Render an operational-guidance panel when a command cannot run because
|
|
27
|
+
* a prerequisite is not met. Same aesthetic as the welcome banner + the
|
|
28
|
+
* `neurcode home` panels: subtle, structured, no theatrics.
|
|
29
|
+
*
|
|
30
|
+
* The panel writes to stderr (so JSON-mode callers piping stdout get clean
|
|
31
|
+
* JSON or no output) and returns the exit code the caller should propagate.
|
|
32
|
+
*/
|
|
33
|
+
export declare function renderRuntimeStateGuidance(issue: RuntimeStateIssue, state: RuntimeStateSnapshot, options?: {
|
|
34
|
+
commandLabel?: string;
|
|
35
|
+
}): number;
|
|
36
|
+
/**
|
|
37
|
+
* Convenience: detect state + render guidance + return the exit code for
|
|
38
|
+
* the FIRST unsatisfied prerequisite (in lifecycle order). Returns null if
|
|
39
|
+
* all required prerequisites are satisfied.
|
|
40
|
+
*/
|
|
41
|
+
export declare function guardRequired(projectRoot: string, required: ReadonlyArray<RuntimeStateIssue>, options?: {
|
|
42
|
+
commandLabel?: string;
|
|
43
|
+
}): number | null;
|
|
44
|
+
//# sourceMappingURL=runtime-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-state.d.ts","sourceRoot":"","sources":["../../src/utils/runtime-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,MAAM,MAAM,iBAAiB,GACzB,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,CAAC;AAErB,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAUD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,oBAAoB,CAiB5E;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE,oBAAoB,EAC3B,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACtC,MAAM,CA2ER;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,EAC1C,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACtC,MAAM,GAAG,IAAI,CAcf"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Runtime state guardrails.
|
|
4
|
+
*
|
|
5
|
+
* Detects the operational state of a project root and produces structured
|
|
6
|
+
* "what's next" guidance when a command would otherwise fail with a raw
|
|
7
|
+
* runtime / git / filesystem error.
|
|
8
|
+
*
|
|
9
|
+
* Pure, deterministic, no network. Read-only. No mutations to .neurcode/
|
|
10
|
+
* or any other on-disk state.
|
|
11
|
+
*
|
|
12
|
+
* Aesthetic discipline: subtle sophistication, no terminal theatrics.
|
|
13
|
+
* Aligned with the operational-experience refabrication phase
|
|
14
|
+
* (docs/ux/final-operational-experience-report.md).
|
|
15
|
+
*/
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.detectRuntimeState = detectRuntimeState;
|
|
21
|
+
exports.renderRuntimeStateGuidance = renderRuntimeStateGuidance;
|
|
22
|
+
exports.guardRequired = guardRequired;
|
|
23
|
+
const fs_1 = require("fs");
|
|
24
|
+
const child_process_1 = require("child_process");
|
|
25
|
+
const path_1 = require("path");
|
|
26
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
27
|
+
function safeExec(cmd, cwd) {
|
|
28
|
+
try {
|
|
29
|
+
return (0, child_process_1.execSync)(cmd, { cwd, encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function detectRuntimeState(projectRoot) {
|
|
36
|
+
const root = (0, path_1.resolve)(projectRoot);
|
|
37
|
+
const gitDir = safeExec('git rev-parse --git-dir', root);
|
|
38
|
+
const isGitRepo = !!gitDir;
|
|
39
|
+
const headSha = isGitRepo ? safeExec('git rev-parse --verify HEAD', root) : null;
|
|
40
|
+
const hasHeadCommit = !!headSha;
|
|
41
|
+
const hasNeurcodeDir = (0, fs_1.existsSync)((0, path_1.resolve)(root, '.neurcode'));
|
|
42
|
+
const hasIntentPack = (0, fs_1.existsSync)((0, path_1.resolve)(root, '.neurcode/intent-pack.json'));
|
|
43
|
+
const hasLastVerifyOutput = (0, fs_1.existsSync)((0, path_1.resolve)(root, '.neurcode/last-verify-output.json'));
|
|
44
|
+
return {
|
|
45
|
+
projectRoot: root,
|
|
46
|
+
isGitRepo,
|
|
47
|
+
hasHeadCommit,
|
|
48
|
+
hasNeurcodeDir,
|
|
49
|
+
hasIntentPack,
|
|
50
|
+
hasLastVerifyOutput,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Render an operational-guidance panel when a command cannot run because
|
|
55
|
+
* a prerequisite is not met. Same aesthetic as the welcome banner + the
|
|
56
|
+
* `neurcode home` panels: subtle, structured, no theatrics.
|
|
57
|
+
*
|
|
58
|
+
* The panel writes to stderr (so JSON-mode callers piping stdout get clean
|
|
59
|
+
* JSON or no output) and returns the exit code the caller should propagate.
|
|
60
|
+
*/
|
|
61
|
+
function renderRuntimeStateGuidance(issue, state, options = {}) {
|
|
62
|
+
const label = options.commandLabel ?? 'this command';
|
|
63
|
+
const print = (line = '') => process.stderr.write(line + '\n');
|
|
64
|
+
print('');
|
|
65
|
+
print(chalk_1.default.bold(`neurcode · runtime state guidance`));
|
|
66
|
+
print(chalk_1.default.dim(` ${label} cannot continue — a prerequisite is not yet satisfied.`));
|
|
67
|
+
print('');
|
|
68
|
+
switch (issue) {
|
|
69
|
+
case 'not-a-git-repo':
|
|
70
|
+
print(` ${chalk_1.default.bold('Issue')} not inside a git repository`);
|
|
71
|
+
print(` ${chalk_1.default.bold('Path')} ${chalk_1.default.dim(state.projectRoot)}`);
|
|
72
|
+
print('');
|
|
73
|
+
print(` ${chalk_1.default.bold('Why this matters')}`);
|
|
74
|
+
print(chalk_1.default.dim(' Neurcode governs change against a declared intent contract. The'));
|
|
75
|
+
print(chalk_1.default.dim(' diff between the current working tree and a base ref is the input'));
|
|
76
|
+
print(chalk_1.default.dim(' to the verify pipeline. Without git, there is no diff to govern.'));
|
|
77
|
+
print('');
|
|
78
|
+
print(` ${chalk_1.default.bold('Recommended next step')}`);
|
|
79
|
+
print(chalk_1.default.cyan(' git init && git add . && git commit -m "chore: baseline"'));
|
|
80
|
+
print('');
|
|
81
|
+
break;
|
|
82
|
+
case 'no-head-commit':
|
|
83
|
+
print(` ${chalk_1.default.bold('Issue')} git repository has no HEAD commit yet`);
|
|
84
|
+
print(` ${chalk_1.default.bold('Path')} ${chalk_1.default.dim(state.projectRoot)}`);
|
|
85
|
+
print('');
|
|
86
|
+
print(` ${chalk_1.default.bold('Why this matters')}`);
|
|
87
|
+
print(chalk_1.default.dim(' Verify needs a base commit to diff against. A freshly-initialised'));
|
|
88
|
+
print(chalk_1.default.dim(' git repository has no HEAD until something is committed.'));
|
|
89
|
+
print('');
|
|
90
|
+
print(` ${chalk_1.default.bold('Recommended next step')}`);
|
|
91
|
+
print(chalk_1.default.cyan(' git add . && git commit -m "chore: baseline"'));
|
|
92
|
+
print(chalk_1.default.dim(' Then re-run verify; the working-tree diff will resolve cleanly.'));
|
|
93
|
+
print('');
|
|
94
|
+
break;
|
|
95
|
+
case 'no-neurcode-dir':
|
|
96
|
+
print(` ${chalk_1.default.bold('Issue')} no .neurcode/ directory in the project root`);
|
|
97
|
+
print(` ${chalk_1.default.bold('Path')} ${chalk_1.default.dim(state.projectRoot)}`);
|
|
98
|
+
print('');
|
|
99
|
+
print(` ${chalk_1.default.bold('Why this matters')}`);
|
|
100
|
+
print(chalk_1.default.dim(' Neurcode reads its governance state from .neurcode/ — the intent'));
|
|
101
|
+
print(chalk_1.default.dim(' contract, evidence artefacts, control-plane snapshots, and replay'));
|
|
102
|
+
print(chalk_1.default.dim(' state all live there. Without it, verify has no contract to enforce.'));
|
|
103
|
+
print('');
|
|
104
|
+
print(` ${chalk_1.default.bold('Recommended next step')}`);
|
|
105
|
+
print(chalk_1.default.cyan(' neurcode start') + chalk_1.default.dim(' "what you intend to change"'));
|
|
106
|
+
print(chalk_1.default.dim(' This declares the intent contract and initialises .neurcode/.'));
|
|
107
|
+
print('');
|
|
108
|
+
break;
|
|
109
|
+
case 'no-intent-pack':
|
|
110
|
+
print(` ${chalk_1.default.bold('Issue')} no intent contract on disk`);
|
|
111
|
+
print(` ${chalk_1.default.bold('Path')} ${chalk_1.default.dim(state.projectRoot)}/.neurcode/intent-pack.json`);
|
|
112
|
+
print('');
|
|
113
|
+
print(` ${chalk_1.default.bold('Why this matters')}`);
|
|
114
|
+
print(chalk_1.default.dim(' Neurcode is intent-first. Verify needs a declared intent contract'));
|
|
115
|
+
print(chalk_1.default.dim(' to know what scope to govern. Without it, runtime falls back to'));
|
|
116
|
+
print(chalk_1.default.dim(' structural rules only — the dominant value of the runtime (scope'));
|
|
117
|
+
print(chalk_1.default.dim(' guard, forbidden-boundary enforcement, import-edge governance) is'));
|
|
118
|
+
print(chalk_1.default.dim(' inactive.'));
|
|
119
|
+
print('');
|
|
120
|
+
print(` ${chalk_1.default.bold('Recommended next step')}`);
|
|
121
|
+
print(chalk_1.default.cyan(' neurcode start') + chalk_1.default.dim(' "what you intend to change"'));
|
|
122
|
+
print('');
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
print(chalk_1.default.dim(' See: ') + chalk_1.default.cyan('neurcode home') + chalk_1.default.dim(' for the current runtime state.'));
|
|
126
|
+
print('');
|
|
127
|
+
return 2;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Convenience: detect state + render guidance + return the exit code for
|
|
131
|
+
* the FIRST unsatisfied prerequisite (in lifecycle order). Returns null if
|
|
132
|
+
* all required prerequisites are satisfied.
|
|
133
|
+
*/
|
|
134
|
+
function guardRequired(projectRoot, required, options = {}) {
|
|
135
|
+
const state = detectRuntimeState(projectRoot);
|
|
136
|
+
const checks = [
|
|
137
|
+
['not-a-git-repo', !state.isGitRepo],
|
|
138
|
+
['no-head-commit', state.isGitRepo && !state.hasHeadCommit],
|
|
139
|
+
['no-neurcode-dir', !state.hasNeurcodeDir],
|
|
140
|
+
['no-intent-pack', !state.hasIntentPack],
|
|
141
|
+
];
|
|
142
|
+
for (const [issue, failed] of checks) {
|
|
143
|
+
if (!required.includes(issue))
|
|
144
|
+
continue;
|
|
145
|
+
if (!failed)
|
|
146
|
+
continue;
|
|
147
|
+
return renderRuntimeStateGuidance(issue, state, options);
|
|
148
|
+
}
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=runtime-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-state.js","sourceRoot":"","sources":["../../src/utils/runtime-state.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/state.d.ts
CHANGED
|
@@ -8,6 +8,9 @@ export interface CliState {
|
|
|
8
8
|
projectId?: string;
|
|
9
9
|
orgId?: string;
|
|
10
10
|
orgName?: string;
|
|
11
|
+
workspaceType?: 'personal' | 'organization';
|
|
12
|
+
workspaceRole?: string;
|
|
13
|
+
linkedAt?: string;
|
|
11
14
|
sessionId?: string;
|
|
12
15
|
lastPlanId?: string;
|
|
13
16
|
activePlanId?: string;
|
|
@@ -50,10 +53,28 @@ export declare function getOrgId(): string | null;
|
|
|
50
53
|
* Set organization ID in state
|
|
51
54
|
*/
|
|
52
55
|
export declare function setOrgId(orgId: string, orgName?: string): void;
|
|
56
|
+
/**
|
|
57
|
+
* Persist the full governance ownership context for this repository.
|
|
58
|
+
*/
|
|
59
|
+
export declare function setWorkspaceContext(input: {
|
|
60
|
+
orgId: string;
|
|
61
|
+
orgName?: string;
|
|
62
|
+
workspaceType?: 'personal' | 'organization';
|
|
63
|
+
workspaceRole?: string;
|
|
64
|
+
projectId?: string;
|
|
65
|
+
}): void;
|
|
53
66
|
/**
|
|
54
67
|
* Get organization name from state
|
|
55
68
|
*/
|
|
56
69
|
export declare function getOrgName(): string | null;
|
|
70
|
+
/**
|
|
71
|
+
* Get workspace ownership type from state.
|
|
72
|
+
*/
|
|
73
|
+
export declare function getWorkspaceType(): 'personal' | 'organization' | null;
|
|
74
|
+
/**
|
|
75
|
+
* Get workspace role captured during repo initialization.
|
|
76
|
+
*/
|
|
77
|
+
export declare function getWorkspaceRole(): string | null;
|
|
57
78
|
/**
|
|
58
79
|
* Get last plan ID from state
|
|
59
80
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,QAAQ;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AA4BD;;GAEG;AACH,wBAAgB,SAAS,IAAI,QAAQ,CAcpC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAOxD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAG5C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAG5C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAGxC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAE9D;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAG1C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAG7C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAG/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAGtD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE9D"}
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,QAAQ;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AA4BD;;GAEG;AACH,wBAAgB,SAAS,IAAI,QAAQ,CAcpC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAOxD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAG5C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAG5C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAGxC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAE9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,IAAI,CASP;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAG1C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,GAAG,cAAc,GAAG,IAAI,CAGrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAGhD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAG7C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAG/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAGtD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE9D"}
|
package/dist/utils/state.js
CHANGED
|
@@ -15,7 +15,10 @@ exports.getProjectId = getProjectId;
|
|
|
15
15
|
exports.setProjectId = setProjectId;
|
|
16
16
|
exports.getOrgId = getOrgId;
|
|
17
17
|
exports.setOrgId = setOrgId;
|
|
18
|
+
exports.setWorkspaceContext = setWorkspaceContext;
|
|
18
19
|
exports.getOrgName = getOrgName;
|
|
20
|
+
exports.getWorkspaceType = getWorkspaceType;
|
|
21
|
+
exports.getWorkspaceRole = getWorkspaceRole;
|
|
19
22
|
exports.getLastPlanId = getLastPlanId;
|
|
20
23
|
exports.setLastPlanId = setLastPlanId;
|
|
21
24
|
exports.getActivePlanId = getActivePlanId;
|
|
@@ -123,6 +126,19 @@ function getOrgId() {
|
|
|
123
126
|
function setOrgId(orgId, orgName) {
|
|
124
127
|
saveState({ orgId, ...(orgName ? { orgName } : {}) });
|
|
125
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Persist the full governance ownership context for this repository.
|
|
131
|
+
*/
|
|
132
|
+
function setWorkspaceContext(input) {
|
|
133
|
+
saveState({
|
|
134
|
+
orgId: input.orgId,
|
|
135
|
+
...(input.orgName ? { orgName: input.orgName } : {}),
|
|
136
|
+
...(input.workspaceType ? { workspaceType: input.workspaceType } : {}),
|
|
137
|
+
...(input.workspaceRole ? { workspaceRole: input.workspaceRole } : {}),
|
|
138
|
+
...(input.projectId ? { projectId: input.projectId } : {}),
|
|
139
|
+
linkedAt: new Date().toISOString(),
|
|
140
|
+
});
|
|
141
|
+
}
|
|
126
142
|
/**
|
|
127
143
|
* Get organization name from state
|
|
128
144
|
*/
|
|
@@ -130,6 +146,20 @@ function getOrgName() {
|
|
|
130
146
|
const state = loadState();
|
|
131
147
|
return state.orgName || null;
|
|
132
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Get workspace ownership type from state.
|
|
151
|
+
*/
|
|
152
|
+
function getWorkspaceType() {
|
|
153
|
+
const state = loadState();
|
|
154
|
+
return state.workspaceType || null;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get workspace role captured during repo initialization.
|
|
158
|
+
*/
|
|
159
|
+
function getWorkspaceRole() {
|
|
160
|
+
const state = loadState();
|
|
161
|
+
return state.workspaceRole || null;
|
|
162
|
+
}
|
|
133
163
|
/**
|
|
134
164
|
* Get last plan ID from state
|
|
135
165
|
*/
|
package/dist/utils/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"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"}
|