@enterpriseai/cli 3.19.3 → 3.19.4

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.
Files changed (79) hide show
  1. package/dist/commands/chat.d.ts.map +1 -1
  2. package/dist/commands/chat.js +116 -35
  3. package/dist/commands/chat.js.map +1 -1
  4. package/dist/commands/eai-managed-source-move.js +2 -2
  5. package/dist/commands/eai-managed-source-move.js.map +1 -1
  6. package/dist/commands/env.js +15 -2
  7. package/dist/commands/env.js.map +1 -1
  8. package/dist/commands/gofer.js +8 -1
  9. package/dist/commands/gofer.js.map +1 -1
  10. package/dist/commands/init.d.ts +2 -0
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +155 -8
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/login.d.ts.map +1 -1
  15. package/dist/commands/login.js +6 -2
  16. package/dist/commands/login.js.map +1 -1
  17. package/dist/commands/provision.d.ts.map +1 -1
  18. package/dist/commands/provision.js +25 -8
  19. package/dist/commands/provision.js.map +1 -1
  20. package/dist/commands/publicapi.d.ts.map +1 -1
  21. package/dist/commands/publicapi.js +14 -2
  22. package/dist/commands/publicapi.js.map +1 -1
  23. package/dist/commands/resources.d.ts.map +1 -1
  24. package/dist/commands/resources.js +41 -20
  25. package/dist/commands/resources.js.map +1 -1
  26. package/dist/commands/tenant.js +39 -3
  27. package/dist/commands/tenant.js.map +1 -1
  28. package/dist/commands/types.d.ts +7 -0
  29. package/dist/commands/types.d.ts.map +1 -1
  30. package/dist/commands/types.js +118 -24
  31. package/dist/commands/types.js.map +1 -1
  32. package/dist/commands/verify.d.ts.map +1 -1
  33. package/dist/commands/verify.js +89 -44
  34. package/dist/commands/verify.js.map +1 -1
  35. package/dist/commands/vertical.d.ts.map +1 -1
  36. package/dist/commands/vertical.js +163 -15
  37. package/dist/commands/vertical.js.map +1 -1
  38. package/dist/index.js +22 -8
  39. package/dist/index.js.map +1 -1
  40. package/dist/lib/api.d.ts +21 -2
  41. package/dist/lib/api.d.ts.map +1 -1
  42. package/dist/lib/api.js +135 -34
  43. package/dist/lib/api.js.map +1 -1
  44. package/dist/lib/cloud-env.d.ts +1 -0
  45. package/dist/lib/cloud-env.d.ts.map +1 -1
  46. package/dist/lib/cloud-env.js +28 -15
  47. package/dist/lib/cloud-env.js.map +1 -1
  48. package/dist/lib/config.d.ts +4 -2
  49. package/dist/lib/config.d.ts.map +1 -1
  50. package/dist/lib/config.js +5 -1
  51. package/dist/lib/config.js.map +1 -1
  52. package/dist/lib/eai-managed-source-client-types.d.ts +3 -0
  53. package/dist/lib/eai-managed-source-client-types.d.ts.map +1 -1
  54. package/dist/lib/object-type-export-filesystem.d.ts +13 -0
  55. package/dist/lib/object-type-export-filesystem.d.ts.map +1 -0
  56. package/dist/lib/object-type-export-filesystem.js +112 -0
  57. package/dist/lib/object-type-export-filesystem.js.map +1 -0
  58. package/dist/lib/object-type-export.d.ts +13 -0
  59. package/dist/lib/object-type-export.d.ts.map +1 -0
  60. package/dist/lib/object-type-export.js +173 -0
  61. package/dist/lib/object-type-export.js.map +1 -0
  62. package/dist/lib/output.d.ts.map +1 -1
  63. package/dist/lib/output.js +21 -1
  64. package/dist/lib/output.js.map +1 -1
  65. package/dist/lib/platform-diagnostics.d.ts +21 -0
  66. package/dist/lib/platform-diagnostics.d.ts.map +1 -0
  67. package/dist/lib/platform-diagnostics.js +50 -0
  68. package/dist/lib/platform-diagnostics.js.map +1 -0
  69. package/dist/lib/profile.d.ts +7 -2
  70. package/dist/lib/profile.d.ts.map +1 -1
  71. package/dist/lib/profile.js +139 -4
  72. package/dist/lib/profile.js.map +1 -1
  73. package/dist/lib/schema-builder.d.ts +2 -0
  74. package/dist/lib/schema-builder.d.ts.map +1 -1
  75. package/dist/lib/schema-builder.js +5 -0
  76. package/dist/lib/schema-builder.js.map +1 -1
  77. package/package.json +2 -2
  78. package/resources/deploy/eai-app-template/producer-pin.json +4 -4
  79. package/resources/linked-sources.json +2 -2
