@dharma-ai-labs/agent-fabric 0.2.112 → 0.2.113

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.
@@ -0,0 +1,3 @@
1
+ export declare function studyTaskIdFromFlags(flags: Map<string, string | boolean>, workspaceId: string): string | undefined;
2
+ export declare function assertStudyExactPoll(polled: Record<string, unknown>, taskId: string, workspaceId: string): void;
3
+ //# sourceMappingURL=studyExactTaskSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studyExactTaskSelector.d.ts","sourceRoot":"","sources":["../src/studyExactTaskSelector.ts"],"names":[],"mappings":"AAIA,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,GACxD,MAAM,GAAG,SAAS,CAQpB;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GACnE,IAAI,CAaN"}
@@ -0,0 +1,27 @@
1
+ const TASK_ID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
2
+ export function studyTaskIdFromFlags(flags, workspaceId) {
3
+ if (!flags.has('study-task-id'))
4
+ return undefined;
5
+ const taskId = flags.get('study-task-id');
6
+ if (typeof taskId !== 'string' || !TASK_ID.test(taskId)
7
+ || flags.get('workspace-id') !== workspaceId) {
8
+ throw new Error('Study exact task selection requires a UUID and explicit registered workspace.');
9
+ }
10
+ return taskId;
11
+ }
12
+ export function assertStudyExactPoll(polled, taskId, workspaceId) {
13
+ if (polled.selectedStudyTaskId !== taskId) {
14
+ throw new Error('Server did not acknowledge exact study task selection.');
15
+ }
16
+ const taskRow = polled.task;
17
+ if (taskRow === null || taskRow === undefined)
18
+ return;
19
+ if (!taskRow || typeof taskRow !== 'object' || Array.isArray(taskRow)) {
20
+ throw new Error('Exact study task poll returned an invalid task row.');
21
+ }
22
+ const envelope = taskRow.envelope;
23
+ if (!envelope || envelope.taskId !== taskId || envelope.workspaceId !== workspaceId) {
24
+ throw new Error('Exact study task poll returned another task or workspace.');
25
+ }
26
+ }
27
+ //# sourceMappingURL=studyExactTaskSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studyExactTaskSelector.js","sourceRoot":"","sources":["../src/studyExactTaskSelector.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAG,2EAA2E,CAAC;AAE5F,MAAM,UAAU,oBAAoB,CAClC,KAAoC,EAAE,WAAmB;IAEzD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;QAAE,OAAO,SAAS,CAAC;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC1C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;WAClD,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,WAAW,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAA+B,EAAE,MAAc,EAAE,WAAmB;IAEpE,IAAI,MAAM,CAAC,mBAAmB,KAAK,MAAM,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;IAC5B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO;IACtD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,QAAQ,GAAI,OAAuC,CAAC,QAAQ,CAAC;IACnE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=studyExactTaskSelector.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studyExactTaskSelector.test.d.ts","sourceRoot":"","sources":["../src/studyExactTaskSelector.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { assertStudyExactPoll, studyTaskIdFromFlags } from './studyExactTaskSelector.js';
4
+ const TASK = '3b671bac-7ec8-4809-b8f3-1ddfb3e08b20';
5
+ const WORKSPACE = 'bdd7b919-c68a-5206-8e42-a5e069da8593';
6
+ test('ordinary run-once has no selector', () => {
7
+ assert.equal(studyTaskIdFromFlags(new Map([['workspace-id', WORKSPACE]]), WORKSPACE), undefined);
8
+ });
9
+ test('study task selector requires explicit workspace and canonical task id', () => {
10
+ assert.equal(studyTaskIdFromFlags(new Map([['study-task-id', TASK], ['workspace-id', WORKSPACE]]), WORKSPACE), TASK);
11
+ assert.throws(() => studyTaskIdFromFlags(new Map([['study-task-id', TASK]]), WORKSPACE));
12
+ assert.throws(() => studyTaskIdFromFlags(new Map([['study-task-id', true], ['workspace-id', WORKSPACE]]), WORKSPACE));
13
+ assert.throws(() => studyTaskIdFromFlags(new Map([['study-task-id', 'bad'], ['workspace-id', WORKSPACE]]), WORKSPACE));
14
+ });
15
+ test('exact poll requires server acknowledgement before trusting a task row', () => {
16
+ const task = { envelope: { taskId: TASK, workspaceId: WORKSPACE } };
17
+ assert.doesNotThrow(() => assertStudyExactPoll({ selectedStudyTaskId: TASK, task }, TASK, WORKSPACE));
18
+ assert.doesNotThrow(() => assertStudyExactPoll({ selectedStudyTaskId: TASK, task: null }, TASK, WORKSPACE));
19
+ assert.throws(() => assertStudyExactPoll({ task }, TASK, WORKSPACE));
20
+ assert.throws(() => assertStudyExactPoll({ selectedStudyTaskId: TASK,
21
+ task: { envelope: { taskId: 'other', workspaceId: WORKSPACE } } }, TASK, WORKSPACE));
22
+ assert.throws(() => assertStudyExactPoll({ selectedStudyTaskId: TASK,
23
+ task: { envelope: { taskId: TASK, workspaceId: 'other' } } }, TASK, WORKSPACE));
24
+ });
25
+ //# sourceMappingURL=studyExactTaskSelector.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studyExactTaskSelector.test.js","sourceRoot":"","sources":["../src/studyExactTaskSelector.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEzF,MAAM,IAAI,GAAG,sCAAsC,CAAC;AACpD,MAAM,SAAS,GAAG,sCAAsC,CAAC;AAEzD,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAC7C,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;AACnG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uEAAuE,EAAE,GAAG,EAAE;IACjF,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;IACrH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IACzF,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAA2B,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAChJ,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AACzH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uEAAuE,EAAE,GAAG,EAAE;IACjF,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC;IACpE,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACtG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5G,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,mBAAmB,EAAE,IAAI;QAClE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACvF,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,mBAAmB,EAAE,IAAI;QAClE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACpF,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dharma-ai-labs/agent-fabric",
3
- "version": "0.2.112",
3
+ "version": "0.2.113",
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",