@dharma-ai-labs/agent-fabric 0.2.188 → 0.2.189
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/AGENT_FABRIC_ONBOARDING.md +4 -2
- package/dist/codexSetupNativeHost.d.ts +6 -0
- package/dist/codexSetupNativeHost.d.ts.map +1 -1
- package/dist/codexSetupNativeHost.js +14 -4
- package/dist/codexSetupNativeHost.js.map +1 -1
- package/dist/codexSetupNativeHost.test.js +84 -0
- package/dist/codexSetupNativeHost.test.js.map +1 -1
- package/dist/codexSetupNativeWire.test.js +96 -23
- package/dist/codexSetupNativeWire.test.js.map +1 -1
- package/dist/codexSetupOwnedConnection.test.js +71 -2
- package/dist/codexSetupOwnedConnection.test.js.map +1 -1
- package/dist/codexSetupPortalCommand.test.js +29 -1
- package/dist/codexSetupPortalCommand.test.js.map +1 -1
- package/dist/codexSetupUserPrompt.d.ts +11 -0
- package/dist/codexSetupUserPrompt.d.ts.map +1 -0
- package/dist/codexSetupUserPrompt.js +66 -0
- package/dist/codexSetupUserPrompt.js.map +1 -0
- package/dist/codexSetupUserPrompt.test.d.ts +2 -0
- package/dist/codexSetupUserPrompt.test.d.ts.map +1 -0
- package/dist/codexSetupUserPrompt.test.js +93 -0
- package/dist/codexSetupUserPrompt.test.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -5
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +3 -1
- package/dist/index.test.js.map +1 -1
- package/dist/namedCodexThread.d.ts +1 -1
- package/dist/namedCodexThread.d.ts.map +1 -1
- package/dist/namedCodexThread.js +13 -4
- package/dist/namedCodexThread.js.map +1 -1
- package/dist/onboardingContract.test.js +6 -2
- package/dist/onboardingContract.test.js.map +1 -1
- package/dist/unitTestReporter.test.d.ts +2 -0
- package/dist/unitTestReporter.test.d.ts.map +1 -0
- package/dist/unitTestReporter.test.js +39 -0
- package/dist/unitTestReporter.test.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CodexAppServerTransport } from '@dharma-ai-labs/agent-fabric-provider-adapters/experimental/codex-session';
|
|
2
2
|
import type { BootstrapHostScope } from './bootstrapHostScope.js';
|
|
3
3
|
export declare function startNamedCodexThread(transport: CodexAppServerTransport, workspaceRoot: string, name: string): Promise<string>;
|
|
4
|
-
export declare function startNamedCodexSetupThread(transport: CodexAppServerTransport, workspaceRoot: string, name: string, scope: BootstrapHostScope): Promise<string>;
|
|
4
|
+
export declare function startNamedCodexSetupThread(transport: CodexAppServerTransport, workspaceRoot: string, name: string, scope: BootstrapHostScope, bindPublicIntent?: boolean): Promise<string>;
|
|
5
5
|
//# sourceMappingURL=namedCodexThread.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namedCodexThread.d.ts","sourceRoot":"","sources":["../src/namedCodexThread.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2EAA2E,CAAC;AAGzH,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"namedCodexThread.d.ts","sourceRoot":"","sources":["../src/namedCodexThread.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2EAA2E,CAAC;AAGzH,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAGhE,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,mBAElH;AAED,wBAAsB,0BAA0B,CAAC,SAAS,EAAE,uBAAuB,EACjF,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,UAAQ,mBAEzF"}
|
package/dist/namedCodexThread.js
CHANGED
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
import { isAbsolute, resolve } from 'node:path';
|
|
2
2
|
import { CODEX_PEER_TOOLS } from './codexPeerTools.js';
|
|
3
3
|
import { CODEX_SETUP_TOOL } from './codexSetupAdmission.js';
|
|
4
|
+
import { inspectCodexBootstrapHostPreparation } from './bootstrapHostScope.js';
|
|
4
5
|
export async function startNamedCodexThread(transport, workspaceRoot, name) {
|
|
5
6
|
return startThread(transport, workspaceRoot, name);
|
|
6
7
|
}
|
|
7
|
-
export async function startNamedCodexSetupThread(transport, workspaceRoot, name, scope) {
|
|
8
|
-
return startThread(transport, workspaceRoot, name, scope);
|
|
8
|
+
export async function startNamedCodexSetupThread(transport, workspaceRoot, name, scope, bindPublicIntent = false) {
|
|
9
|
+
return startThread(transport, workspaceRoot, name, scope, bindPublicIntent);
|
|
9
10
|
}
|
|
10
|
-
async function startThread(transport, workspaceRoot, name, setupScope) {
|
|
11
|
+
async function startThread(transport, workspaceRoot, name, setupScope, bindPublicIntent = false) {
|
|
11
12
|
const request = (method, params) => setupScope
|
|
12
13
|
? setupScope.step(() => transport.request(method, params)) : transport.request(method, params);
|
|
13
14
|
if (!/^[a-z][a-z0-9-]{0,47}$/.test(name) || !isAbsolute(workspaceRoot) || resolve(workspaceRoot) !== workspaceRoot) {
|
|
14
15
|
throw new Error('named_session_thread_invalid');
|
|
15
16
|
}
|
|
17
|
+
let setupTool = CODEX_SETUP_TOOL;
|
|
18
|
+
if (setupScope && bindPublicIntent) {
|
|
19
|
+
const { intent } = await inspectCodexBootstrapHostPreparation(setupScope);
|
|
20
|
+
setupTool = { ...CODEX_SETUP_TOOL, description: CODEX_SETUP_TOOL.description
|
|
21
|
+
+ ` This original native host admits operationId ${intent.operationId} and setupReference ${intent.setupReference} only.`
|
|
22
|
+
+ ' Use these exact public identifiers with the original portal prompt. Do not run setup shell or authentication commands, read private storage, change permissions or call peer tools.'
|
|
23
|
+
+ ' Keep this tool pending through matching-recipient browser approval; in-progress is not readiness. If functions.exec yields a running cell, wait on that same cell until its terminal result. Do not end the original turn or restart setup while approval is pending.' };
|
|
24
|
+
}
|
|
16
25
|
const created = await request('thread/start', { cwd: workspaceRoot,
|
|
17
26
|
approvalPolicy: 'never', permissions: 'dharma_bridge', ephemeral: false,
|
|
18
|
-
dynamicTools: setupScope ? structuredClone([...CODEX_PEER_TOOLS,
|
|
27
|
+
dynamicTools: setupScope ? structuredClone([...CODEX_PEER_TOOLS, setupTool]) : CODEX_PEER_TOOLS });
|
|
19
28
|
const thread = created?.thread;
|
|
20
29
|
if (!thread || typeof thread.id !== 'string' || !/^[A-Za-z0-9_-]{1,128}$/.test(thread.id)
|
|
21
30
|
|| thread.cwd !== workspaceRoot || thread.status?.type !== 'idle')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namedCodexThread.js","sourceRoot":"","sources":["../src/namedCodexThread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"namedCodexThread.js","sourceRoot":"","sources":["../src/namedCodexThread.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,14 +10,18 @@ test('the installed onboarding contract forbids product-code workarounds', async
|
|
|
10
10
|
assert.match(contract, /do not bypass enrollment/i);
|
|
11
11
|
assert.match(contract, /exact failed stage, non-sensitive error, and correlation ID/i);
|
|
12
12
|
assert.match(contract, /supported retry, reconciliation, rollback, or browser-authorized re-enrollment/i);
|
|
13
|
-
assert.match(contract, /same
|
|
13
|
+
assert.match(contract, /same native turn pending through recipient approval and final JSON/i);
|
|
14
14
|
assert.match(contract, /never replay an expired or spent setup/i);
|
|
15
15
|
});
|
|
16
16
|
test('the installed contract uses one agent-run public reference and exact recipient browser approval', async () => {
|
|
17
17
|
const contract = await readFile(contractUrl, 'utf8');
|
|
18
18
|
assert.match(contract, /public setup reference is not a bearer credential/i);
|
|
19
19
|
assert.match(contract, /actual authenticated coding-agent conversation/i);
|
|
20
|
-
assert.match(contract, /
|
|
20
|
+
assert.match(contract, /original public prompt as the single user message/i);
|
|
21
|
+
assert.match(contract, /registers the matching `dharma_setup_reference` tool/i);
|
|
22
|
+
assert.match(contract, /Do not run direct-CLI compatibility commands on this route/i);
|
|
23
|
+
assert.match(contract, /requires `initialUserPrompt`/);
|
|
24
|
+
assert.match(contract, /Missing text is refused, never replaced with a controller message/);
|
|
21
25
|
assert.match(contract, /credentials move only from the trusted HTTPS endpoint into the native protected store/i);
|
|
22
26
|
assert.match(contract, /never request a human terminal command, grant paste or keyring troubleshooting/i);
|
|
23
27
|
assert.match(contract, /no supplementary manual setup command/i);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboardingContract.test.js","sourceRoot":"","sources":["../src/onboardingContract.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,+BAA+B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE9E,IAAI,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;IACpF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAErD,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,gDAAgD,CAAC,CAAC;IACzE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,0CAA0C,CAAC,CAAC;IACnE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAC;IACrD,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC;IACpD,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,8DAA8D,CAAC,CAAC;IACvF,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,iFAAiF,CAAC,CAAC;IAC1G,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"onboardingContract.test.js","sourceRoot":"","sources":["../src/onboardingContract.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unitTestReporter.test.d.ts","sourceRoot":"","sources":["../src/unitTestReporter.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { spawnSync } from 'node:child_process';
|
|
3
|
+
import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
5
|
+
import { resolve } from 'node:path';
|
|
6
|
+
import test from 'node:test';
|
|
7
|
+
test('the full CLI suite keeps failed assertions in the bounded log tail', async () => {
|
|
8
|
+
const manifest = JSON.parse(await readFile(new URL('../package.json', import.meta.url), 'utf8'));
|
|
9
|
+
assert.equal(manifest.scripts.test, 'node --test --test-reporter=spec dist/*.test.js');
|
|
10
|
+
const root = await mkdtemp(resolve(tmpdir(), 'fabric-test-reporter-'));
|
|
11
|
+
try {
|
|
12
|
+
const file = resolve(root, 'synthetic-reporter.test.mjs');
|
|
13
|
+
await writeFile(file, "import test from 'node:test'; import assert from 'node:assert/strict';\n"
|
|
14
|
+
+ "test('synthetic_failure_must_remain_visible', () => assert.equal(1, 2));\n"
|
|
15
|
+
+ "for (let n = 0; n < 100; n++) test('later_pass_' + n + '_' + 'x'.repeat(100), () => {});\n");
|
|
16
|
+
const run = (reporter) => spawnSync(process.execPath, ['--test', `--test-reporter=${reporter}`, file], {
|
|
17
|
+
cwd: root, encoding: 'utf8', timeout: 15_000, windowsHide: true, maxBuffer: 128 * 1024,
|
|
18
|
+
env: process.platform === 'win32' ? { SystemRoot: process.env.SystemRoot, NO_COLOR: '1' } : { NO_COLOR: '1' },
|
|
19
|
+
});
|
|
20
|
+
const baseline = run('tap');
|
|
21
|
+
assert.equal(baseline.error, undefined);
|
|
22
|
+
assert.equal(baseline.status, 1);
|
|
23
|
+
assert.doesNotMatch(`${baseline.stdout}\n${baseline.stderr}`.slice(-2048), /synthetic_failure_must_remain_visible/);
|
|
24
|
+
const result = run('spec');
|
|
25
|
+
assert.equal(result.error, undefined);
|
|
26
|
+
assert.equal(result.status, 1, 'a failed assertion must still fail the process');
|
|
27
|
+
const tail = `${result.stdout}\n${result.stderr}`.slice(-2048);
|
|
28
|
+
assert.match(tail, /synthetic_failure_must_remain_visible/);
|
|
29
|
+
assert.match(tail, /ERR_ASSERTION/);
|
|
30
|
+
assert.match(tail, /tests 101/);
|
|
31
|
+
assert.match(tail, /pass 100/);
|
|
32
|
+
assert.match(tail, /fail 1/);
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
assert.ok(root.startsWith(resolve(tmpdir(), 'fabric-test-reporter-')));
|
|
36
|
+
await rm(root, { recursive: true, force: true });
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=unitTestReporter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unitTestReporter.test.js","sourceRoot":"","sources":["../src/unitTestReporter.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dharma-ai-labs/agent-fabric",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.189",
|
|
4
4
|
"description": "Local-first CLI for connecting coding agents to Dharma evaluation, orchestration, and signed Skill delivery",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/dharma-ai-labs/dharma-agent-fabric/tree/main/packages/cli#readme",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"provenance": true
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
|
-
"test": "node --test dist/*.test.js"
|
|
34
|
+
"test": "node --test --test-reporter=spec dist/*.test.js"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@dharma-ai-labs/agent-fabric-contracts": "0.1.16",
|