@@ -0,0 +1,112 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { constants } from 'node:fs';
3
+ import { link, lstat, open, rename, unlink } from 'node:fs/promises';
4
+ import { dirname, join, resolve } from 'node:path';
5
+ import { assertDirectoryIdentities, assertOpenedRegularTarget, assertRegularTarget, managedFileOpenFlags, snapshotNoLinkDirectoryPath, } from './eai-managed-deploy-filesystem.js';
6
+ function sameSnapshot(current, expected) {
7
+ return current.dev === expected.dev && current.ino === expected.ino
8
+ && current.size === expected.size && current.mtimeMs === expected.mtimeMs
9
+ && current.ctimeMs === expected.ctimeMs && current.mode === expected.mode;
10
+ }
11
+ /** Windows lacks POSIX open flags; other platforms retain the strict managed policy. */
12
+ export function objectTypeExportOpenFlags(capabilities = constants, platform = process.platform) {
13
+ if (platform !== 'win32')
14
+ return managedFileOpenFlags(capabilities);
15
+ return (capabilities.O_NOFOLLOW || 0) | (capabilities.O_NONBLOCK || 0);
16
+ }
17
+ /** Publish a portable generated export while checking its parent and exact file identities.
18
+ * Windows mode bits are advisory. These path checks detect observed namespace
19
+ * changes; they do not isolate an arbitrary concurrent writer with the same permissions.
20
+ */
21
+ export async function writeObjectTypeExportFile(path, content, binding) {
22
+ const target = resolve(path);
23
+ const platform = process.platform;
24
+ const flags = objectTypeExportOpenFlags(constants, platform);
25
+ const parents = await snapshotNoLinkDirectoryPath(dirname(target));
26
+ const assertParents = async () => {
27
+ await assertDirectoryIdentities(parents);
28
+ await binding.assert();
29
+ };
30
+ await assertParents();
31
+ const before = await assertRegularTarget(target);
32
+ const stagePath = join(dirname(target), `.eai-types-pull-${randomUUID()}.tmp`);
33
+ let existing;
34
+ let stage;
35
+ let stageIdentity;
36
+ let stagePresent = false;
37
+ const assertTarget = async () => {
38
+ if (!before || !existing) {
39
+ if (await assertRegularTarget(target))
40
+ throw new Error('Generated export target appeared after inspection.');
41
+ return;
42
+ }
43
+ await assertOpenedRegularTarget(target, existing);
44
+ if (!sameSnapshot(await existing.stat(), before))
45
+ throw new Error('Generated export target changed after inspection.');
46
+ };
47
+ const unlinkOwnStage = async () => {
48
+ if (!stage || !stageIdentity || !stagePresent)
49
+ return;
50
+ await assertParents();
51
+ const [opened, leaf] = await Promise.all([stage.stat(), lstat(stagePath)]);
52
+ if (!opened.isFile() || !leaf.isFile() || leaf.isSymbolicLink()
53
+ || opened.dev !== stageIdentity.dev || opened.ino !== stageIdentity.ino
54
+ || leaf.dev !== opened.dev || leaf.ino !== opened.ino
55
+ || leaf.nlink !== opened.nlink || ![1, 2].includes(opened.nlink)) {
56
+ throw new Error('Generated export staging file changed before cleanup.');
57
+ }
58
+ await unlink(stagePath);
59
+ stagePresent = false;
60
+ };
61
+ try {
62
+ if (before)
63
+ existing = await open(target, constants.O_RDONLY | flags);
64
+ await assertParents();
65
+ await assertTarget();
66
+ stage = await open(stagePath, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | flags, 0o600);
67
+ stagePresent = true;
68
+ stageIdentity = await stage.stat();
69
+ await assertParents();
70
+ await assertOpenedRegularTarget(stagePath, stage);
71
+ await assertTarget();
72
+ await stage.writeFile(content, 'utf8');
73
+ await stage.sync();
74
+ await assertParents();
75
+ await assertOpenedRegularTarget(stagePath, stage);
76
+ if (platform !== 'win32') {
77
+ await stage.chmod(0o644);
78
+ await stage.sync();
79
+ }
80
+ const written = await stage.stat();
81
+ if (written.dev !== stageIdentity.dev || written.ino !== stageIdentity.ino
82
+ || written.size !== Buffer.byteLength(content)
83
+ || (platform !== 'win32' && (written.mode & 0o777) !== 0o644)) {
84
+ throw new Error('Generated export staging file changed before publication.');
85
+ }
86
+ await assertTarget();
87
+ await assertParents();
88
+ if (before) {
89
+ await rename(stagePath, target);
90
+ stagePresent = false;
91
+ }
92
+ else {
93
+ // Preserve a target that appeared after the last absence check.
94
+ await link(stagePath, target);
95
+ await unlinkOwnStage();
96
+ }
97
+ await assertParents();
98
+ await assertOpenedRegularTarget(target, stage);
99
+ const accepted = await stage.stat();
100
+ if (accepted.size !== written.size || accepted.mtimeMs !== written.mtimeMs
101
+ || (platform !== 'win32' && (accepted.mode & 0o777) !== 0o644)) {
102
+ throw new Error('Generated export changed during publication.');
103
+ }
104
+ }
105
+ finally {
106
+ // A replaced namespace or unrelated leaf is never ours to unlink.
107
+ await unlinkOwnStage().catch(() => undefined);
108
+ await stage?.close().catch(() => undefined);
109
+ await existing?.close().catch(() => undefined);
110
+ }
111
+ }
112
+ //# sourceMappingURL=object-type-export-filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-type-export-filesystem.js","sourceRoot":"","sources":["../../src/lib/object-type-export-filesystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** Complete, bounded and lossless exports of the published Object Type read contract. */
2
+ import { type PlatformAPIClient } from './api.js';
3
+ /** Export bounds: pages per scan, aggregate response bytes and elapsed milliseconds shared by both scans. */
4
+ export interface ObjectTypeExportLimits {
5
+ readonly maxPages: number;
6
+ readonly maxBytes: number;
7
+ readonly timeoutMs: number;
8
+ }
9
+ /** Frozen maximum export budgets; callers may reduce each bound but cannot raise it. */
10
+ export declare const OBJECT_TYPE_EXPORT_LIMITS: Readonly<ObjectTypeExportLimits>;
11
+ /** Two complete scans detect observed drift; this API does not issue a transactional snapshot token. */
12
+ export declare function readConsistentObjectTypes(client: Pick<PlatformAPIClient, 'getPublishedObjectTypes'>, tenantId: string, requestedLimits?: Partial<ObjectTypeExportLimits>): Promise<Record<string, unknown>[]>;
13
+ //# sourceMappingURL=object-type-export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-type-export.d.ts","sourceRoot":"","sources":["../../src/lib/object-type-export.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAA+B,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG/E,6GAA6G;AAC7G,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,wFAAwF;AACxF,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,sBAAsB,CAIrE,CAAC;AA6DH,wGAAwG;AACxG,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,EAC1D,QAAQ,EAAE,MAAM,EAChB,eAAe,GAAE,OAAO,CAAC,sBAAsB,CAAM,GACpD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAwFpC"}
@@ -0,0 +1,173 @@
1
+ /** Complete, bounded and lossless exports of the published Object Type read contract. */
2
+ import { awaitManagedRequestDeadline } from './api.js';
3
+ import { isRecord } from './utils.js';
4
+ /** Frozen maximum export budgets; callers may reduce each bound but cannot raise it. */
5
+ export const OBJECT_TYPE_EXPORT_LIMITS = Object.freeze({
6
+ maxPages: 1_000,
7
+ maxBytes: 64 * 1024 * 1024,
8
+ timeoutMs: 120_000,
9
+ });
10
+ class ExportBoundError extends Error {
11
+ }
12
+ function invalidPage() {
13
+ throw new Error('Object Type pull returned invalid or incomplete pagination metadata. Existing output is preserved.');
14
+ }
15
+ function parsePage(value, page, tenantId) {
16
+ if (!isRecord(value) || !Array.isArray(value.docs))
17
+ invalidPage();
18
+ const totalDocs = value.totalDocs;
19
+ const totalPages = value.totalPages;
20
+ if (typeof totalDocs !== 'number' || !Number.isSafeInteger(totalDocs) || totalDocs < 0
21
+ || typeof totalPages !== 'number' || !Number.isSafeInteger(totalPages)
22
+ || value.limit !== 100 || value.page !== page || value.pagingCounter !== (page - 1) * 100 + 1)
23
+ invalidPage();
24
+ const empty = totalDocs === 0;
25
+ if (empty ? page !== 1 || ![0, 1].includes(totalPages) : totalPages !== Math.ceil(totalDocs / 100) || page > totalPages)
26
+ invalidPage();
27
+ const hasNextPage = !empty && page < totalPages;
28
+ if (value.hasPrevPage !== (page > 1) || value.hasNextPage !== hasNextPage
29
+ || value.prevPage !== (page > 1 ? page - 1 : null)
30
+ || value.nextPage !== (hasNextPage ? page + 1 : null)
31
+ || value.docs.length !== Math.min(100, Math.max(0, totalDocs - (page - 1) * 100)))
32
+ invalidPage();
33
+ const docs = [];
34
+ for (const doc of value.docs) {
35
+ if (!isRecord(doc) || ['id', 'name', 'slug'].some(key => typeof doc[key] !== 'string' || !doc[key].trim())
36
+ || ['properties', 'linkTypes', 'actions'].some(key => doc[key] !== undefined && doc[key] !== null && !Array.isArray(doc[key]))) {
37
+ throw new Error('Object Type pull returned an invalid Object Type read document. Existing output is preserved.');
38
+ }
39
+ for (const key of ['tenant', 'tenantId', 'tenant_id']) {
40
+ if (!Object.hasOwn(doc, key))
41
+ continue; // Legacy read documents can omit scope metadata.
42
+ const marker = doc[key];
43
+ const scope = key === 'tenant' && isRecord(marker) ? marker.id : marker;
44
+ if (typeof scope !== 'string' || !scope.trim()) {
45
+ throw new Error('Object Type pull returned a malformed workspace marker. Existing output is preserved.');
46
+ }
47
+ if (scope !== tenantId) {
48
+ throw new Error('Object Type pull returned a document outside the selected workspace. Existing output is preserved.');
49
+ }
50
+ }
51
+ docs.push(doc);
52
+ }
53
+ return { docs, totalDocs, totalPages };
54
+ }
55
+ function canonicalDocuments(docs) {
56
+ try {
57
+ return JSON.stringify(docs, (_key, value) => isRecord(value)
58
+ ? Object.fromEntries(Object.entries(value).sort(([left], [right]) => left.localeCompare(right)))
59
+ : value);
60
+ }
61
+ catch {
62
+ throw new Error('Object Type pull could not compare the complete export. Existing output is preserved.');
63
+ }
64
+ }
65
+ /** Two complete scans detect observed drift; this API does not issue a transactional snapshot token. */
66
+ export async function readConsistentObjectTypes(client, tenantId, requestedLimits = {}) {
67
+ const limits = { ...OBJECT_TYPE_EXPORT_LIMITS, ...requestedLimits };
68
+ for (const key of ['maxPages', 'maxBytes', 'timeoutMs']) {
69
+ if (!Number.isSafeInteger(limits[key]) || limits[key] < 1 || limits[key] > OBJECT_TYPE_EXPORT_LIMITS[key]) {
70
+ throw new Error('Object Type pull limits must be positive and cannot exceed the export bounds.');
71
+ }
72
+ }
73
+ const start = performance.now();
74
+ const signal = AbortSignal.timeout(limits.timeoutMs);
75
+ let bytesRead = 0;
76
+ const remaining = () => {
77
+ const time = Math.floor(limits.timeoutMs - (performance.now() - start));
78
+ if (signal.aborted || time < 1)
79
+ throw new ExportBoundError('Object Type pull exceeded its deadline. Existing output is preserved.');
80
+ return time;
81
+ };
82
+ const readBody = async (response) => {
83
+ if (!response.body)
84
+ throw new Error('Object Type pull returned an invalid JSON response.');
85
+ const declared = response.headers.get('content-length');
86
+ if (declared && /^\d+$/.test(declared) && Number(declared) > limits.maxBytes - bytesRead) {
87
+ void response.body.cancel().catch(() => { });
88
+ throw new ExportBoundError('Object Type pull exceeded its response size bound. Existing output is preserved.');
89
+ }
90
+ const reader = response.body.getReader();
91
+ const chunks = [];
92
+ let complete = false;
93
+ try {
94
+ for (;;) {
95
+ remaining();
96
+ const chunk = await awaitManagedRequestDeadline(signal, reader.read());
97
+ if (chunk.done) {
98
+ complete = true;
99
+ break;
100
+ }
101
+ bytesRead += chunk.value.byteLength;
102
+ if (bytesRead > limits.maxBytes)
103
+ throw new ExportBoundError('Object Type pull exceeded its response size bound. Existing output is preserved.');
104
+ chunks.push(chunk.value);
105
+ }
106
+ }
107
+ catch (error) {
108
+ // eslint-disable-next-line preserve-caught-error -- response-reader errors may contain credentials; retain no upstream cause.
109
+ if (signal.aborted)
110
+ throw new Error('Object Type pull exceeded its deadline. Existing output is preserved.');
111
+ if (error instanceof ExportBoundError)
112
+ throw error;
113
+ // eslint-disable-next-line preserve-caught-error -- deliberately replace untrusted reader content with static guidance.
114
+ throw new Error('Object Type pull could not read the complete response. Existing output is preserved.');
115
+ }
116
+ finally {
117
+ if (!complete)
118
+ void reader.cancel().catch(() => { });
119
+ reader.releaseLock();
120
+ }
121
+ try {
122
+ return JSON.parse(Buffer.concat(chunks).toString('utf8'));
123
+ }
124
+ catch {
125
+ throw new Error('Object Type pull returned an invalid JSON response.');
126
+ }
127
+ };
128
+ const scan = async () => {
129
+ const docs = [];
130
+ const ids = new Set();
131
+ let expected;
132
+ for (let page = 1; page <= (expected ? Math.max(1, expected.totalPages) : 1); page += 1) {
133
+ if (page > limits.maxPages)
134
+ throw new Error('Object Type pull exceeded its page bound. Existing output is preserved.');
135
+ let response;
136
+ try {
137
+ response = await awaitManagedRequestDeadline(signal, client.getPublishedObjectTypes({ limit: 100, sort: 'id', page, timeoutMs: remaining() }));
138
+ }
139
+ catch {
140
+ if (signal.aborted)
141
+ throw new Error('Object Type pull exceeded its deadline. Existing output is preserved.');
142
+ throw new Error('Object Type pull request failed.');
143
+ }
144
+ if (!response.ok) {
145
+ if (response.body)
146
+ void response.body.cancel().catch(() => { });
147
+ throw new Error(`Object Type pull failed (HTTP ${response.status}).`);
148
+ }
149
+ const result = parsePage(await readBody(response), page, tenantId);
150
+ if (result.totalPages > limits.maxPages)
151
+ throw new Error('Object Type pull exceeded its page bound. Existing output is preserved.');
152
+ if (expected && (result.totalDocs !== expected.totalDocs || result.totalPages !== expected.totalPages))
153
+ invalidPage();
154
+ expected ??= result;
155
+ for (const doc of result.docs) {
156
+ const id = doc.id;
157
+ if (ids.has(id))
158
+ throw new Error('Object Type pull returned repeated document IDs. Existing output is preserved.');
159
+ ids.add(id);
160
+ docs.push(doc);
161
+ }
162
+ }
163
+ return docs;
164
+ };
165
+ const first = await scan();
166
+ const second = await scan();
167
+ if (canonicalDocuments(first) !== canonicalDocuments(second)) {
168
+ throw new Error('Object Types changed during pull. Run the complete export again; existing output is preserved.');
169
+ }
170
+ remaining();
171
+ return first;
172
+ }
173
+ //# sourceMappingURL=object-type-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-type-export.js","sourceRoot":"","sources":["../../src/lib/object-type-export.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEpD;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAaD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAelD;AAaD,eAAO,MAAM,OAAO;;;;;;;;;;;CAWV,CAAC;AAEX,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOzC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAO/C;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOvC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOtC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOtC;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAO5C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOzC;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOrC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAWzD;AAED,wBAAgB,KAAK,IAAI,IAAI,CAE5B;AAED,yGAAyG;AACzG,wBAAgB,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAGxC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAQlF"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEpD;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAaD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMvD;AAgBD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAgBlD;AAeD,eAAO,MAAM,OAAO;;;;;;;;;;;CAWV,CAAC;AAEX,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOzC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAO/C;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOvC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOtC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOtC;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAO5C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOzC;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOrC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAWzD;AAED,wBAAgB,KAAK,IAAI,IAAI,CAE5B;AAED,yGAAyG;AACzG,wBAAgB,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAGxC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAQlF"}
@@ -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] = SENSITIVE_KEY_PATTERN.test(key) ? '[redacted]' : redactSensitiveDeep(item);
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
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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"}
@@ -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
- /** Resolves the root profile option for nested commands while preserving plain-command production defaults. */
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;AAIvD,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,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAInD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,mFAAmF;AACnF,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,+GAA+G;AAC/G,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,EACzC,kBAAkB,qBAA0B,GAC3C,MAAM,CAMR;AAQD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKzD;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,CAiFvE;AAqDD,gHAAgH;AAChH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAwE1F;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"}
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"}