@nexusclawhq/cli 0.3.49 → 0.3.51
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/CHANGELOG.md +8 -0
- package/dist/build-info.json +4 -4
- package/dist/nexus-cli/node_modules/@nexusclaw/code-authoring/dist/package/workforce-bundle-inventory.js +34 -2
- package/dist/nexus-cli/node_modules/@nexusclaw/code-authoring/dist/package/workforce-bundle-inventory.js.map +1 -1
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/cli-contract.types.d.ts +1 -1
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/employee-eval-cases.types.d.ts +96 -0
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/employee-eval-cases.types.js +125 -0
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/employee-eval-cases.types.js.map +1 -0
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/index.d.ts +3 -0
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/index.js +3 -0
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/index.js.map +1 -1
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/training-evidence-export.constants.d.ts +9 -0
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/training-evidence-export.constants.js +13 -0
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/training-evidence-export.constants.js.map +1 -0
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/training-evidence-export.types.d.ts +285 -0
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/training-evidence-export.types.js +204 -0
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/training-evidence-export.types.js.map +1 -0
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/workforce-bundle.types.d.ts +6 -2
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/employee-package/index.d.ts +1 -1
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/employee-package/index.js.map +1 -1
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/employee-package/types.d.ts +12 -0
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/employee-package/validator.js +31 -0
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/employee-package/validator.js.map +1 -1
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/locales/en-US.d.ts +668 -1
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/locales/en-US.js +644 -7
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/locales/en-US.js.map +1 -1
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/locales/index.d.ts +1360 -2
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/locales/zh-CN.d.ts +692 -1
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/locales/zh-CN.js +963 -302
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/locales/zh-CN.js.map +1 -1
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/platform-admin-route-readiness/index.js +12 -0
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/platform-admin-route-readiness/index.js.map +1 -1
- package/dist/nexus-cli/src/commands/ai/help.test.js +5 -4
- package/dist/nexus-cli/src/commands/ai/help.test.js.map +1 -1
- package/dist/nexus-cli/src/commands/employee/deploy.d.ts +21 -0
- package/dist/nexus-cli/src/commands/employee/deploy.e2e.test.js +56 -320
- package/dist/nexus-cli/src/commands/employee/deploy.e2e.test.js.map +1 -1
- package/dist/nexus-cli/src/commands/employee/deploy.js +101 -0
- package/dist/nexus-cli/src/commands/employee/deploy.js.map +1 -1
- package/dist/nexus-cli/src/commands/employee/index.js +2 -0
- package/dist/nexus-cli/src/commands/employee/index.js.map +1 -1
- package/dist/nexus-cli/src/commands/employee/training-evidence.d.ts +2 -0
- package/dist/nexus-cli/src/commands/employee/training-evidence.js +43 -0
- package/dist/nexus-cli/src/commands/employee/training-evidence.js.map +1 -0
- package/dist/nexus-cli/src/commands/org/login-web.js +23 -9
- package/dist/nexus-cli/src/commands/org/login-web.js.map +1 -1
- package/dist/nexus-cli/src/commands/workforce/cognition.js +28 -1
- package/dist/nexus-cli/src/commands/workforce/cognition.js.map +1 -1
- package/dist/nexus-cli/src/commands/workforce/task.js +6 -0
- package/dist/nexus-cli/src/commands/workforce/task.js.map +1 -1
- package/dist/nexus-cli/src/contracts/command-contract-coverage-baseline.json +12 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.generated.test.js +6 -7
- package/dist/nexus-cli/src/contracts/command-contract-matrix.generated.test.js.map +1 -1
- package/dist/nexus-cli/src/contracts/command-contract-matrix.scenarios.js +2 -2
- package/dist/nexus-cli/src/contracts/command-contract.guard.js +5 -0
- package/dist/nexus-cli/src/contracts/command-contract.guard.js.map +1 -1
- package/dist/nexus-cli/src/contracts/command-contract.registry.js +26 -0
- package/dist/nexus-cli/src/contracts/command-contract.registry.js.map +1 -1
- package/dist/nexus-cli/src/contracts/command-inventory.test.js +4 -4
- package/dist/nexus-cli/src/contracts/command-order.js +1 -0
- package/dist/nexus-cli/src/contracts/command-order.js.map +1 -1
- package/dist/nexus-cli/src/contracts/command-policy.exporter.test.js +2 -2
- package/dist/nexus-cli/src/contracts/command-policy.registry.js +1 -1
- package/dist/nexus-cli/src/contracts/command-policy.registry.js.map +1 -1
- package/dist/nexus-cli/src/contracts/command-policy.registry.test.js +5 -5
- package/dist/nexus-cli/src/contracts/command-policy.validator.test.js +3 -3
- package/dist/nexus-cli/src/contracts/contracts.test.js +17 -0
- package/dist/nexus-cli/src/contracts/contracts.test.js.map +1 -1
- package/dist/nexus-cli/src/contracts/workforce-contracts.js +1 -0
- package/dist/nexus-cli/src/contracts/workforce-contracts.js.map +1 -1
- package/dist/nexus-cli/src/services/api-client.d.ts +8 -0
- package/dist/nexus-cli/src/services/api-client.js +54 -0
- package/dist/nexus-cli/src/services/api-client.js.map +1 -1
- package/dist/nexus-cli/src/services/training-evidence-export.d.ts +15 -0
- package/dist/nexus-cli/src/services/training-evidence-export.js +94 -0
- package/dist/nexus-cli/src/services/training-evidence-export.js.map +1 -0
- package/dist/nexus-cli/src/services/training-evidence-export.test.d.ts +1 -0
- package/dist/nexus-cli/src/services/training-evidence-export.test.js +59 -0
- package/dist/nexus-cli/src/services/training-evidence-export.test.js.map +1 -0
- package/dist/nexus-cli/src/services/workforce-bundle-local.js +26 -4
- package/dist/nexus-cli/src/services/workforce-bundle-local.js.map +1 -1
- package/dist/nexus-cli/src/services/workforce-bundle-local.test.js +29 -0
- package/dist/nexus-cli/src/services/workforce-bundle-local.test.js.map +1 -1
- package/dist/nexus-cli/src/services/workforce-cognition-remote.d.ts +17 -0
- package/dist/nexus-cli/src/services/workforce-cognition-remote.js +16 -0
- package/dist/nexus-cli/src/services/workforce-cognition-remote.js.map +1 -1
- package/dist/nexus-cli/src/services/workforce-config-remote.contract.test.d.ts +1 -0
- package/dist/nexus-cli/src/services/workforce-config-remote.contract.test.js +41 -0
- package/dist/nexus-cli/src/services/workforce-config-remote.contract.test.js.map +1 -0
- package/dist/nexus-cli/src/services/workforce-config-remote.d.ts +10 -4
- package/dist/nexus-cli/src/services/workforce-config-remote.js +4 -4
- package/dist/nexus-cli/src/services/workforce-config-remote.js.map +1 -1
- package/dist/nexus-cli/src/services/workforce-conversation-remote.d.ts +5 -0
- package/dist/nexus-cli/src/services/workforce-conversation-remote.js +21 -2
- package/dist/nexus-cli/src/services/workforce-conversation-remote.js.map +1 -1
- package/dist/nexus-cli/src/services/workforce-conversation-remote.test.js +2 -0
- package/dist/nexus-cli/src/services/workforce-conversation-remote.test.js.map +1 -1
- package/dist/nexus-cli/src/services/workforce-test-remote.d.ts +1 -1
- package/dist/nexus-cli/src/services/workforce-test-remote.js +1 -1
- package/dist/nexus-cli/src/services/workforce-test-remote.test.js +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.exportTrainingEvidence = exportTrainingEvidence;
|
|
7
|
+
exports.writeTrainingEvidenceExportAtomically = writeTrainingEvidenceExportAtomically;
|
|
8
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const shared_1 = require("@nexusclaw/shared");
|
|
11
|
+
const api_client_1 = require("./api-client");
|
|
12
|
+
async function exportTrainingEvidence(options) {
|
|
13
|
+
const client = (0, api_client_1.createApiClient)(options.targetOrg);
|
|
14
|
+
const created = await client.graphql(`mutation CreateEmployeeTrainingEvidenceExport($input: CreateTrainingEvidenceExportInput!, $key: String!) {
|
|
15
|
+
createEmployeeTrainingEvidenceExport(input: $input, idempotencyKey: $key)
|
|
16
|
+
}`, { input: options.input, key: options.idempotencyKey });
|
|
17
|
+
const receipt = created.createEmployeeTrainingEvidenceExport;
|
|
18
|
+
if ((0, shared_1.validateEmployeeTrainingEvidenceExportReceipt)(receipt).length)
|
|
19
|
+
throw new Error('EMPLOYEE_TRAINING_EVIDENCE_RECEIPT_INVALID');
|
|
20
|
+
const downloaded = await client.graphql(`query DownloadEmployeeTrainingEvidenceExport($input: DownloadTrainingEvidenceExportInput!) {
|
|
21
|
+
downloadEmployeeTrainingEvidenceExport(input: $input)
|
|
22
|
+
}`, { input: { schemaVersion: 'nexusclaw.download-employee-training-evidence-export-input/v1',
|
|
23
|
+
targetWorkspaceId: options.input.targetWorkspaceId, exportId: receipt.exportId,
|
|
24
|
+
expectedAggregateDigest: receipt.aggregateDigest } });
|
|
25
|
+
writeTrainingEvidenceExportAtomically(options.outDir, downloaded.downloadEmployeeTrainingEvidenceExport);
|
|
26
|
+
return { receipt, aggregateDigest: receipt.aggregateDigest,
|
|
27
|
+
manifestDigest: receipt.manifestDigest,
|
|
28
|
+
paths: downloaded.downloadEmployeeTrainingEvidenceExport.artifacts.map((item) => item.path) };
|
|
29
|
+
}
|
|
30
|
+
function writeTrainingEvidenceExportAtomically(outDir, result, hooks = {}) {
|
|
31
|
+
const target = node_path_1.default.resolve(outDir);
|
|
32
|
+
if (node_fs_1.default.existsSync(target))
|
|
33
|
+
throw new Error('EMPLOYEE_TRAINING_EVIDENCE_EXPORT_WOULD_OVERWRITE');
|
|
34
|
+
const parent = node_path_1.default.dirname(target);
|
|
35
|
+
node_fs_1.default.mkdirSync(parent, { recursive: true });
|
|
36
|
+
const staging = node_fs_1.default.mkdtempSync(node_path_1.default.join(parent, `.${node_path_1.default.basename(target)}.tmp-`));
|
|
37
|
+
try {
|
|
38
|
+
const manifestBytes = Buffer.from(result.manifestBase64, 'base64');
|
|
39
|
+
const manifest = JSON.parse(manifestBytes.toString('utf8'));
|
|
40
|
+
if ((0, shared_1.validateEmployeeTrainingEvidenceExportReceipt)(result.receipt).length ||
|
|
41
|
+
(0, shared_1.validateEmployeeTrainingEvidenceExportManifest)(manifest).length ||
|
|
42
|
+
(0, shared_1.canonicalJsonDigest)(manifest) !== result.receipt.manifestDigest ||
|
|
43
|
+
manifest.aggregateDigest !== result.receipt.aggregateDigest) {
|
|
44
|
+
throw new Error('EMPLOYEE_TRAINING_EVIDENCE_EXPORT_DIGEST_MISMATCH');
|
|
45
|
+
}
|
|
46
|
+
if (result.artifacts.length !== manifest.entries.length)
|
|
47
|
+
throw new Error('EMPLOYEE_TRAINING_EVIDENCE_EXPORT_DIGEST_MISMATCH');
|
|
48
|
+
for (const entry of manifest.entries) {
|
|
49
|
+
const artifact = result.artifacts.find((item) => item.path === entry.path);
|
|
50
|
+
if (!artifact)
|
|
51
|
+
throw new Error('EMPLOYEE_TRAINING_EVIDENCE_EXPORT_DIGEST_MISMATCH');
|
|
52
|
+
const bytes = Buffer.from(artifact.artifactBase64, 'base64');
|
|
53
|
+
const value = JSON.parse(bytes.toString('utf8'));
|
|
54
|
+
if (bytes.byteLength !== entry.artifactSizeBytes || (0, shared_1.canonicalJsonDigest)(value) !== entry.artifactDigest ||
|
|
55
|
+
artifact.artifactDigest !== entry.artifactDigest || (0, shared_1.validateEmployeeEvalCases)(value).length) {
|
|
56
|
+
throw new Error('EMPLOYEE_TRAINING_EVIDENCE_EXPORT_DIGEST_MISMATCH');
|
|
57
|
+
}
|
|
58
|
+
write0600(staging, entry.path, bytes);
|
|
59
|
+
}
|
|
60
|
+
write0600(staging, 'training-evidence-export.json', Buffer.from((0, shared_1.canonicalJsonString)(manifest)));
|
|
61
|
+
fsyncDirectory(staging);
|
|
62
|
+
hooks.beforeRename?.();
|
|
63
|
+
node_fs_1.default.renameSync(staging, target);
|
|
64
|
+
fsyncDirectory(parent);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
node_fs_1.default.rmSync(staging, { recursive: true, force: true });
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function write0600(root, relative, bytes) {
|
|
72
|
+
const file = node_path_1.default.resolve(root, relative);
|
|
73
|
+
if (!file.startsWith(`${root}${node_path_1.default.sep}`))
|
|
74
|
+
throw new Error('EMPLOYEE_TRAINING_EVIDENCE_EXPORT_PATH_INVALID');
|
|
75
|
+
node_fs_1.default.mkdirSync(node_path_1.default.dirname(file), { recursive: true });
|
|
76
|
+
const fd = node_fs_1.default.openSync(file, 'wx', 0o600);
|
|
77
|
+
try {
|
|
78
|
+
node_fs_1.default.writeFileSync(fd, bytes);
|
|
79
|
+
node_fs_1.default.fsyncSync(fd);
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
node_fs_1.default.closeSync(fd);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function fsyncDirectory(directory) {
|
|
86
|
+
const fd = node_fs_1.default.openSync(directory, 'r');
|
|
87
|
+
try {
|
|
88
|
+
node_fs_1.default.fsyncSync(fd);
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
node_fs_1.default.closeSync(fd);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=training-evidence-export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"training-evidence-export.js","sourceRoot":"","sources":["../../../../src/services/training-evidence-export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const node_test_1 = __importDefault(require("node:test"));
|
|
11
|
+
const shared_1 = require("@nexusclaw/shared");
|
|
12
|
+
const training_evidence_export_1 = require("./training-evidence-export");
|
|
13
|
+
function fixture() {
|
|
14
|
+
const value = { schemaVersion: 'employee-eval-cases/v1', agentApiName: 'agent',
|
|
15
|
+
principalFixtures: [{ fixtureId: 'bound', base: 'bound_candidate_agent' }],
|
|
16
|
+
cases: [{ caseId: 'one', principalFixtureId: 'bound', clock: '2026-08-21T00:00:00.000Z',
|
|
17
|
+
input: 'hello', hostFixtures: { calls: [] }, modelCalls: [],
|
|
18
|
+
expect: { status: 'done', outputContent: 'hello', mutations: [] } }] };
|
|
19
|
+
const bytes = Buffer.from((0, shared_1.canonicalJsonString)(value));
|
|
20
|
+
const entries = [{ executionId: 'execution-1', path: 'cases/execution-1.employee-eval-cases.json',
|
|
21
|
+
artifactDigest: (0, shared_1.canonicalJsonDigest)(value), artifactSizeBytes: bytes.byteLength }];
|
|
22
|
+
const manifest = { schemaVersion: shared_1.TRAINING_EVIDENCE_EXPORT_MANIFEST_VERSION, agentApiName: 'agent', entries,
|
|
23
|
+
aggregateDigest: (0, shared_1.trainingEvidenceExportAggregateDigest)({ agentApiName: 'agent', entries }) };
|
|
24
|
+
const manifestBytes = Buffer.from((0, shared_1.canonicalJsonString)(manifest));
|
|
25
|
+
const receipt = { schemaVersion: shared_1.TRAINING_EVIDENCE_EXPORT_RECEIPT_VERSION, exportId: 'export-1', workspaceId: 'workspace-1',
|
|
26
|
+
agentApiName: 'agent', agentVersionId: 'version-1', releaseSetId: null, sourceExecutionIds: ['execution-1'],
|
|
27
|
+
sourceLineageDigest: `sha256:${'a'.repeat(64)}`, selectionDigest: `sha256:${'b'.repeat(64)}`,
|
|
28
|
+
redactionPolicyVersion: 'v1', projectionContractVersion: 'employee-eval-cases/v1',
|
|
29
|
+
manifestDigest: (0, shared_1.canonicalJsonDigest)(manifest), aggregateDigest: manifest.aggregateDigest,
|
|
30
|
+
artifactCount: 2, artifactSizeBytes: bytes.length + manifestBytes.length, artifactStatus: 'active',
|
|
31
|
+
createdBy: 'actor-1', createdAt: '2026-08-21T00:00:00.000Z', expiresAt: '2026-09-20T00:00:00.000Z' };
|
|
32
|
+
return { receipt, manifestBase64: manifestBytes.toString('base64'), artifacts: [{ path: entries[0].path,
|
|
33
|
+
artifactDigest: entries[0].artifactDigest, artifactBase64: bytes.toString('base64') }] };
|
|
34
|
+
}
|
|
35
|
+
(0, node_test_1.default)('writes a verified export atomically with mode 0600', () => {
|
|
36
|
+
const root = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'training-evidence-'));
|
|
37
|
+
const out = node_path_1.default.join(root, 'export');
|
|
38
|
+
(0, training_evidence_export_1.writeTrainingEvidenceExportAtomically)(out, fixture());
|
|
39
|
+
const file = node_path_1.default.join(out, 'cases/execution-1.employee-eval-cases.json');
|
|
40
|
+
strict_1.default.equal(node_fs_1.default.statSync(file).mode & 0o777, 0o600);
|
|
41
|
+
strict_1.default.ok(node_fs_1.default.existsSync(node_path_1.default.join(out, 'training-evidence-export.json')));
|
|
42
|
+
});
|
|
43
|
+
(0, node_test_1.default)('rejects collision, digest mismatch and interrupted write without partial target', () => {
|
|
44
|
+
const root = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'training-evidence-'));
|
|
45
|
+
const collision = node_path_1.default.join(root, 'exists');
|
|
46
|
+
node_fs_1.default.mkdirSync(collision);
|
|
47
|
+
strict_1.default.throws(() => (0, training_evidence_export_1.writeTrainingEvidenceExportAtomically)(collision, fixture()), /WOULD_OVERWRITE/);
|
|
48
|
+
const tampered = fixture();
|
|
49
|
+
tampered.artifacts[0].artifactBase64 = Buffer.from('{}').toString('base64');
|
|
50
|
+
const tamperedOut = node_path_1.default.join(root, 'tampered');
|
|
51
|
+
strict_1.default.throws(() => (0, training_evidence_export_1.writeTrainingEvidenceExportAtomically)(tamperedOut, tampered), /DIGEST_MISMATCH/);
|
|
52
|
+
strict_1.default.equal(node_fs_1.default.existsSync(tamperedOut), false);
|
|
53
|
+
const interrupted = node_path_1.default.join(root, 'interrupted');
|
|
54
|
+
strict_1.default.throws(() => (0, training_evidence_export_1.writeTrainingEvidenceExportAtomically)(interrupted, fixture(), {
|
|
55
|
+
beforeRename: () => { throw new Error('INTERRUPTED'); },
|
|
56
|
+
}), /INTERRUPTED/);
|
|
57
|
+
strict_1.default.equal(node_fs_1.default.existsSync(interrupted), false);
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=training-evidence-export.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"training-evidence-export.test.js","sourceRoot":"","sources":["../../../../src/services/training-evidence-export.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,8 +81,7 @@ async function validateLocalBundle(options) {
|
|
|
81
81
|
requireExactPolicy(catalog, bundle.releasePolicy.defaultToolApprovalPolicyApiName, 'tool_call');
|
|
82
82
|
const employeePath = safeBundlePath(root, bundle.employeePackage.path);
|
|
83
83
|
const employee = readJson(employeePath);
|
|
84
|
-
const
|
|
85
|
-
const employeeEvalCases = readJson(employeeEvalCasesPath);
|
|
84
|
+
const employeeEvalCases = readLocalEmployeeEvalDocuments(root, bundle);
|
|
86
85
|
const employeeValidation = (0, shared_1.validateEmployeePackage)(employee);
|
|
87
86
|
if (!employeeValidation.valid) {
|
|
88
87
|
throw new Error(`BUNDLE_EMPLOYEE_PACKAGE_INVALID:${employeeValidation.issues
|
|
@@ -95,8 +94,7 @@ async function validateLocalBundle(options) {
|
|
|
95
94
|
employee.agent.apiName !== bundle.agentApiName) {
|
|
96
95
|
throw new Error('BUNDLE_EMPLOYEE_IDENTITY_MISMATCH');
|
|
97
96
|
}
|
|
98
|
-
if (employeeEvalCases.schemaVersion !== 'employee-eval-cases/v1' ||
|
|
99
|
-
employeeEvalCases.agentApiName !== bundle.agentApiName) {
|
|
97
|
+
if (employeeEvalCases.some((item) => item.value.schemaVersion !== 'employee-eval-cases/v1' || item.value.agentApiName !== bundle.agentApiName)) {
|
|
100
98
|
throw new Error('BUNDLE_EMPLOYEE_EVAL_IDENTITY_MISMATCH');
|
|
101
99
|
}
|
|
102
100
|
return {
|
|
@@ -106,6 +104,30 @@ async function validateLocalBundle(options) {
|
|
|
106
104
|
employeePackagePath: node_path_1.default.relative(root, employeePath).split(node_path_1.default.sep).join('/'),
|
|
107
105
|
};
|
|
108
106
|
}
|
|
107
|
+
function readLocalEmployeeEvalDocuments(root, bundle) {
|
|
108
|
+
if (bundle.employeePackage.evalCasesPath) {
|
|
109
|
+
const file = safeBundlePath(root, bundle.employeePackage.evalCasesPath);
|
|
110
|
+
return [{ file, value: readJson(file) }];
|
|
111
|
+
}
|
|
112
|
+
const manifestReference = bundle.employeePackage.evalCasesManifestPath;
|
|
113
|
+
if (!manifestReference)
|
|
114
|
+
throw new Error('BUNDLE_EMPLOYEE_EVAL_REFERENCE_INVALID');
|
|
115
|
+
const manifestFile = safeBundlePath(root, manifestReference);
|
|
116
|
+
const manifest = readJson(manifestFile);
|
|
117
|
+
if ((0, shared_1.validateEmployeeTrainingEvidenceExportManifest)(manifest).length || manifest.agentApiName !== bundle.agentApiName) {
|
|
118
|
+
throw new Error('TRAINING_EVIDENCE_EXPORT_MANIFEST_INVALID');
|
|
119
|
+
}
|
|
120
|
+
const manifestRoot = node_path_1.default.dirname(manifestFile);
|
|
121
|
+
return manifest.entries.map((entry) => {
|
|
122
|
+
const file = safeBundlePath(manifestRoot, entry.path);
|
|
123
|
+
const raw = node_fs_1.default.readFileSync(file);
|
|
124
|
+
const value = JSON.parse(raw.toString('utf8'));
|
|
125
|
+
if ((0, shared_1.canonicalJsonDigest)(value) !== entry.artifactDigest || raw.byteLength !== entry.artifactSizeBytes) {
|
|
126
|
+
throw new Error('TRAINING_EVIDENCE_EXPORT_DIGEST_MISMATCH');
|
|
127
|
+
}
|
|
128
|
+
return { file, value };
|
|
129
|
+
});
|
|
130
|
+
}
|
|
109
131
|
function employeeEvalCasesSkeleton(agentApiName) {
|
|
110
132
|
return {
|
|
111
133
|
schemaVersion: 'employee-eval-cases/v1',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workforce-bundle-local.js","sourceRoot":"","sources":["../../../../src/services/workforce-bundle-local.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"workforce-bundle-local.js","sourceRoot":"","sources":["../../../../src/services/workforce-bundle-local.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,6 +57,35 @@ const workforce_bundle_local_1 = require("./workforce-bundle-local");
|
|
|
57
57
|
strict_1.default.equal(result.valid, true);
|
|
58
58
|
strict_1.default.equal(result.agentApiName, 'SalesOps');
|
|
59
59
|
strict_1.default.equal(JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(bundleRoot, 'employee', 'employee-package.json'), 'utf8')).activateOnPass, false);
|
|
60
|
+
const bundlePath = node_path_1.default.join(bundleRoot, 'workforce.bundle.json');
|
|
61
|
+
const bundle = JSON.parse(node_fs_1.default.readFileSync(bundlePath, 'utf8'));
|
|
62
|
+
const legacyEvalPath = node_path_1.default.join(bundleRoot, bundle.employeePackage.evalCasesPath);
|
|
63
|
+
const evalValue = JSON.parse(node_fs_1.default.readFileSync(legacyEvalPath, 'utf8'));
|
|
64
|
+
const evidenceRoot = node_path_1.default.join(bundleRoot, 'employee', 'evidence');
|
|
65
|
+
const casesRoot = node_path_1.default.join(evidenceRoot, 'cases');
|
|
66
|
+
node_fs_1.default.mkdirSync(casesRoot, { recursive: true });
|
|
67
|
+
const casePath = node_path_1.default.join(casesRoot, 'execution-1.employee-eval-cases.json');
|
|
68
|
+
const caseBytes = Buffer.from(JSON.stringify(evalValue));
|
|
69
|
+
node_fs_1.default.writeFileSync(casePath, caseBytes);
|
|
70
|
+
const entries = [{
|
|
71
|
+
executionId: 'execution-1',
|
|
72
|
+
path: 'cases/execution-1.employee-eval-cases.json',
|
|
73
|
+
artifactDigest: (0, shared_1.canonicalJsonDigest)(evalValue),
|
|
74
|
+
artifactSizeBytes: caseBytes.byteLength,
|
|
75
|
+
}];
|
|
76
|
+
node_fs_1.default.writeFileSync(node_path_1.default.join(evidenceRoot, 'manifest.json'), JSON.stringify({
|
|
77
|
+
schemaVersion: shared_1.TRAINING_EVIDENCE_EXPORT_MANIFEST_VERSION,
|
|
78
|
+
agentApiName: bundle.agentApiName,
|
|
79
|
+
entries,
|
|
80
|
+
aggregateDigest: (0, shared_1.trainingEvidenceExportAggregateDigest)({ agentApiName: bundle.agentApiName, entries }),
|
|
81
|
+
}));
|
|
82
|
+
delete bundle.employeePackage.evalCasesPath;
|
|
83
|
+
bundle.employeePackage.evalCasesManifestPath = 'employee/evidence/manifest.json';
|
|
84
|
+
node_fs_1.default.writeFileSync(bundlePath, JSON.stringify(bundle));
|
|
85
|
+
strict_1.default.equal((await (0, workforce_bundle_local_1.validateLocalBundle)({
|
|
86
|
+
bundleDir: bundleRoot,
|
|
87
|
+
contextManifestPath: node_path_1.default.join(context, 'context-manifest.json'),
|
|
88
|
+
})).valid, true);
|
|
60
89
|
});
|
|
61
90
|
(0, node_test_1.default)('bundle init does not infer a policy from the only catalog row', async () => {
|
|
62
91
|
const root = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'nexus-bundle-'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workforce-bundle-local.test.js","sourceRoot":"","sources":["../../../../src/services/workforce-bundle-local.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAwC;AACxC,sDAAyB;AACzB,sDAAyB;AACzB,0DAA6B;AAC7B,0DAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"workforce-bundle-local.test.js","sourceRoot":"","sources":["../../../../src/services/workforce-bundle-local.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,3 +25,20 @@ export declare function transitionMemoryRemote(options: {
|
|
|
25
25
|
status: string;
|
|
26
26
|
revision: number;
|
|
27
27
|
}>;
|
|
28
|
+
export declare function verifyMemoryEvidenceRemote(options: {
|
|
29
|
+
targetOrg: string;
|
|
30
|
+
memoryItemId: string;
|
|
31
|
+
expectedGeneration: number;
|
|
32
|
+
sourceEvidence: Array<{
|
|
33
|
+
kind: string;
|
|
34
|
+
id: string;
|
|
35
|
+
version?: string;
|
|
36
|
+
digest?: string;
|
|
37
|
+
observedAt: string;
|
|
38
|
+
}>;
|
|
39
|
+
confidence: number;
|
|
40
|
+
idempotencyKey: string;
|
|
41
|
+
}): Promise<{
|
|
42
|
+
status: string;
|
|
43
|
+
revision: number;
|
|
44
|
+
}>;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.confirmOpportunityRemote = confirmOpportunityRemote;
|
|
4
4
|
exports.rejectOpportunityRemote = rejectOpportunityRemote;
|
|
5
5
|
exports.transitionMemoryRemote = transitionMemoryRemote;
|
|
6
|
+
exports.verifyMemoryEvidenceRemote = verifyMemoryEvidenceRemote;
|
|
6
7
|
const api_client_1 = require("./api-client");
|
|
7
8
|
const CONFIRM_OPPORTUNITY = `
|
|
8
9
|
mutation ConfirmAiWorkforceOpportunity($proposalId: ID!, $proposalDigest: String!, $stateFingerprint: String!) {
|
|
@@ -16,6 +17,10 @@ const TRANSITION_MEMORY = `
|
|
|
16
17
|
mutation TransitionAiWorkforceMemory($memoryItemId: ID!, $expectedGeneration: Int!, $toStatus: String!, $reasonCode: String!, $idempotencyKey: String!) {
|
|
17
18
|
transitionAiWorkforceMemory(memoryItemId: $memoryItemId, expectedGeneration: $expectedGeneration, toStatus: $toStatus, reasonCode: $reasonCode, idempotencyKey: $idempotencyKey) { status revision }
|
|
18
19
|
}`;
|
|
20
|
+
const VERIFY_MEMORY_EVIDENCE = `
|
|
21
|
+
mutation VerifyAiWorkforceMemoryEvidence($memoryItemId: ID!, $expectedGeneration: Int!, $sourceEvidence: JSON!, $confidence: Float!, $idempotencyKey: String!) {
|
|
22
|
+
verifyAiWorkforceMemoryEvidence(memoryItemId: $memoryItemId, expectedGeneration: $expectedGeneration, sourceEvidence: $sourceEvidence, confidence: $confidence, idempotencyKey: $idempotencyKey) { status revision }
|
|
23
|
+
}`;
|
|
19
24
|
async function confirmOpportunityRemote(options) {
|
|
20
25
|
const client = (0, api_client_1.createApiClient)(options.targetOrg);
|
|
21
26
|
const data = await client.graphql(CONFIRM_OPPORTUNITY, {
|
|
@@ -45,4 +50,15 @@ async function transitionMemoryRemote(options) {
|
|
|
45
50
|
});
|
|
46
51
|
return data.transitionAiWorkforceMemory;
|
|
47
52
|
}
|
|
53
|
+
async function verifyMemoryEvidenceRemote(options) {
|
|
54
|
+
const client = (0, api_client_1.createApiClient)(options.targetOrg);
|
|
55
|
+
const data = await client.graphql(VERIFY_MEMORY_EVIDENCE, {
|
|
56
|
+
memoryItemId: options.memoryItemId,
|
|
57
|
+
expectedGeneration: options.expectedGeneration,
|
|
58
|
+
sourceEvidence: options.sourceEvidence,
|
|
59
|
+
confidence: options.confidence,
|
|
60
|
+
idempotencyKey: options.idempotencyKey,
|
|
61
|
+
});
|
|
62
|
+
return data.verifyAiWorkforceMemoryEvidence;
|
|
63
|
+
}
|
|
48
64
|
//# sourceMappingURL=workforce-cognition-remote.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workforce-cognition-remote.js","sourceRoot":"","sources":["../../../../src/services/workforce-cognition-remote.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"workforce-cognition-remote.js","sourceRoot":"","sources":["../../../../src/services/workforce-cognition-remote.ts"],"names":[],"mappings":";;AAoDA,4DAgBC;AAMD,0DAgBC;AASD,wDAmBC;AAED,gEAyBC;AAjJD,6CAA+C;AAoB/C,MAAM,mBAAmB,GAAG;;;EAG1B,CAAC;AAEH,MAAM,kBAAkB,GAAG;;;EAGzB,CAAC;AAEH,MAAM,iBAAiB,GAAG;;;EAGxB,CAAC;AAEH,MAAM,sBAAsB,GAAG;;;EAG7B,CAAC;AAcI,KAAK,UAAU,wBAAwB,CAAC,OAK9C;IACC,MAAM,MAAM,GAAG,IAAA,4BAAe,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAC/B,mBAAmB,EACnB;QACE,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;KAC3C,CACF,CAAC;IACF,OAAO,IAAI,CAAC,6BAA6B,CAAC;AAC5C,CAAC;AAMM,KAAK,UAAU,uBAAuB,CAAC,OAK7C;IACC,MAAM,MAAM,GAAG,IAAA,4BAAe,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAC/B,kBAAkB,EAClB;QACE,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CACF,CAAC;IACF,OAAO,IAAI,CAAC,4BAA4B,CAAC;AAC3C,CAAC;AASM,KAAK,UAAU,sBAAsB,CAAC,OAO5C;IACC,MAAM,MAAM,GAAG,IAAA,4BAAe,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAE9B,iBAAiB,EAAE;QACpB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,2BAA2B,CAAC;AAC1C,CAAC;AAEM,KAAK,UAAU,0BAA0B,CAAC,OAahD;IACC,MAAM,MAAM,GAAG,IAAA,4BAAe,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAE9B,sBAAsB,EAAE;QACzB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,+BAA+B,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_path_1 = require("node:path");
|
|
9
|
+
const node_test_1 = require("node:test");
|
|
10
|
+
(0, node_test_1.describe)('workspace constitution remote GraphQL contract (LYNC-184)', () => {
|
|
11
|
+
(0, node_test_1.it)('keeps current and historical result types aligned with the backend schema', () => {
|
|
12
|
+
const current = {
|
|
13
|
+
id: 'constitution-1',
|
|
14
|
+
workspaceId: 'workspace-1',
|
|
15
|
+
content: '禁止未经审批的承诺。',
|
|
16
|
+
version: 3,
|
|
17
|
+
updatedBy: 'user-1',
|
|
18
|
+
updatedAt: '2026-08-28T00:00:00.000Z',
|
|
19
|
+
};
|
|
20
|
+
const historical = {
|
|
21
|
+
id: 'constitution-version-1',
|
|
22
|
+
versionNumber: 2,
|
|
23
|
+
content: '历史准则',
|
|
24
|
+
changeSummary: '回滚前快照',
|
|
25
|
+
createdAt: '2026-08-27T00:00:00.000Z',
|
|
26
|
+
};
|
|
27
|
+
strict_1.default.equal(current.version, 3);
|
|
28
|
+
strict_1.default.equal(historical.versionNumber, 2);
|
|
29
|
+
});
|
|
30
|
+
(0, node_test_1.it)('queries only fields exposed by the current backend GraphQL types', () => {
|
|
31
|
+
const cliRoot = process.cwd().endsWith((0, node_path_1.join)('packages', 'nexus-cli'))
|
|
32
|
+
? process.cwd()
|
|
33
|
+
: (0, node_path_1.join)(process.cwd(), 'packages', 'nexus-cli');
|
|
34
|
+
const source = (0, node_fs_1.readFileSync)((0, node_path_1.join)(cliRoot, 'src', 'services', 'workforce-config-remote.ts'), 'utf8');
|
|
35
|
+
const constitutionSection = source.slice(source.indexOf('// ── workspace constitution'), source.indexOf('// ── prompt strategy'));
|
|
36
|
+
strict_1.default.match(constitutionSection, /workspaceConstitution \{ id workspaceId content version updatedBy updatedAt \}/);
|
|
37
|
+
strict_1.default.match(constitutionSection, /workspaceConstitutionVersions \{ id versionNumber content changeSummary createdAt \}/);
|
|
38
|
+
strict_1.default.doesNotMatch(constitutionSection, /\bisActive\b|\bpublishedAt\b|\bpublishedBy\b/);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=workforce-config-remote.contract.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workforce-config-remote.contract.test.js","sourceRoot":"","sources":["../../../../src/services/workforce-config-remote.contract.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAwC;AACxC,qCAAuC;AACvC,yCAAiC;AACjC,yCAAyC;AAOzC,IAAA,oBAAQ,EAAC,2DAA2D,EAAE,GAAG,EAAE;IACzE,IAAA,cAAE,EAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,MAAM,OAAO,GAAqB;YAChC,EAAE,EAAE,gBAAgB;YACpB,WAAW,EAAE,aAAa;YAC1B,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,0BAA0B;SACtC,CAAC;QACF,MAAM,UAAU,GAA4B;YAC1C,EAAE,EAAE,wBAAwB;YAC5B,aAAa,EAAE,CAAC;YAChB,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,OAAO;YACtB,SAAS,EAAE,0BAA0B;SACtC,CAAC;QAEF,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjC,gBAAM,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAA,gBAAI,EAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YACnE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACf,CAAC,CAAC,IAAA,gBAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,4BAA4B,CAAC,EAAE,MAAM,CAAC,CAAC;QACpG,MAAM,mBAAmB,GAAG,MAAM,CAAC,KAAK,CACtC,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,EAC9C,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CACxC,CAAC;QAEF,gBAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,gFAAgF,CAAC,CAAC;QACpH,gBAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,sFAAsF,CAAC,CAAC;QAC1H,gBAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE,8CAA8C,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -2,10 +2,16 @@ export interface ConstitutionView {
|
|
|
2
2
|
id: string;
|
|
3
3
|
workspaceId: string;
|
|
4
4
|
content: string;
|
|
5
|
+
version: number;
|
|
6
|
+
updatedBy?: string;
|
|
7
|
+
updatedAt: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ConstitutionVersionView {
|
|
10
|
+
id: string;
|
|
5
11
|
versionNumber: number;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
12
|
+
content: string;
|
|
13
|
+
changeSummary?: string;
|
|
14
|
+
createdAt: string;
|
|
9
15
|
}
|
|
10
16
|
export declare function publishConstitutionRemote(options: {
|
|
11
17
|
targetOrg: string;
|
|
@@ -20,7 +26,7 @@ export declare function getConstitutionRemote(options: {
|
|
|
20
26
|
}): Promise<ConstitutionView | null>;
|
|
21
27
|
export declare function listConstitutionVersionsRemote(options: {
|
|
22
28
|
targetOrg: string;
|
|
23
|
-
}): Promise<
|
|
29
|
+
}): Promise<ConstitutionVersionView[]>;
|
|
24
30
|
export interface PromptStrategyView {
|
|
25
31
|
id: string;
|
|
26
32
|
workspaceId?: string;
|
|
@@ -19,16 +19,16 @@ const api_client_1 = require("./api-client");
|
|
|
19
19
|
const workforce_common_1 = require("./workforce-common");
|
|
20
20
|
const PUBLISH_CONSTITUTION = `
|
|
21
21
|
mutation PublishWorkspaceConstitution($input: PublishWorkspaceConstitutionInput!) {
|
|
22
|
-
publishWorkspaceConstitution(input: $input) { id workspaceId content
|
|
22
|
+
publishWorkspaceConstitution(input: $input) { id workspaceId content version updatedBy updatedAt }
|
|
23
23
|
}`;
|
|
24
24
|
const ROLLBACK_CONSTITUTION = `
|
|
25
25
|
mutation RollbackWorkspaceConstitution($input: RollbackWorkspaceConstitutionInput!) {
|
|
26
|
-
rollbackWorkspaceConstitution(input: $input) { id workspaceId content
|
|
26
|
+
rollbackWorkspaceConstitution(input: $input) { id workspaceId content version updatedBy updatedAt }
|
|
27
27
|
}`;
|
|
28
28
|
const GET_CONSTITUTION = `
|
|
29
|
-
query WorkspaceConstitution { workspaceConstitution { id workspaceId content
|
|
29
|
+
query WorkspaceConstitution { workspaceConstitution { id workspaceId content version updatedBy updatedAt } }`;
|
|
30
30
|
const LIST_CONSTITUTION_VERSIONS = `
|
|
31
|
-
query WorkspaceConstitutionVersions { workspaceConstitutionVersions { id versionNumber content
|
|
31
|
+
query WorkspaceConstitutionVersions { workspaceConstitutionVersions { id versionNumber content changeSummary createdAt } }`;
|
|
32
32
|
async function publishConstitutionRemote(options) {
|
|
33
33
|
const client = (0, api_client_1.createApiClient)(options.targetOrg);
|
|
34
34
|
const data = await client.graphql(PUBLISH_CONSTITUTION, { input: { content: options.content } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workforce-config-remote.js","sourceRoot":"","sources":["../../../../src/services/workforce-config-remote.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"workforce-config-remote.js","sourceRoot":"","sources":["../../../../src/services/workforce-config-remote.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,8 @@ export interface WorkforceConversationTurnResult {
|
|
|
26
26
|
persisted: boolean;
|
|
27
27
|
messageCount: number;
|
|
28
28
|
executionId: string;
|
|
29
|
+
imageDocumentId: string | null;
|
|
30
|
+
audioDocumentId: string | null;
|
|
29
31
|
}
|
|
30
32
|
export declare function converseWorkforceTaskRemote(options: {
|
|
31
33
|
targetOrg: string;
|
|
@@ -35,6 +37,9 @@ export declare function converseWorkforceTaskRemote(options: {
|
|
|
35
37
|
accountId?: string;
|
|
36
38
|
browserContext?: unknown;
|
|
37
39
|
imageDocumentId?: string;
|
|
40
|
+
audioDocumentId?: string;
|
|
41
|
+
imageFile?: string;
|
|
42
|
+
audioFile?: string;
|
|
38
43
|
}): Promise<WorkforceConversationTurnResult>;
|
|
39
44
|
export declare function getWorkforceConversationRemote(options: {
|
|
40
45
|
targetOrg: string;
|
|
@@ -5,6 +5,8 @@ exports.getWorkforceConversationRemote = getWorkforceConversationRemote;
|
|
|
5
5
|
exports.endWorkforceConversationRemote = endWorkforceConversationRemote;
|
|
6
6
|
exports.listWorkforceConversationsRemote = listWorkforceConversationsRemote;
|
|
7
7
|
const node_crypto_1 = require("node:crypto");
|
|
8
|
+
const promises_1 = require("node:fs/promises");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
8
10
|
const api_client_1 = require("./api-client");
|
|
9
11
|
function unwrap(response, operation) {
|
|
10
12
|
if (!response.success) {
|
|
@@ -26,6 +28,20 @@ async function readConversation(targetOrg, sessionId) {
|
|
|
26
28
|
const HISTORY_MESSAGE_WINDOW = 64;
|
|
27
29
|
async function converseWorkforceTaskRemote(options) {
|
|
28
30
|
const client = (0, api_client_1.createApiClient)(options.targetOrg);
|
|
31
|
+
const uploadLocalMedia = async (path) => {
|
|
32
|
+
const uploaded = await client.uploadContentDocument({
|
|
33
|
+
filename: (0, node_path_1.basename)(path),
|
|
34
|
+
bytes: await (0, promises_1.readFile)(path),
|
|
35
|
+
idempotencyKey: (0, node_crypto_1.randomUUID)(),
|
|
36
|
+
});
|
|
37
|
+
return uploaded.documentId;
|
|
38
|
+
};
|
|
39
|
+
const imageDocumentId = options.imageFile
|
|
40
|
+
? await uploadLocalMedia(options.imageFile)
|
|
41
|
+
: options.imageDocumentId;
|
|
42
|
+
const audioDocumentId = options.audioFile
|
|
43
|
+
? await uploadLocalMedia(options.audioFile)
|
|
44
|
+
: options.audioDocumentId;
|
|
29
45
|
const sessionId = options.sessionId ?? (0, node_crypto_1.randomUUID)();
|
|
30
46
|
const correlation = `sessionId=${sessionId}`;
|
|
31
47
|
try {
|
|
@@ -45,10 +61,11 @@ async function converseWorkforceTaskRemote(options) {
|
|
|
45
61
|
agentId: options.agentId,
|
|
46
62
|
accountId: options.accountId ?? before?.conversation.accountId ?? undefined,
|
|
47
63
|
sessionId,
|
|
48
|
-
sessionMode: 'text',
|
|
64
|
+
sessionMode: audioDocumentId ? 'voice' : 'text',
|
|
49
65
|
channel: 'cli',
|
|
50
66
|
browserContext: options.browserContext,
|
|
51
|
-
imageDocumentId
|
|
67
|
+
imageDocumentId,
|
|
68
|
+
audioDocumentId,
|
|
52
69
|
});
|
|
53
70
|
const remoteError = events.find((event) => event.event === 'error');
|
|
54
71
|
if (remoteError) {
|
|
@@ -102,6 +119,8 @@ async function converseWorkforceTaskRemote(options) {
|
|
|
102
119
|
persisted: messageIds.length >= 2,
|
|
103
120
|
messageCount: after?.conversation.messageCount ?? 0,
|
|
104
121
|
executionId,
|
|
122
|
+
imageDocumentId: imageDocumentId ?? null,
|
|
123
|
+
audioDocumentId: audioDocumentId ?? null,
|
|
105
124
|
};
|
|
106
125
|
}
|
|
107
126
|
catch (error) {
|