@enterpriseai/cli 3.19.3 → 3.19.5
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 +47 -16
- package/dist/commands/agent.js +3 -1
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +116 -35
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/eai-managed-source-move.js +2 -2
- package/dist/commands/eai-managed-source-move.js.map +1 -1
- package/dist/commands/env.js +15 -2
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/gofer.js +8 -1
- package/dist/commands/gofer.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +172 -25
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +6 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/provision.d.ts.map +1 -1
- package/dist/commands/provision.js +25 -8
- package/dist/commands/provision.js.map +1 -1
- package/dist/commands/publicapi.d.ts.map +1 -1
- package/dist/commands/publicapi.js +14 -2
- package/dist/commands/publicapi.js.map +1 -1
- package/dist/commands/resources.d.ts.map +1 -1
- package/dist/commands/resources.js +41 -20
- package/dist/commands/resources.js.map +1 -1
- package/dist/commands/support.d.ts +6 -3
- package/dist/commands/support.d.ts.map +1 -1
- package/dist/commands/support.js +117 -25
- package/dist/commands/support.js.map +1 -1
- package/dist/commands/tenant.d.ts.map +1 -1
- package/dist/commands/tenant.js +45 -37
- package/dist/commands/tenant.js.map +1 -1
- package/dist/commands/types.d.ts +7 -0
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js +118 -24
- package/dist/commands/types.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +89 -44
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/vertical.d.ts.map +1 -1
- package/dist/commands/vertical.js +163 -15
- package/dist/commands/vertical.js.map +1 -1
- package/dist/index.js +22 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-guide.d.ts.map +1 -1
- package/dist/lib/agent-guide.js +18 -15
- package/dist/lib/agent-guide.js.map +1 -1
- package/dist/lib/api.d.ts +22 -2
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +149 -38
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/cloud-env.d.ts +1 -0
- package/dist/lib/cloud-env.d.ts.map +1 -1
- package/dist/lib/cloud-env.js +28 -15
- package/dist/lib/cloud-env.js.map +1 -1
- package/dist/lib/config.d.ts +4 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +5 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/eai-managed-source-client-types.d.ts +10 -0
- package/dist/lib/eai-managed-source-client-types.d.ts.map +1 -1
- package/dist/lib/eai-managed-source-operation-client.d.ts.map +1 -1
- package/dist/lib/eai-managed-source-operation-client.js +13 -1
- package/dist/lib/eai-managed-source-operation-client.js.map +1 -1
- package/dist/lib/error-codes.d.ts.map +1 -1
- package/dist/lib/error-codes.js +3 -2
- package/dist/lib/error-codes.js.map +1 -1
- package/dist/lib/gofer-installer.d.ts.map +1 -1
- package/dist/lib/gofer-installer.js +3 -1
- package/dist/lib/gofer-installer.js.map +1 -1
- package/dist/lib/object-type-export-filesystem.d.ts +13 -0
- package/dist/lib/object-type-export-filesystem.d.ts.map +1 -0
- package/dist/lib/object-type-export-filesystem.js +112 -0
- package/dist/lib/object-type-export-filesystem.js.map +1 -0
- package/dist/lib/object-type-export.d.ts +13 -0
- package/dist/lib/object-type-export.d.ts.map +1 -0
- package/dist/lib/object-type-export.js +173 -0
- package/dist/lib/object-type-export.js.map +1 -0
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +21 -1
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/platform-diagnostics.d.ts +21 -0
- package/dist/lib/platform-diagnostics.d.ts.map +1 -0
- package/dist/lib/platform-diagnostics.js +50 -0
- package/dist/lib/platform-diagnostics.js.map +1 -0
- package/dist/lib/profile.d.ts +7 -2
- package/dist/lib/profile.d.ts.map +1 -1
- package/dist/lib/profile.js +139 -4
- package/dist/lib/profile.js.map +1 -1
- package/dist/lib/schema-builder.d.ts +2 -0
- package/dist/lib/schema-builder.d.ts.map +1 -1
- package/dist/lib/schema-builder.js +5 -0
- package/dist/lib/schema-builder.js.map +1 -1
- package/dist/lib/support-context.d.ts +4 -3
- package/dist/lib/support-context.d.ts.map +1 -1
- package/dist/lib/support-context.js +11 -13
- package/dist/lib/support-context.js.map +1 -1
- package/dist/lib/support-harness.d.ts +86 -0
- package/dist/lib/support-harness.d.ts.map +1 -0
- package/dist/lib/support-harness.js +471 -0
- package/dist/lib/support-harness.js.map +1 -0
- package/dist/lib/support-redaction.d.ts.map +1 -1
- package/dist/lib/support-redaction.js +221 -3
- package/dist/lib/support-redaction.js.map +1 -1
- package/dist/lib/support-report.d.ts +27 -5
- package/dist/lib/support-report.d.ts.map +1 -1
- package/dist/lib/support-report.js +75 -31
- package/dist/lib/support-report.js.map +1 -1
- package/package.json +8 -3
- package/resources/deploy/eai-app-template/producer-pin.json +4 -4
- package/resources/gofer/agents-skills/eai/SKILL.md +22 -21
- package/resources/gofer/claude-commands/eai.md +22 -21
- package/resources/gofer/claude-skills/eai/SKILL.md +22 -21
- package/resources/gofer/commands/0_gofer_start.md +26 -24
- package/resources/gofer/commands/5_gofer_implement.md +8 -4
- package/resources/gofer/commands/gofer_eai_first_run.md +27 -22
- package/resources/gofer/copilot-prompts/eai.prompt.md +22 -21
- package/resources/gofer/gemini/commands/gofer/eai.md +22 -21
- package/resources/gofer/gemini/commands/gofer/manifest.json +1 -1
- package/resources/gofer/github-skills/eai/SKILL.md +22 -21
- package/resources/gofer/grok-skills/eai/SKILL.md +22 -21
- package/resources/gofer/instruction-templates/base/agents-base.md +18 -17
- package/resources/gofer/instruction-templates/base/claude-base.md +0 -18
- package/resources/gofer/instruction-templates/base/copilot-base.md +18 -17
- package/resources/gofer/instruction-templates/gofer/gofer-claude.md +1 -7
- package/resources/gofer/node-scripts/generate-commands.mjs +37 -24
- package/resources/gofer/node-scripts/package-agent-plugin.mjs +55 -6
- package/resources/gofer/node-scripts/workspace-bootstrap-lib.mjs +8 -4
- package/resources/gofer/references/platform/README.md +8 -3
- package/resources/gofer/references/platform/eai-support.md +16 -16
- package/resources/gofer/specify-commands/0_gofer_start.md +26 -24
- package/resources/gofer/specify-commands/5_gofer_implement.md +8 -4
- package/resources/gofer/specify-commands/gofer_eai_first_run.md +27 -22
- package/resources/gofer/system-skills/eai/SKILL.md +22 -21
- package/resources/linked-sources.json +2 -2
package/dist/lib/output.js
CHANGED
|
@@ -38,6 +38,22 @@ export function redactSensitiveText(msg) {
|
|
|
38
38
|
.replace(URI_CREDENTIAL_PATTERN, '$1[redacted]@')
|
|
39
39
|
.replace(SENSITIVE_ASSIGNMENT_PATTERN, '$1[redacted]');
|
|
40
40
|
}
|
|
41
|
+
function safeTenantDeauthorization(key, value) {
|
|
42
|
+
if (!['tenant_deauthorization', 'tenantDeauthorization'].includes(key)
|
|
43
|
+
|| !value || typeof value !== 'object' || Array.isArray(value))
|
|
44
|
+
return undefined;
|
|
45
|
+
const summary = value;
|
|
46
|
+
const camel = summary.alreadyAbsent;
|
|
47
|
+
const snake = summary.already_absent;
|
|
48
|
+
if (camel !== undefined && snake !== undefined && camel !== snake)
|
|
49
|
+
return undefined;
|
|
50
|
+
const alreadyAbsent = camel ?? snake;
|
|
51
|
+
if (typeof summary.removed !== 'boolean' || typeof alreadyAbsent !== 'boolean'
|
|
52
|
+
|| summary.removed === alreadyAbsent)
|
|
53
|
+
return undefined;
|
|
54
|
+
// Preserve only these non-secret receipt booleans; arbitrary extra fields stay omitted.
|
|
55
|
+
return { removed: summary.removed, [camel !== undefined ? 'alreadyAbsent' : 'already_absent']: alreadyAbsent };
|
|
56
|
+
}
|
|
41
57
|
/**
|
|
42
58
|
* Recursively redact secrets from an arbitrary JSON-like value: string leaves
|
|
43
59
|
* pass through redactSensitiveText, and values under sensitive keys are masked.
|
|
@@ -53,13 +69,17 @@ export function redactSensitiveDeep(value) {
|
|
|
53
69
|
if (value && typeof value === 'object') {
|
|
54
70
|
const out = {};
|
|
55
71
|
for (const [key, item] of Object.entries(value)) {
|
|
56
|
-
out[key] =
|
|
72
|
+
out[key] = safeTenantDeauthorization(key, item)
|
|
73
|
+
?? (SENSITIVE_KEY_PATTERN.test(key) ? '[redacted]' : redactSensitiveDeep(item));
|
|
57
74
|
}
|
|
58
75
|
return out;
|
|
59
76
|
}
|
|
60
77
|
return value;
|
|
61
78
|
}
|
|
62
79
|
function redactingJsonReplacer(key, value) {
|
|
80
|
+
const summary = safeTenantDeauthorization(key, value);
|
|
81
|
+
if (summary)
|
|
82
|
+
return summary;
|
|
63
83
|
if (key && SENSITIVE_KEY_PATTERN.test(key)) {
|
|
64
84
|
return '[redacted]';
|
|
65
85
|
}
|
package/dist/lib/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,0BAA0B;AAC1B,SAAS,cAAc;IACrB,sCAAsC;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yCAAyC;IACzC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2BAA2B;IAC3B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;AACvC,CAAC;AAED,qDAAqD;AACrD,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,UAAU,GAAG,OAAO,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;AAElC,MAAM,4BAA4B,GAChC,iMAAiM,CAAC;AACpM,MAAM,qBAAqB,GACzB,qJAAqJ,CAAC;AACxJ,MAAM,mBAAmB,GAAG,6CAA6C,CAAC;AAC1E,MAAM,WAAW,GAAG,oEAAoE,CAAC;AACzF,mFAAmF;AACnF,MAAM,sBAAsB,GAAG,iDAAiD,CAAC;AAEjF,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,OAAO,GAAG;SACP,OAAO,CAAC,mBAAmB,EAAE,eAAe,CAAC;SAC7C,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC;SACtC,OAAO,CAAC,sBAAsB,EAAE,eAAe,CAAC;SAChD,OAAO,CAAC,4BAA4B,EAAE,cAAc,CAAC,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAI,KAAQ;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,mBAAmB,CAAC,KAAK,CAAiB,CAAC;IACpD,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAiB,CAAC;IACxE,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YAC3E,GAAG,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Allowlisted rotation outcome; unknown issuance is never eligible for automatic retry. */
|
|
2
|
+
export interface SafeRotationFailure {
|
|
3
|
+
readonly reason: string;
|
|
4
|
+
readonly outcome: 'not_issued' | 'unknown';
|
|
5
|
+
readonly retryable: boolean;
|
|
6
|
+
}
|
|
7
|
+
/** Safe HTTP/error/support metadata for product messages, excluding upstream text and credential values. */
|
|
8
|
+
export interface SafePlatformDiagnostics {
|
|
9
|
+
readonly status: number;
|
|
10
|
+
readonly code?: string;
|
|
11
|
+
readonly requestId?: string;
|
|
12
|
+
readonly supportReference?: string;
|
|
13
|
+
readonly rotationFailure?: SafeRotationFailure;
|
|
14
|
+
}
|
|
15
|
+
/** UUID references and the legacy bounded req-* request identifiers are eligible for display. */
|
|
16
|
+
export declare function safeSupportReference(value: unknown): string | undefined;
|
|
17
|
+
/** Extract allowlisted metadata from bounded known envelope nesting, without echoing arbitrary values. */
|
|
18
|
+
export declare function safePlatformDiagnostics(status: number, payload: unknown, headers?: Headers): SafePlatformDiagnostics;
|
|
19
|
+
/** Format static guidance plus validated diagnostic identifiers for a failed operation. */
|
|
20
|
+
export declare function formatSafePlatformFailure(operation: string, diagnostics: SafePlatformDiagnostics): string;
|
|
21
|
+
//# sourceMappingURL=platform-diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-diagnostics.d.ts","sourceRoot":"","sources":["../../src/lib/platform-diagnostics.ts"],"names":[],"mappings":"AAYA,4FAA4F;AAC5F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,4GAA4G;AAC5G,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,mBAAmB,CAAC;CAChD;AAED,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEvE;AAED,0GAA0G;AAC1G,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CA0BpH;AAED,2FAA2F;AAC3F,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,GAAG,MAAM,CAIzG"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/** Product-safe diagnostics: never return upstream messages, bodies, URLs or credentials. */
|
|
2
|
+
import { isRecord } from './utils.js';
|
|
3
|
+
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
4
|
+
const ERROR_CODES = new Set([
|
|
5
|
+
'ENTRA_ROTATION_FAILED', 'QUERY_PLACEMENT_UNSUPPORTED', 'VALIDATION_ERROR',
|
|
6
|
+
'AUTHENTICATION_REQUIRED', 'PERMISSION_DENIED', 'NOT_FOUND', 'RESOURCEAPI_UNAVAILABLE',
|
|
7
|
+
'RESOURCEAPI_SCHEMA_PUBLICATION_CONFLICT', 'RESOURCEAPI_SCHEMA_PUBLICATION_UNVERIFIED',
|
|
8
|
+
]);
|
|
9
|
+
const ROTATION_REASONS = new Set(['concurrency_conflict', 'throttled', 'registration_not_found',
|
|
10
|
+
'provider_rejected', 'provider_unavailable', 'deadline_exceeded', 'outcome_unknown']);
|
|
11
|
+
/** UUID references and the legacy bounded req-* request identifiers are eligible for display. */
|
|
12
|
+
export function safeSupportReference(value) {
|
|
13
|
+
return typeof value === 'string' && (UUID.test(value) || /^req-[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/.test(value)) ? value : undefined;
|
|
14
|
+
}
|
|
15
|
+
/** Extract allowlisted metadata from bounded known envelope nesting, without echoing arbitrary values. */
|
|
16
|
+
export function safePlatformDiagnostics(status, payload, headers) {
|
|
17
|
+
const records = [];
|
|
18
|
+
let level = [payload];
|
|
19
|
+
for (let depth = 0; depth < 4 && records.length < 16; depth += 1) {
|
|
20
|
+
const next = [];
|
|
21
|
+
for (const value of level) {
|
|
22
|
+
if (!isRecord(value) || records.length >= 16)
|
|
23
|
+
continue;
|
|
24
|
+
records.push(value);
|
|
25
|
+
next.push(value.detail, value.error, value.details);
|
|
26
|
+
}
|
|
27
|
+
level = next;
|
|
28
|
+
}
|
|
29
|
+
const code = records.flatMap(value => [value.code, value.error]).find((value) => typeof value === 'string' && ERROR_CODES.has(value));
|
|
30
|
+
const requestId = safeSupportReference(headers?.get('x-request-id'))
|
|
31
|
+
?? safeSupportReference(headers?.get('x-correlation-id'))
|
|
32
|
+
?? records.map(value => safeSupportReference(value.requestId ?? value.request_id)).find(Boolean);
|
|
33
|
+
const supportReference = records.map(value => safeSupportReference(value.supportReference ?? value.supportRef ?? value.ref)).find(Boolean);
|
|
34
|
+
const rotation = code === 'ENTRA_ROTATION_FAILED' ? records.find(value => typeof value.reason === 'string'
|
|
35
|
+
&& ROTATION_REASONS.has(value.reason) && typeof value.outcome === 'string'
|
|
36
|
+
&& ['not_issued', 'unknown'].includes(value.outcome) && typeof value.retryable === 'boolean'
|
|
37
|
+
&& (value.outcome === 'unknown') === (value.reason === 'outcome_unknown')
|
|
38
|
+
&& !(value.outcome === 'unknown' && value.retryable)) : undefined;
|
|
39
|
+
return { status, ...(code ? { code } : {}), ...(requestId ? { requestId } : {}),
|
|
40
|
+
...(supportReference ? { supportReference } : {}),
|
|
41
|
+
...(rotation ? { rotationFailure: { reason: rotation.reason, outcome: rotation.outcome,
|
|
42
|
+
retryable: rotation.outcome === 'unknown' ? false : rotation.retryable } } : {}) };
|
|
43
|
+
}
|
|
44
|
+
/** Format static guidance plus validated diagnostic identifiers for a failed operation. */
|
|
45
|
+
export function formatSafePlatformFailure(operation, diagnostics) {
|
|
46
|
+
return `${operation} failed (HTTP ${diagnostics.status})${diagnostics.code ? ` [${diagnostics.code}]` : ''}`
|
|
47
|
+
+ `${diagnostics.supportReference ? `; support reference ${diagnostics.supportReference}` : ''}`
|
|
48
|
+
+ `${diagnostics.requestId ? `; request ${diagnostics.requestId}` : ''}.`;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=platform-diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-diagnostics.js","sourceRoot":"","sources":["../../src/lib/platform-diagnostics.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/profile.d.ts
CHANGED
|
@@ -20,12 +20,17 @@ export interface ProfileConfig {
|
|
|
20
20
|
/** SECURITY: authorizes one HTTPS managed endpoint, exactly matching this profile's publicApiUrl. */
|
|
21
21
|
readonly managedDeploymentApiUrl?: string;
|
|
22
22
|
}
|
|
23
|
+
/** Validate and activate a local profile selector, invalidating captured configuration bindings. */
|
|
23
24
|
export declare function setActiveProfile(name: string): void;
|
|
24
25
|
export declare function getActiveProfile(): string;
|
|
25
26
|
/** INVARIANT: command/profile changes invalidate captured local input metadata. */
|
|
26
27
|
export declare function getProfileCaptureGeneration(): number;
|
|
27
|
-
/**
|
|
28
|
-
export declare function resolveCommandProfile(command: Pick<Command, 'optsWithGlobals'>, environmentProfile?: string | undefined): string;
|
|
28
|
+
/** Resolve the selector before any token, auth or API configuration is loaded. */
|
|
29
|
+
export declare function resolveCommandProfile(command: Pick<Command, 'optsWithGlobals'>, environmentProfile?: string | undefined, projectProfile?: string): string;
|
|
30
|
+
/** Activate the command's app context once, before command handlers can read auth or APIs. */
|
|
31
|
+
export declare function activateCommandProfile(command: Command, environmentProfile?: string | undefined, workingDirectory?: string): Promise<void>;
|
|
32
|
+
/** Revalidate the already selected profile before login's protected workspace discovery. */
|
|
33
|
+
export declare function assertActiveProfileApiCoherence(projectRoot?: string): Promise<void>;
|
|
29
34
|
export declare function getConfigFilePath(): string;
|
|
30
35
|
/**
|
|
31
36
|
* Token file path for a given profile.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/lib/profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/lib/profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC;AAMvD,gHAAgH;AAChH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,qGAAqG;IACrG,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAC3C;AAYD,oGAAoG;AACpG,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKnD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,mFAAmF;AACnF,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AASD,kFAAkF;AAClF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,EACzC,kBAAkB,qBAA0B,EAC5C,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAQR;AA0FD,8FAA8F;AAC9F,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,OAAO,EAChB,kBAAkB,qBAA0B,EAC5C,gBAAgB,SAAgB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,4FAA4F;AAC5F,wBAAsB,+BAA+B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzF;AAQD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMzD;AAID;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAEnF;AAED,wHAAwH;AACxH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAkFvE;AAqDD,gHAAgH;AAChH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyE1F;AAED,mDAAmD;AACnD,eAAO,MAAM,kBAAkB,wCAAwC,CAAC;AAExE,kEAAkE;AAClE,eAAO,MAAM,6BAA6B,yBAAyB,CAAC;AAEpE,gEAAgE;AAChE,eAAO,MAAM,2BAA2B,yCAAyC,CAAC;AAElF,+DAA+D;AAC/D,eAAO,MAAM,2BAA2B,yCAAyC,CAAC;AAElF,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,4DAA4D,CAAC;AAE/F,6DAA6D;AAC7D,eAAO,MAAM,uBAAuB,gGAAmD,CAAC"}
|
package/dist/lib/profile.js
CHANGED
|
@@ -10,13 +10,17 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { constants, closeSync, fsyncSync, fstatSync, lstatSync, mkdirSync, openSync, readSync, realpathSync, renameSync, unlinkSync, writeFileSync, } from 'node:fs';
|
|
12
12
|
import { randomUUID } from 'node:crypto';
|
|
13
|
-
import { dirname, join } from 'node:path';
|
|
13
|
+
import { dirname, join, resolve } from 'node:path';
|
|
14
14
|
import { homedir } from 'node:os';
|
|
15
|
+
import { parse as parseEnv } from 'dotenv';
|
|
16
|
+
import { findProjectRoot } from './config.js';
|
|
15
17
|
// ── Module-level state ───────────────────────────────────────────────────────
|
|
16
18
|
let _activeProfileName = 'default';
|
|
17
19
|
const capturedProfiles = new Map();
|
|
18
20
|
let captureGeneration = 0;
|
|
21
|
+
/** Validate and activate a local profile selector, invalidating captured configuration bindings. */
|
|
19
22
|
export function setActiveProfile(name) {
|
|
23
|
+
assertProfileName(name);
|
|
20
24
|
capturedProfiles.clear();
|
|
21
25
|
captureGeneration += 1;
|
|
22
26
|
_activeProfileName = name;
|
|
@@ -28,13 +32,141 @@ export function getActiveProfile() {
|
|
|
28
32
|
export function getProfileCaptureGeneration() {
|
|
29
33
|
return captureGeneration;
|
|
30
34
|
}
|
|
31
|
-
/**
|
|
32
|
-
|
|
35
|
+
/** A profile selector is a local name, never a token-file path or interpolated env value. */
|
|
36
|
+
function assertProfileName(name) {
|
|
37
|
+
if (!/^[A-Za-z0-9_-][A-Za-z0-9._-]{0,127}$/.test(name)) {
|
|
38
|
+
throw new Error('EAI profile names must contain 1–128 letters, numbers, dots, underscores or hyphens and cannot start with a dot.');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** Resolve the selector before any token, auth or API configuration is loaded. */
|
|
42
|
+
export function resolveCommandProfile(command, environmentProfile = process.env.EAI_PROFILE, projectProfile) {
|
|
33
43
|
const options = command.optsWithGlobals();
|
|
34
44
|
const explicitProfile = typeof options.profile === 'string'
|
|
35
45
|
? options.profile.trim()
|
|
36
46
|
: '';
|
|
37
|
-
|
|
47
|
+
const selected = explicitProfile || environmentProfile?.trim() || projectProfile?.trim() || 'default';
|
|
48
|
+
assertProfileName(selected);
|
|
49
|
+
return selected;
|
|
50
|
+
}
|
|
51
|
+
const MAX_PROJECT_CONTEXT_BYTES = 64 * 1024;
|
|
52
|
+
/** Read only the ignored app-root context, with bounded bytes and no linked/special files. */
|
|
53
|
+
function captureProjectProfileEnv(projectRoot) {
|
|
54
|
+
const root = realpathSync(projectRoot);
|
|
55
|
+
const path = join(root, '.env.local');
|
|
56
|
+
let leaf;
|
|
57
|
+
try {
|
|
58
|
+
leaf = lstatSync(path);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
if (error.code === 'ENOENT')
|
|
62
|
+
return {};
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
if (!leaf.isFile() || leaf.isSymbolicLink() || leaf.nlink !== 1 || leaf.size > MAX_PROJECT_CONTEXT_BYTES) {
|
|
66
|
+
throw new Error('Project .env.local context must be a single-link regular file within 64 KiB.');
|
|
67
|
+
}
|
|
68
|
+
const parent = lstatSync(root);
|
|
69
|
+
const descriptor = openSync(path, constants.O_RDONLY | (constants.O_NOFOLLOW || 0) | (constants.O_NONBLOCK || 0));
|
|
70
|
+
try {
|
|
71
|
+
const opened = fstatSync(descriptor);
|
|
72
|
+
if (!sameFile(leaf, opened))
|
|
73
|
+
throw new Error('Project .env.local context changed during capture.');
|
|
74
|
+
const buffer = Buffer.alloc(MAX_PROJECT_CONTEXT_BYTES + 1);
|
|
75
|
+
let length = 0;
|
|
76
|
+
while (length < buffer.length) {
|
|
77
|
+
const count = readSync(descriptor, buffer, length, buffer.length - length, null);
|
|
78
|
+
if (count === 0)
|
|
79
|
+
break;
|
|
80
|
+
length += count;
|
|
81
|
+
}
|
|
82
|
+
const bound = lstatSync(path);
|
|
83
|
+
const parentAfter = lstatSync(root);
|
|
84
|
+
if (length !== opened.size || length > MAX_PROJECT_CONTEXT_BYTES
|
|
85
|
+
|| !sameFile(opened, fstatSync(descriptor)) || !sameFile(opened, bound)
|
|
86
|
+
|| parent.dev !== parentAfter.dev || parent.ino !== parentAfter.ino || parentAfter.isSymbolicLink()) {
|
|
87
|
+
throw new Error('Project .env.local context changed during capture.');
|
|
88
|
+
}
|
|
89
|
+
const env = parseEnv(buffer.subarray(0, length));
|
|
90
|
+
return Object.fromEntries(['EAI_PROFILE', 'BASE_URL_PUBLIC_API', 'ROUTING_BOOTSTRAP_PUBLIC_API_URL']
|
|
91
|
+
.filter((key) => env[key] !== undefined).map((key) => [key, env[key]]));
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
closeSync(descriptor);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function commandPath(command) {
|
|
98
|
+
const path = [];
|
|
99
|
+
for (let current = command; current?.parent; current = current.parent)
|
|
100
|
+
path.unshift(current.name());
|
|
101
|
+
return path.length ? path : [command.name()];
|
|
102
|
+
}
|
|
103
|
+
function isLocalProfileDiscovery(command, path) {
|
|
104
|
+
const options = command.optsWithGlobals();
|
|
105
|
+
return ['update', 'errors', 'agent', 'blocks', 'runtime', 'gofer', 'template', 'login', 'logout'].includes(path[0])
|
|
106
|
+
|| (path[0] === 'env' && path[1] === 'list')
|
|
107
|
+
|| (path[0] === 'types' && path[1] === 'validate')
|
|
108
|
+
|| (path.includes('source') && command.name() === 'validate')
|
|
109
|
+
|| (path[0] === 'start' && Boolean(options.check || options.isolationCheck || options.install || options.dryRun));
|
|
110
|
+
}
|
|
111
|
+
function normalizeProfileApi(value) {
|
|
112
|
+
const url = new URL(value.trim());
|
|
113
|
+
if (!['http:', 'https:'].includes(url.protocol) || url.username || url.password || url.search || url.hash) {
|
|
114
|
+
throw new Error('Project and profile PublicAPI endpoints must be HTTP(S) URLs without credentials, queries or fragments.');
|
|
115
|
+
}
|
|
116
|
+
return url.href.replace(/\/+$/, '');
|
|
117
|
+
}
|
|
118
|
+
/** INVARIANT: a selected profile must not send its tokens to a differently configured app runtime. */
|
|
119
|
+
async function assertProfileApiCoherence(profile, config, env) {
|
|
120
|
+
const endpoints = [env.BASE_URL_PUBLIC_API, env.ROUTING_BOOTSTRAP_PUBLIC_API_URL,
|
|
121
|
+
process.env.BASE_URL_PUBLIC_API, process.env.ROUTING_BOOTSTRAP_PUBLIC_API_URL]
|
|
122
|
+
.filter((value) => Boolean(value?.trim())).map(normalizeProfileApi);
|
|
123
|
+
if (config) {
|
|
124
|
+
const expected = normalizeProfileApi(config.publicApiUrl);
|
|
125
|
+
if (endpoints.some((endpoint) => endpoint !== expected)) {
|
|
126
|
+
throw new Error(`Selected profile "${profile}" does not match the project's PublicAPI configuration. Select the matching local profile, or align BASE_URL_PUBLIC_API and ROUTING_BOOTSTRAP_PUBLIC_API_URL in .env.local and your shell before continuing.`);
|
|
127
|
+
}
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
// Default production can route among supported production regions. Existing
|
|
131
|
+
// explicit local-stack/custom gateway contracts remain separate opt-ins.
|
|
132
|
+
const privateEaiEndpoint = endpoints.some((endpoint) => /^(?:dev-api\.au|test-api\.(?:au|ca|eu))\.myenterprise\.ai$/.test(new URL(endpoint).hostname));
|
|
133
|
+
if (privateEaiEndpoint) {
|
|
134
|
+
const { resolveAuthConfig, validateResolvedAuthConfig } = await import('./auth.js');
|
|
135
|
+
const auth = await resolveAuthConfig();
|
|
136
|
+
const productionAuthTarget = auth.tenantName === DEFAULT_PROD_AUTH_TENANT_NAME
|
|
137
|
+
&& auth.tenantId === DEFAULT_PROD_AUTH_TENANT_ID && auth.authScope === DEFAULT_PROD_AUTH_SCOPE;
|
|
138
|
+
if (auth.source !== 'runtime-env' || productionAuthTarget || validateResolvedAuthConfig(auth)) {
|
|
139
|
+
throw new Error('This project targets a private DEV/test PublicAPI, but the default profile uses production authentication. Select its locally configured --profile, set EAI_PROFILE in your shell or ignored app-root .env.local, or provide the complete explicit CLI auth configuration before continuing.');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/** Activate the command's app context once, before command handlers can read auth or APIs. */
|
|
144
|
+
export async function activateCommandProfile(command, environmentProfile = process.env.EAI_PROFILE, workingDirectory = process.cwd()) {
|
|
145
|
+
const path = commandPath(command);
|
|
146
|
+
const options = command.optsWithGlobals();
|
|
147
|
+
const target = path[0] === 'start' && typeof command.processedArgs[0] === 'string'
|
|
148
|
+
? resolve(workingDirectory, command.processedArgs[0])
|
|
149
|
+
: typeof options.projectDir === 'string' ? resolve(workingDirectory, options.projectDir) : workingDirectory;
|
|
150
|
+
// These commands do not operate on platform/auth context and must remain
|
|
151
|
+
// usable to inspect or repair a project with a broken selector.
|
|
152
|
+
const independent = ['update', 'errors', 'agent', 'blocks'].includes(path[0]);
|
|
153
|
+
const projectRoot = independent ? null : await findProjectRoot(target);
|
|
154
|
+
const env = projectRoot ? captureProjectProfileEnv(projectRoot) : {};
|
|
155
|
+
const profile = resolveCommandProfile(command, environmentProfile, env.EAI_PROFILE);
|
|
156
|
+
setActiveProfile(profile);
|
|
157
|
+
// Local cleanup and Azure CLI configuration do not consume PublicAPI auth.
|
|
158
|
+
if (path[0] === 'logout' || (path[0] === 'env' && ['pull', 'push'].includes(path[1])))
|
|
159
|
+
return;
|
|
160
|
+
const config = captureProfileConfig(profile); // A missing named profile never falls back to default tokens.
|
|
161
|
+
if (!isLocalProfileDiscovery(command, path))
|
|
162
|
+
await assertProfileApiCoherence(profile, config, env);
|
|
163
|
+
}
|
|
164
|
+
/** Revalidate the already selected profile before login's protected workspace discovery. */
|
|
165
|
+
export async function assertActiveProfileApiCoherence(projectRoot) {
|
|
166
|
+
const profile = getActiveProfile();
|
|
167
|
+
const config = captureProfileConfig(profile);
|
|
168
|
+
const env = projectRoot ? captureProjectProfileEnv(projectRoot) : {};
|
|
169
|
+
await assertProfileApiCoherence(profile, config, env);
|
|
38
170
|
}
|
|
39
171
|
// ── Paths ────────────────────────────────────────────────────────────────────
|
|
40
172
|
function getEaiDir() {
|
|
@@ -50,6 +182,7 @@ export function getConfigFilePath() {
|
|
|
50
182
|
* other → ~/.eai/tokens/{name}.json
|
|
51
183
|
*/
|
|
52
184
|
export function getProfileTokensFile(name) {
|
|
185
|
+
assertProfileName(name);
|
|
53
186
|
if (name === 'default') {
|
|
54
187
|
return join(getEaiDir(), 'tokens.json');
|
|
55
188
|
}
|
|
@@ -67,6 +200,7 @@ export async function loadProfileConfig(name) {
|
|
|
67
200
|
}
|
|
68
201
|
/** SECURITY: auth and managed gateway share one owner-controlled bounded snapshot until the command/profile changes. */
|
|
69
202
|
export function captureProfileConfig(name) {
|
|
203
|
+
assertProfileName(name);
|
|
70
204
|
if (name === 'default')
|
|
71
205
|
return null;
|
|
72
206
|
const configuredPath = getConfigFilePath();
|
|
@@ -211,6 +345,7 @@ function readProfileUpdate(path) {
|
|
|
211
345
|
}
|
|
212
346
|
/** SECURITY: config.json.lock is shared with other profile writers; contention fails without stale takeover. */
|
|
213
347
|
export async function saveProfileConfig(name, config) {
|
|
348
|
+
assertProfileName(name);
|
|
214
349
|
capturedProfiles.clear();
|
|
215
350
|
captureGeneration += 1;
|
|
216
351
|
if (!constants.O_NOFOLLOW && process.platform !== 'win32')
|
package/dist/lib/profile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/lib/profile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/lib/profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,8 @@ export interface CommandSchema {
|
|
|
8
8
|
description: string;
|
|
9
9
|
aliases: string[];
|
|
10
10
|
options: OptionSchema[];
|
|
11
|
+
/** An executable parent command, in addition to its subcommands. */
|
|
12
|
+
hasAction?: boolean;
|
|
11
13
|
subcommands?: CommandSchema[];
|
|
12
14
|
}
|
|
13
15
|
export interface OptionSchema {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-builder.d.ts","sourceRoot":"","sources":["../../src/lib/schema-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAGjD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAsBD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"schema-builder.d.ts","sourceRoot":"","sources":["../../src/lib/schema-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAGjD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAsBD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CA8ClE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAKxD"}
|
|
@@ -51,6 +51,11 @@ export function buildCommandSchema(command) {
|
|
|
51
51
|
// Recursively process subcommands
|
|
52
52
|
const subcommands = command.commands;
|
|
53
53
|
if (subcommands && subcommands.length > 0) {
|
|
54
|
+
// Commander does not expose an action-handler getter. Keep this introspection
|
|
55
|
+
// bounded, and never invoke handlers while describing the command tree.
|
|
56
|
+
if (typeof command._actionHandler === 'function') {
|
|
57
|
+
schema.hasAction = true;
|
|
58
|
+
}
|
|
54
59
|
schema.subcommands = subcommands
|
|
55
60
|
.filter(cmd => !cmd.name().includes('help')) // Exclude help commands
|
|
56
61
|
.map(cmd => buildCommandSchema(cmd));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-builder.js","sourceRoot":"","sources":["../../src/lib/schema-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-builder.js","sourceRoot":"","sources":["../../src/lib/schema-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAoBjD;;GAEG;AACH,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAE3B,6CAA6C;IAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,sCAAsC;IACtC,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,kCAAkC;IAClC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAE1C,MAAM,OAAO,GAAmB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACvF,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,MAAM,GAAiB;YAC3B,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI;YACJ,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B,CAAC;QAEF,+BAA+B;QAC/B,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC;QACpC,CAAC;QAED,6BAA6B;QAC7B,IAAI,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACtC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC;QACjC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAkB;QAC5B,OAAO,EAAE,IAAI;QACb,WAAW;QACX,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;QAC1B,OAAO;KACR,CAAC;IAEF,kCAAkC;IAClC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IACrC,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,8EAA8E;QAC9E,wEAAwE;QACxE,IAAI,OAAQ,OAAkD,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;YAC7F,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,MAAM,CAAC,WAAW,GAAG,WAAW;aAC7B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,wBAAwB;aACrE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO;QACL,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC9B,UAAU,EAAE,aAAa,EAAE;KAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -7,8 +7,8 @@ export interface SupportErrorContext {
|
|
|
7
7
|
readonly reasonCode?: string;
|
|
8
8
|
readonly recordedAt: string;
|
|
9
9
|
}
|
|
10
|
-
/**
|
|
11
|
-
export declare const
|
|
10
|
+
/** Help offer for the person on every failing exit (text stderr); AI harnesses never act on it. */
|
|
11
|
+
export declare const SUPPORT_HELP = "Need help? Run eai support, or ask your AI assistant to get help. Nothing is sent without your approval.";
|
|
12
12
|
/** Keep only command names, because positional arguments and flags may contain credentials. */
|
|
13
13
|
export declare function setSupportCommand(command: string): void;
|
|
14
14
|
/** Keeps failures separate by profile without exposing the profile name in the cache filename. */
|
|
@@ -19,7 +19,8 @@ export declare function recordSupportError(input: GuidanceLookupInput): void;
|
|
|
19
19
|
export declare function recordSupportJsonError(value: unknown): void;
|
|
20
20
|
/**
|
|
21
21
|
* Installs tracking once per process, including immediate process.exit() failures.
|
|
22
|
-
* Nonzero exits atomically save private, profile-scoped context; support/errors commands preserve the original failure
|
|
22
|
+
* Nonzero exits atomically save private, profile-scoped context; support/errors commands preserve the original failure
|
|
23
|
+
* while text failures still print the person-facing help offer.
|
|
23
24
|
*/
|
|
24
25
|
export declare function installSupportErrorTracking(): void;
|
|
25
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"support-context.d.ts","sourceRoot":"","sources":["../../src/lib/support-context.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAIrE,qGAAqG;AACrG,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAID,
|
|
1
|
+
{"version":3,"file":"support-context.d.ts","sourceRoot":"","sources":["../../src/lib/support-context.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAIrE,qGAAqG;AACrG,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAID,mGAAmG;AACnG,eAAO,MAAM,YAAY,6GAA6G,CAAC;AAYvI,+FAA+F;AAC/F,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIvD;AAED,kGAAkG;AAClG,wBAAgB,qBAAqB,CAAC,OAAO,SAAqB,GAAG,MAAM,CAG1E;AAED,kGAAkG;AAClG,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAuBnE;AAQD,wIAAwI;AACxI,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAgB3D;AA2BD;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CA2ClD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,mBAAmB,GAAG,IAAI,CA8B/D"}
|
|
@@ -8,8 +8,8 @@ import { getActiveProfile } from './profile.js';
|
|
|
8
8
|
import { isSupportSensitiveKey, redactSupportText } from './support-redaction.js';
|
|
9
9
|
const MAX_STDERR_LENGTH = 32768;
|
|
10
10
|
const MAX_CONTEXT_BYTES = 16384;
|
|
11
|
-
/**
|
|
12
|
-
export const
|
|
11
|
+
/** Help offer for the person on every failing exit (text stderr); AI harnesses never act on it. */
|
|
12
|
+
export const SUPPORT_HELP = 'Need help? Run eai support, or ask your AI assistant to get help. Nothing is sent without your approval.';
|
|
13
13
|
let commandPath = 'eai';
|
|
14
14
|
let latestError = {};
|
|
15
15
|
let trackingInstalled = false;
|
|
@@ -101,7 +101,8 @@ function persistSupportContext(exitCode) {
|
|
|
101
101
|
}
|
|
102
102
|
/**
|
|
103
103
|
* Installs tracking once per process, including immediate process.exit() failures.
|
|
104
|
-
* Nonzero exits atomically save private, profile-scoped context; support/errors commands preserve the original failure
|
|
104
|
+
* Nonzero exits atomically save private, profile-scoped context; support/errors commands preserve the original failure
|
|
105
|
+
* while text failures still print the person-facing help offer.
|
|
105
106
|
*/
|
|
106
107
|
export function installSupportErrorTracking() {
|
|
107
108
|
if (trackingInstalled)
|
|
@@ -122,9 +123,7 @@ export function installSupportErrorTracking() {
|
|
|
122
123
|
try {
|
|
123
124
|
const payload = JSON.parse(stderrText);
|
|
124
125
|
recordSupportJsonError(payload);
|
|
125
|
-
|
|
126
|
-
hasStructuredStderrError = Boolean(record?.error)
|
|
127
|
-
|| (typeof record?.suggestion === 'string' && record.suggestion.includes(SUPPORT_SUGGESTION));
|
|
126
|
+
hasStructuredStderrError = Boolean(asRecord(payload)?.error);
|
|
128
127
|
}
|
|
129
128
|
catch {
|
|
130
129
|
// stderr may contain partial JSON or plain diagnostic text.
|
|
@@ -139,16 +138,15 @@ export function installSupportErrorTracking() {
|
|
|
139
138
|
process.on('exit', (exitCode) => {
|
|
140
139
|
if (exitCode === 0)
|
|
141
140
|
return;
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
try {
|
|
142
|
+
if (!shouldKeepPreviousError())
|
|
144
143
|
persistSupportContext(exitCode);
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
Reflect.apply(originalWrite, process.stderr, ['Could not save the previous error for eai support.\n']);
|
|
149
147
|
}
|
|
150
148
|
if (!hasStructuredStderrError) {
|
|
151
|
-
Reflect.apply(originalWrite, process.stderr, [`${
|
|
149
|
+
Reflect.apply(originalWrite, process.stderr, [`${SUPPORT_HELP}\n`]);
|
|
152
150
|
}
|
|
153
151
|
});
|
|
154
152
|
}
|