@namzu/sdk 13.0.0 → 14.0.0
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 +208 -0
- package/dist/agents/runAgent.d.ts +9 -0
- package/dist/agents/runAgent.d.ts.map +1 -1
- package/dist/agents/runAgent.js.map +1 -1
- package/dist/connector/mcp/__tests__/a-transport-forgets-its-listeners.test.d.ts +2 -0
- package/dist/connector/mcp/__tests__/a-transport-forgets-its-listeners.test.d.ts.map +1 -0
- package/dist/connector/mcp/__tests__/a-transport-forgets-its-listeners.test.js +101 -0
- package/dist/connector/mcp/__tests__/a-transport-forgets-its-listeners.test.js.map +1 -0
- package/dist/connector/mcp/http-sse.d.ts +10 -0
- package/dist/connector/mcp/http-sse.d.ts.map +1 -1
- package/dist/connector/mcp/http-sse.js +16 -0
- package/dist/connector/mcp/http-sse.js.map +1 -1
- package/dist/connector/mcp/stdio.d.ts +12 -0
- package/dist/connector/mcp/stdio.d.ts.map +1 -1
- package/dist/connector/mcp/stdio.js +33 -1
- package/dist/connector/mcp/stdio.js.map +1 -1
- package/dist/connector/mcp/streamable-http.d.ts +2 -0
- package/dist/connector/mcp/streamable-http.d.ts.map +1 -1
- package/dist/connector/mcp/streamable-http.js +13 -1
- package/dist/connector/mcp/streamable-http.js.map +1 -1
- package/dist/contracts/__tests__/an-id-the-sdk-mints-passes-its-own-schema.test.d.ts +2 -0
- package/dist/contracts/__tests__/an-id-the-sdk-mints-passes-its-own-schema.test.d.ts.map +1 -0
- package/dist/contracts/__tests__/an-id-the-sdk-mints-passes-its-own-schema.test.js +73 -0
- package/dist/contracts/__tests__/an-id-the-sdk-mints-passes-its-own-schema.test.js.map +1 -0
- package/dist/contracts/schemas.d.ts +15 -0
- package/dist/contracts/schemas.d.ts.map +1 -1
- package/dist/contracts/schemas.js +18 -1
- package/dist/contracts/schemas.js.map +1 -1
- package/dist/manager/agent/__tests__/an-env-reaches-the-child-it-was-set-for.test.d.ts +2 -0
- package/dist/manager/agent/__tests__/an-env-reaches-the-child-it-was-set-for.test.d.ts.map +1 -0
- package/dist/manager/agent/__tests__/an-env-reaches-the-child-it-was-set-for.test.js +159 -0
- package/dist/manager/agent/__tests__/an-env-reaches-the-child-it-was-set-for.test.js.map +1 -0
- package/dist/manager/agent/lifecycle.d.ts.map +1 -1
- package/dist/manager/agent/lifecycle.js +39 -4
- package/dist/manager/agent/lifecycle.js.map +1 -1
- package/dist/manager/index.d.ts +2 -0
- package/dist/manager/index.d.ts.map +1 -1
- package/dist/manager/index.js +1 -0
- package/dist/manager/index.js.map +1 -1
- package/dist/manager/project/__tests__/a-closed-workspace-takes-no-work.test.d.ts +2 -0
- package/dist/manager/project/__tests__/a-closed-workspace-takes-no-work.test.d.ts.map +1 -0
- package/dist/manager/project/__tests__/a-closed-workspace-takes-no-work.test.js +208 -0
- package/dist/manager/project/__tests__/a-closed-workspace-takes-no-work.test.js.map +1 -0
- package/dist/manager/project/lifecycle.d.ts +66 -0
- package/dist/manager/project/lifecycle.d.ts.map +1 -0
- package/dist/manager/project/lifecycle.js +125 -0
- package/dist/manager/project/lifecycle.js.map +1 -0
- package/dist/public-runtime.d.ts +2 -2
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +7 -1
- package/dist/public-runtime.js.map +1 -1
- package/dist/session/errors.d.ts +71 -1
- package/dist/session/errors.d.ts.map +1 -1
- package/dist/session/errors.js +50 -0
- package/dist/session/errors.js.map +1 -1
- package/dist/session/handoff/broadcast.d.ts.map +1 -1
- package/dist/session/handoff/broadcast.js +4 -5
- package/dist/session/handoff/broadcast.js.map +1 -1
- package/dist/session/handoff/single.d.ts.map +1 -1
- package/dist/session/handoff/single.js +5 -4
- package/dist/session/handoff/single.js.map +1 -1
- package/dist/session/migration/__tests__/a-migrated-project-id-is-an-id.test.d.ts +2 -0
- package/dist/session/migration/__tests__/a-migrated-project-id-is-an-id.test.d.ts.map +1 -0
- package/dist/session/migration/__tests__/a-migrated-project-id-is-an-id.test.js +75 -0
- package/dist/session/migration/__tests__/a-migrated-project-id-is-an-id.test.js.map +1 -0
- package/dist/session/migration/filesystem.d.ts.map +1 -1
- package/dist/session/migration/filesystem.js +24 -0
- package/dist/session/migration/filesystem.js.map +1 -1
- package/dist/store/session/__tests__/a-workspace-can-be-configured.test.d.ts +2 -0
- package/dist/store/session/__tests__/a-workspace-can-be-configured.test.d.ts.map +1 -0
- package/dist/store/session/__tests__/a-workspace-can-be-configured.test.js +149 -0
- package/dist/store/session/__tests__/a-workspace-can-be-configured.test.js.map +1 -0
- package/dist/store/session/disk.d.ts +6 -2
- package/dist/store/session/disk.d.ts.map +1 -1
- package/dist/store/session/disk.js +120 -3
- package/dist/store/session/disk.js.map +1 -1
- package/dist/store/session/memory.d.ts +6 -2
- package/dist/store/session/memory.d.ts.map +1 -1
- package/dist/store/session/memory.js +78 -3
- package/dist/store/session/memory.js.map +1 -1
- package/dist/tools/coordinator/agent.d.ts.map +1 -1
- package/dist/tools/coordinator/agent.js +7 -0
- package/dist/tools/coordinator/agent.js.map +1 -1
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +6 -0
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/types/agent/base.d.ts +22 -0
- package/dist/types/agent/base.d.ts.map +1 -1
- package/dist/types/project/entity.d.ts +17 -0
- package/dist/types/project/entity.d.ts.map +1 -1
- package/dist/types/session/store.d.ts +80 -1
- package/dist/types/session/store.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/agents/runAgent.ts +9 -0
- package/src/connector/mcp/__tests__/a-transport-forgets-its-listeners.test.ts +127 -0
- package/src/connector/mcp/http-sse.ts +17 -0
- package/src/connector/mcp/stdio.ts +34 -1
- package/src/connector/mcp/streamable-http.ts +15 -1
- package/src/contracts/__tests__/an-id-the-sdk-mints-passes-its-own-schema.test.ts +84 -0
- package/src/contracts/schemas.ts +18 -1
- package/src/manager/agent/__tests__/an-env-reaches-the-child-it-was-set-for.test.ts +196 -0
- package/src/manager/agent/lifecycle.ts +42 -6
- package/src/manager/index.ts +3 -0
- package/src/manager/project/__tests__/a-closed-workspace-takes-no-work.test.ts +268 -0
- package/src/manager/project/lifecycle.ts +160 -0
- package/src/public-runtime.ts +9 -0
- package/src/session/errors.ts +85 -1
- package/src/session/handoff/broadcast.ts +4 -5
- package/src/session/handoff/single.ts +5 -4
- package/src/session/migration/__tests__/a-migrated-project-id-is-an-id.test.ts +92 -0
- package/src/session/migration/filesystem.ts +28 -0
- package/src/store/session/__tests__/a-workspace-can-be-configured.test.ts +210 -0
- package/src/store/session/disk.ts +142 -4
- package/src/store/session/memory.ts +95 -4
- package/src/tools/coordinator/agent.ts +7 -0
- package/src/tools/coordinator/index.ts +6 -0
- package/src/types/agent/base.ts +23 -0
- package/src/types/project/entity.ts +18 -0
- package/src/types/session/store.ts +95 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/session/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/session/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/session/errors.js
CHANGED
|
@@ -125,4 +125,54 @@ export class ThreadNotEmptyError extends Error {
|
|
|
125
125
|
this.details = details;
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Raised when an ingress path is asked to attach work to an archived Project.
|
|
130
|
+
*
|
|
131
|
+
* The sibling of {@link ThreadClosedError}, on the level that survives. A
|
|
132
|
+
* closed workspace is a decision by its owner, and the paths that create
|
|
133
|
+
* sessions have to be able to see it — otherwise "archived" is a word in a
|
|
134
|
+
* listing rather than a state of the system.
|
|
135
|
+
*/
|
|
136
|
+
export class ProjectClosedError extends Error {
|
|
137
|
+
details;
|
|
138
|
+
constructor(details) {
|
|
139
|
+
super(`Project ${details.projectId} is archived; operation '${details.op}' rejected`);
|
|
140
|
+
this.name = 'ProjectClosedError';
|
|
141
|
+
this.details = details;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Raised by the project archive path when sessions are still attached and not
|
|
146
|
+
* in a terminal state.
|
|
147
|
+
*
|
|
148
|
+
* Archiving does not cascade and does not kill anything: a live session is a
|
|
149
|
+
* running agent, and closing its workspace out from under it would strand
|
|
150
|
+
* work whose owner is still watching. The caller settles the sessions first.
|
|
151
|
+
* `blockingSessions` is truncated to {@link PROJECT_NOT_EMPTY_SAMPLE_LIMIT};
|
|
152
|
+
* `totalBlockingSessions` is the real count.
|
|
153
|
+
*/
|
|
154
|
+
export const PROJECT_NOT_EMPTY_SAMPLE_LIMIT = 50;
|
|
155
|
+
export class ProjectNotEmptyError extends Error {
|
|
156
|
+
details;
|
|
157
|
+
constructor(details) {
|
|
158
|
+
super(`Project ${details.projectId} ${details.op} blocked: ${details.totalBlockingSessions} session(s) still attached`);
|
|
159
|
+
this.name = 'ProjectNotEmptyError';
|
|
160
|
+
this.details = details;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Raised when a project status write loses a compare-and-set.
|
|
165
|
+
*
|
|
166
|
+
* The sibling of {@link StaleSessionError}: the caller re-reads and decides
|
|
167
|
+
* again, because the project it was about to close is not the project on
|
|
168
|
+
* disk.
|
|
169
|
+
*/
|
|
170
|
+
export class StaleProjectError extends Error {
|
|
171
|
+
details;
|
|
172
|
+
constructor(details) {
|
|
173
|
+
super(`Project ${details.projectId} was modified concurrently: expected ownerVersion ${details.expectedOwnerVersion}, found ${details.actualOwnerVersion}`);
|
|
174
|
+
this.name = 'StaleProjectError';
|
|
175
|
+
this.details = details;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
128
178
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/session/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACrC,OAAO,CAGf;IAED,YAAY,OAAkD;QAC7D,KAAK,CAAC,+BAA+B,OAAO,CAAC,SAAS,aAAa,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QACtF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAA;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACnC,OAAO,CAGf;IAED,YAAY,OAAkE;QAC7E,KAAK,CACJ,uCAAuC,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAC7F,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACtC,OAAO,CAIf;IAED,YAAY,OAAoE;QAC/E,KAAK,CAAC,qBAAqB,OAAO,CAAC,IAAI,cAAc,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;QAClE,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED;;;;;;GAMG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACjC,OAAO,CAIf;IAED,YAAY,OAA+E;QAC1F,KAAK,CACJ,gBAAgB,OAAO,CAAC,QAAQ,2BAA2B,OAAO,CAAC,eAAe,YAAY,OAAO,CAAC,aAAa,EAAE,CACrH,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAClC,OAAO,CAIf;IAED,YAAY,OAAiF;QAC5F,KAAK,CACJ,iBAAiB,OAAO,CAAC,SAAS,2BAA2B,OAAO,CAAC,eAAe,YAAY,OAAO,CAAC,aAAa,uEAAuE,CAC5L,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED;;;;;GAKG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAClC,OAAO,CAGf;IAED,YAAY,OAA2C;QACtD,KAAK,CAAC,UAAU,OAAO,CAAC,QAAQ,4BAA4B,OAAO,CAAC,EAAE,YAAY,CAAC,CAAA;QACnF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAA;AAE/C,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACpC,OAAO,CAMf;IAED,YAAY,OAMX;QACA,KAAK,CACJ,UAAU,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,EAAE,aAAa,OAAO,CAAC,qBAAqB,4BAA4B,CAC9G,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/session/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../../src/session/handoff/broadcast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../../src/session/handoff/broadcast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,KAAK,EAAa,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAGnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAIhE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG9E,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,YAAY,CAAA;IACnB,iBAAiB,EAAE,wBAAwB,CAAA;IAC3C,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,MAAM,EAAE,gBAAgB,CAAA;IACxB,SAAS,CAAC,EAAE,iBAAiB,CAAA;IAC7B;;;;OAIG;IACH,aAAa,EAAE,aAAa,CAAA;CAC5B;AAgBD;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC5C,IAAI,EAAE,oBAAoB,EAC1B,WAAW,EAAE,SAAS,iBAAiB,EAAE,EACzC,QAAQ,EAAE,QAAQ,GAChB,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAuOpC"}
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
* source → idle
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
|
+
import { requireOpenProject } from '../../manager/project/lifecycle.js';
|
|
23
24
|
import { TenantIsolationError } from '../errors.js';
|
|
24
25
|
import { NOOP_RUN_STATUS_RESOLVER } from './single.js';
|
|
25
26
|
import { HandoffLockRejected, HandoffVersionConflict } from './version.js';
|
|
@@ -126,11 +127,9 @@ export async function executeBroadcastHandoff(deps, assignments, tenantId) {
|
|
|
126
127
|
throw new HandoffLockRejected({ sessionId: source.id, reason: blocking.reason });
|
|
127
128
|
}
|
|
128
129
|
// 6. Capacity — width + depth. Width covers N new children in one shot
|
|
129
|
-
// (§6.5); depth covers `source.depth + 1 ≤ maxDepth`.
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
throw new Error(`Project ${source.projectId} not found`);
|
|
133
|
-
}
|
|
130
|
+
// (§6.5); depth covers `source.depth + 1 ≤ maxDepth`. The same read is
|
|
131
|
+
// the archive gate: a closed workspace takes no broadcast either.
|
|
132
|
+
const project = await requireOpenProject(deps.store, source.projectId, tenantId, 'broadcast');
|
|
134
133
|
await deps.capacity.validateWidth(source.id, assignments.length, project.config.maxDelegationWidth, tenantId);
|
|
135
134
|
await deps.capacity.validateDepth(source.id, project.config.maxDelegationDepth, tenantId);
|
|
136
135
|
// 7. CAS → source `idle → locked`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcast.js","sourceRoot":"","sources":["../../../src/session/handoff/broadcast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"broadcast.js","sourceRoot":"","sources":["../../../src/session/handoff/broadcast.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single.d.ts","sourceRoot":"","sources":["../../../src/session/handoff/single.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"single.d.ts","sourceRoot":"","sources":["../../../src/session/handoff/single.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAIhE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAGnD;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IACjC;;;OAGG;IACH,WAAW,CACV,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,GAChB,OAAO,CAAC;QAAE,MAAM,EAAE,YAAY,GAAG,cAAc,GAAG,oBAAoB,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;CACnF;AAED,wGAAwG;AACxG,eAAO,MAAM,wBAAwB,EAAE,iBAItC,CAAA;AAED,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,YAAY,CAAA;IACnB,iBAAiB,EAAE,wBAAwB,CAAA;IAC3C,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,MAAM,EAAE,gBAAgB,CAAA;IACxB,SAAS,CAAC,EAAE,iBAAiB,CAAA;IAC7B;;;;OAIG;IACH,aAAa,EAAE,aAAa,CAAA;CAC5B;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACzC,IAAI,EAAE,iBAAiB,EACvB,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,QAAQ,GAChB,OAAO,CAAC,cAAc,CAAC,CAqKzB"}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* appended `previousActors` + bumped `ownerVersion`.
|
|
20
20
|
* 9. Emit `onCommitted` with the new version.
|
|
21
21
|
*/
|
|
22
|
+
import { requireOpenProject } from '../../manager/project/lifecycle.js';
|
|
22
23
|
import { TenantIsolationError } from '../errors.js';
|
|
23
24
|
import { HandoffLockRejected, HandoffVersionConflict } from './version.js';
|
|
24
25
|
/** Null resolver — treats every session as unblocked. Used by tests that do not exercise Run fan-in. */
|
|
@@ -86,10 +87,10 @@ export async function executeSingleHandoff(deps, assignment, tenantId) {
|
|
|
86
87
|
// ownership of the same session. Width only applies to broadcast).
|
|
87
88
|
// For `single` we still validate depth to future-proof should the flow
|
|
88
89
|
// evolve into a branch variant.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
90
|
+
// The same read is the archive gate: an archived workspace accepts no
|
|
91
|
+
// handoff either. Transferring ownership into a closed workspace would
|
|
92
|
+
// be a new owner for work its project says is finished.
|
|
93
|
+
const project = await requireOpenProject(deps.store, source.projectId, tenantId, 'handoff');
|
|
93
94
|
await deps.capacity.validateDepth(source.id, project.config.maxDelegationDepth, tenantId);
|
|
94
95
|
// 5. CAS → `idle → locked`.
|
|
95
96
|
if (source.ownerVersion !== assignment.expectedOwnerVersion) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single.js","sourceRoot":"","sources":["../../../src/session/handoff/single.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"single.js","sourceRoot":"","sources":["../../../src/session/handoff/single.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a-migrated-project-id-is-an-id.test.d.ts","sourceRoot":"","sources":["../../../../src/session/migration/__tests__/a-migrated-project-id-is-an-id.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { afterEach, describe, expect, it } from 'vitest';
|
|
5
|
+
import { ProjectIdSchema } from '../../../contracts/schemas.js';
|
|
6
|
+
import { FilesystemMigrationError } from '../errors.js';
|
|
7
|
+
import { DefaultFilesystemMigrator, NOOP_FILESYSTEM_MIGRATION_SINK } from '../filesystem.js';
|
|
8
|
+
/**
|
|
9
|
+
* The v0.2.0 migration is the only place a `ProjectId` is built from data
|
|
10
|
+
* instead of generated: it takes a legacy `thd_*` folder name off disk and
|
|
11
|
+
* mints `prj_legacy_<that name>`. The only check the name had passed was
|
|
12
|
+
* `startsWith('thd_')`, so a folder named `thd_Not An Id` produced a project
|
|
13
|
+
* id that satisfies the TypeScript type, is written into the new layout as a
|
|
14
|
+
* directory name, and is rejected by the SDK's own `ProjectIdSchema`.
|
|
15
|
+
*
|
|
16
|
+
* It refuses such a folder rather than skipping it. Skipping would leave that
|
|
17
|
+
* thread's runs on disk and unaddressable, write the completion marker anyway,
|
|
18
|
+
* and return `kind: 'migrated'` with the thread missing from the list — the
|
|
19
|
+
* failure shape this codebase keeps meeting, where the run did not fail, it
|
|
20
|
+
* succeeded while quietly not doing what it said.
|
|
21
|
+
*/
|
|
22
|
+
const dirs = [];
|
|
23
|
+
afterEach(async () => {
|
|
24
|
+
await Promise.all(dirs.map((d) => rm(d, { recursive: true, force: true })));
|
|
25
|
+
dirs.length = 0;
|
|
26
|
+
});
|
|
27
|
+
async function seed(root, folder) {
|
|
28
|
+
const dir = join(root, 'threads', folder, 'runs', 'run_seed');
|
|
29
|
+
await mkdir(dir, { recursive: true });
|
|
30
|
+
await writeFile(join(dir, 'run.json'), JSON.stringify({ id: 'run_seed' }), 'utf-8');
|
|
31
|
+
}
|
|
32
|
+
async function newRoot(tag) {
|
|
33
|
+
const root = await mkdtemp(join(tmpdir(), `namzu-mig-${tag}-`));
|
|
34
|
+
dirs.push(root);
|
|
35
|
+
return root;
|
|
36
|
+
}
|
|
37
|
+
describe('the migration only mints project ids that are project ids', () => {
|
|
38
|
+
it('refuses a legacy folder whose name is not a thread id, and names it', async () => {
|
|
39
|
+
const root = await newRoot('badname');
|
|
40
|
+
await seed(root, 'thd_Not An Id');
|
|
41
|
+
const error = await new DefaultFilesystemMigrator(NOOP_FILESYSTEM_MIGRATION_SINK)
|
|
42
|
+
.migrate(root)
|
|
43
|
+
.then(() => null, (e) => e);
|
|
44
|
+
expect(error).toBeInstanceOf(FilesystemMigrationError);
|
|
45
|
+
const details = error.details;
|
|
46
|
+
expect(details.op).toBe('validate_thread_id');
|
|
47
|
+
// An operator has to be able to go and look at the folder.
|
|
48
|
+
expect(details.path).toContain('thd_Not An Id');
|
|
49
|
+
});
|
|
50
|
+
it('refuses rather than reporting a migration that left a thread behind', async () => {
|
|
51
|
+
// The seductive alternative is `continue`. This pins why it is wrong:
|
|
52
|
+
// the good thread would migrate, the result would say `migrated`, and
|
|
53
|
+
// the bad one would be absent from `migratedThreads` with no error.
|
|
54
|
+
const root = await newRoot('partial');
|
|
55
|
+
await seed(root, 'thd_a1b2c3d4e5f6');
|
|
56
|
+
await seed(root, 'thd_UPPER');
|
|
57
|
+
await expect(new DefaultFilesystemMigrator(NOOP_FILESYSTEM_MIGRATION_SINK).migrate(root)).rejects.toBeInstanceOf(FilesystemMigrationError);
|
|
58
|
+
});
|
|
59
|
+
it('still migrates a folder whose name is a thread id, and the id it mints validates', async () => {
|
|
60
|
+
// The guard must refuse only what is not an id. A guard that refuses
|
|
61
|
+
// everything passes the two cases above and breaks migration entirely.
|
|
62
|
+
const root = await newRoot('good');
|
|
63
|
+
await seed(root, 'thd_a1b2c3d4e5f6');
|
|
64
|
+
const result = await new DefaultFilesystemMigrator(NOOP_FILESYSTEM_MIGRATION_SINK).migrate(root);
|
|
65
|
+
expect(result.kind).toBe('migrated');
|
|
66
|
+
expect(result.migratedThreads.map((m) => m.legacyThreadId)).toEqual(['thd_a1b2c3d4e5f6']);
|
|
67
|
+
for (const { newProjectId } of result.migratedThreads) {
|
|
68
|
+
expect({ newProjectId, ok: ProjectIdSchema.safeParse(newProjectId).success }).toEqual({
|
|
69
|
+
newProjectId,
|
|
70
|
+
ok: true,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=a-migrated-project-id-is-an-id.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a-migrated-project-id-is-an-id.test.js","sourceRoot":"","sources":["../../../../src/session/migration/__tests__/a-migrated-project-id-is-an-id.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../src/session/migration/filesystem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAKtE;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAA2B,SAAS,CAAA;AAE1E,mEAAmE;AACnE,eAAO,MAAM,6BAA6B,gBAAgB,CAAA;AAE1D,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,UAAU,CAAA;AAExC,4CAA4C;AAC5C,eAAO,MAAM,eAAe,QAA+B,CAAA;AAE3D,oDAAoD;AACpD,eAAO,MAAM,aAAa,QAAmC,CAAA;AAK7D;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACzC,IAAI,EAAE,UAAU,GAAG,kBAAkB,GAAG,gBAAgB,CAAA;IACxD,eAAe,EAAE,SAAS;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,SAAS,CAAA;KAAE,EAAE,CAAA;IAC/E,UAAU,EAAE,MAAM,CAAA;IAClB,EAAE,EAAE,IAAI,CAAA;CACR;AAED,0EAA0E;AAC1E,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,qBAAqB,CAAA;IAC3B,MAAM,EAAE,yBAAyB,CAAA;CACjC;AAED,yCAAyC;AACzC,MAAM,WAAW,uBAAuB;IACvC,IAAI,CAAC,KAAK,EAAE,wBAAwB,GAAG,IAAI,CAAA;CAC3C;AAED,eAAO,MAAM,8BAA8B,EAAE,uBAE5C,CAAA;AAED,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IAClC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAA;CAC5D;AAyCD;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IACvD,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,GAAE,uBAAwD;IAErF,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../src/session/migration/filesystem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAKtE;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAA2B,SAAS,CAAA;AAE1E,mEAAmE;AACnE,eAAO,MAAM,6BAA6B,gBAAgB,CAAA;AAE1D,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,UAAU,CAAA;AAExC,4CAA4C;AAC5C,eAAO,MAAM,eAAe,QAA+B,CAAA;AAE3D,oDAAoD;AACpD,eAAO,MAAM,aAAa,QAAmC,CAAA;AAK7D;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACzC,IAAI,EAAE,UAAU,GAAG,kBAAkB,GAAG,gBAAgB,CAAA;IACxD,eAAe,EAAE,SAAS;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,SAAS,CAAA;KAAE,EAAE,CAAA;IAC/E,UAAU,EAAE,MAAM,CAAA;IAClB,EAAE,EAAE,IAAI,CAAA;CACR;AAED,0EAA0E;AAC1E,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,qBAAqB,CAAA;IAC3B,MAAM,EAAE,yBAAyB,CAAA;CACjC;AAED,yCAAyC;AACzC,MAAM,WAAW,uBAAuB;IACvC,IAAI,CAAC,KAAK,EAAE,wBAAwB,GAAG,IAAI,CAAA;CAC3C;AAED,eAAO,MAAM,8BAA8B,EAAE,uBAE5C,CAAA;AAED,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IAClC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAA;CAC5D;AAyCD;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IACvD,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,GAAE,uBAAwD;IAErF,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;CAsPlE"}
|
|
@@ -169,6 +169,30 @@ export class DefaultFilesystemMigrator {
|
|
|
169
169
|
continue;
|
|
170
170
|
const legacyThreadId = entry;
|
|
171
171
|
const suffix = legacyThreadId.slice('thd_'.length);
|
|
172
|
+
// The suffix comes off the filesystem, and `startsWith('thd_')`
|
|
173
|
+
// is the only thing it has passed. A folder named `thd_Not An
|
|
174
|
+
// Id` mints `prj_legacy_Not An Id`: structurally a `ProjectId`,
|
|
175
|
+
// accepted by no validator, and now a directory name in the new
|
|
176
|
+
// layout. The migration is the one place a project id is built
|
|
177
|
+
// from data rather than generated, so it is the one place the
|
|
178
|
+
// id contract has to be checked.
|
|
179
|
+
//
|
|
180
|
+
// (Not a containment check — it cannot be one. `readdir` yields
|
|
181
|
+
// path components, which hold no separator, and `..` is never
|
|
182
|
+
// among them; `prj_legacy_..` is a literal name, not a parent
|
|
183
|
+
// reference. Nothing here can leave the root.)
|
|
184
|
+
//
|
|
185
|
+
// It refuses rather than skipping. A skipped folder is a legacy
|
|
186
|
+
// thread whose runs are still on disk and no longer addressable,
|
|
187
|
+
// with nothing in the result saying so — and the marker would be
|
|
188
|
+
// written as if the migration were complete.
|
|
189
|
+
if (!/^[a-z0-9]+$/.test(suffix)) {
|
|
190
|
+
throw new FilesystemMigrationError({
|
|
191
|
+
op: 'validate_thread_id',
|
|
192
|
+
path: join(threadsDir, legacyThreadId),
|
|
193
|
+
cause: new Error(`Legacy thread folder '${legacyThreadId}' is not a thread id: expected 'thd_' followed by lowercase alphanumerics. It is refused rather than migrated because the name is used as a directory name.`),
|
|
194
|
+
});
|
|
195
|
+
}
|
|
172
196
|
const newProjectId = `${LEGACY_DEFAULT_PROJECT_PREFIX}${suffix}`;
|
|
173
197
|
const legacyRunsDir = join(threadsDir, legacyThreadId, 'runs');
|
|
174
198
|
const newProjectDir = join(projectsDir, newProjectId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../src/session/migration/filesystem.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../src/session/migration/filesystem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEjG;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAAiC,CAAA;AAE1E,mEAAmE;AACnE,MAAM,CAAC,MAAM,6BAA6B,GAAG,aAAa,CAAA;AAE1D,8DAA8D;AAC9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAA;AAExC,4CAA4C;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;AAE3D,oDAAoD;AACpD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;AAE7D,2EAA2E;AAC3E,MAAM,YAAY,GAAG,GAAG,CAAA;AAyBxB,MAAM,CAAC,MAAM,8BAA8B,GAA4B;IACtE,IAAI,KAAI,CAAC;CACT,CAAA;AA8CD;;;;GAIG;AACH,MAAM,OAAO,yBAAyB;IACR;IAA7B,YAA6B,OAAgC,8BAA8B;QAA9D,SAAI,GAAJ,IAAI,CAA0D;IAAG,CAAC;IAE/F,KAAK,CAAC,OAAO,CAAC,OAAe;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;QAE7C,uEAAuE;QACvE,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAA;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACd,OAAO;gBACN,IAAI,EAAE,kBAAkB;gBACxB,eAAe,EAAE,EAAE;gBACnB,UAAU;gBACV,EAAE,EAAE,QAAQ,CAAC,EAAE;aACf,CAAA;QACF,CAAC;QAED,sEAAsE;QACtE,iEAAiE;QACjE,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAA;QACvD,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;YACrB,IAAI,CAAC;gBACJ,MAAM,WAAW,CAAC,UAAU,EAAE;oBAC7B,OAAO,EAAE,iBAAiB;oBAC1B,EAAE;oBACF,eAAe,EAAE,EAAE;iBACnB,CAAC,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,wBAAwB,CAAC;oBAClC,EAAE,EAAE,cAAc;oBAClB,IAAI,EAAE,UAAU;oBAChB,KAAK;iBACL,CAAC,CAAA;YACH,CAAC;YACD,OAAO;gBACN,IAAI,EAAE,gBAAgB;gBACtB,eAAe,EAAE,EAAE;gBACnB,UAAU;gBACV,EAAE;aACF,CAAA;QACF,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC;YACJ,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAA;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAA;YAChD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvB,oEAAoE;gBACpE,MAAM,KAAK,CAAC,YAAY,CAAC,CAAA;gBACzB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAA;gBAC3C,IAAI,MAAM,EAAE,CAAC;oBACZ,OAAO;wBACN,IAAI,EAAE,kBAAkB;wBACxB,eAAe,EAAE,EAAE;wBACnB,UAAU;wBACV,EAAE,EAAE,MAAM,CAAC,EAAE;qBACb,CAAA;gBACF,CAAC;gBACD,gEAAgE;gBAChE,+DAA+D;gBAC/D,yCAAyC;gBACzC,MAAM,IAAI,wBAAwB,CAAC;oBAClC,EAAE,EAAE,cAAc;oBAClB,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,GAAG;iBACV,CAAC,CAAA;YACH,CAAC;YACD,MAAM,IAAI,wBAAwB,CAAC;gBAClC,EAAE,EAAE,cAAc;gBAClB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,GAAG;aACV,CAAC,CAAA;QACH,CAAC;QAED,IAAI,CAAC;YACJ,yCAAyC;YACzC,IAAI,OAAiB,CAAA;YACrB,IAAI,CAAC;gBACJ,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;YACpC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,wBAAwB,CAAC;oBAClC,EAAE,EAAE,mBAAmB;oBACvB,IAAI,EAAE,UAAU;oBAChB,KAAK;iBACL,CAAC,CAAA;YACH,CAAC;YAED,MAAM,QAAQ,GAA0D,EAAE,CAAA;YAC1E,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;YAEtB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC7B,8DAA8D;gBAC9D,2DAA2D;gBAC3D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,SAAQ;gBAEvC,MAAM,cAAc,GAAG,KAAK,CAAA;gBAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBAElD,gEAAgE;gBAChE,8DAA8D;gBAC9D,gEAAgE;gBAChE,gEAAgE;gBAChE,+DAA+D;gBAC/D,8DAA8D;gBAC9D,iCAAiC;gBACjC,EAAE;gBACF,gEAAgE;gBAChE,8DAA8D;gBAC9D,8DAA8D;gBAC9D,+CAA+C;gBAC/C,EAAE;gBACF,gEAAgE;gBAChE,iEAAiE;gBACjE,iEAAiE;gBACjE,6CAA6C;gBAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,wBAAwB,CAAC;wBAClC,EAAE,EAAE,oBAAoB;wBACxB,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC;wBACtC,KAAK,EAAE,IAAI,KAAK,CACf,yBAAyB,cAAc,6JAA6J,CACpM;qBACD,CAAC,CAAA;gBACH,CAAC;gBAED,MAAM,YAAY,GAAG,GAAG,6BAA6B,GAAG,MAAM,EAAe,CAAA;gBAE7E,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAA;gBAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;gBACrD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,yBAAyB,CAAC,CAAA;gBAChF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;gBAE9C,8DAA8D;gBAC9D,IAAI,CAAC;oBACJ,MAAM,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;gBAChD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,MAAM,IAAI,wBAAwB,CAAC;wBAClC,EAAE,EAAE,eAAe;wBACnB,IAAI,EAAE,aAAa;wBACnB,KAAK;qBACL,CAAC,CAAA;gBACH,CAAC;gBAED,gEAAgE;gBAChE,iEAAiE;gBACjE,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,CAAA;gBAC7D,IAAI,gBAAgB,EAAE,CAAC;oBACtB,IAAI,CAAC;wBACJ,MAAM,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;oBACxC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBAChB,MAAM,IAAI,wBAAwB,CAAC;4BAClC,EAAE,EAAE,aAAa;4BACjB,IAAI,EAAE,aAAa;4BACnB,KAAK;yBACL,CAAC,CAAA;oBACH,CAAC;gBACF,CAAC;gBAED,yDAAyD;gBACzD,MAAM,WAAW,GAAqB;oBACrC,EAAE,EAAE,YAAY;oBAChB,QAAQ,EAAE,iBAAiB;oBAC3B,IAAI,EAAE,UAAU,cAAc,EAAE;oBAChC,MAAM,EAAE;wBACP,kBAAkB,EAAE,CAAC;wBACrB,kBAAkB,EAAE,CAAC;wBACrB,oBAAoB,EAAE,EAAE;qBACxB;oBACD,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;oBAC5B,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;oBAC5B,OAAO,EAAE,IAAI;iBACb,CAAA;gBACD,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAA;gBAC3D,IAAI,CAAC;oBACJ,MAAM,eAAe,CAAC,eAAe,EAAE,WAAW,CAAC,CAAA;gBACpD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,MAAM,IAAI,wBAAwB,CAAC;wBAClC,EAAE,EAAE,oBAAoB;wBACxB,IAAI,EAAE,eAAe;wBACrB,KAAK;qBACL,CAAC,CAAA;gBACH,CAAC;gBAED,mEAAmE;gBACnE,MAAM,WAAW,GAAqB;oBACrC,EAAE,EAAE,yBAAyB;oBAC7B,SAAS,EAAE,YAAY;oBACvB,QAAQ,EAAE,iBAAiB;oBAC3B,MAAM,EAAE,MAAM;oBACd,YAAY,EAAE,IAAI;oBAClB,cAAc,EAAE,EAAE;oBAClB,WAAW,EAAE,IAAI;oBACjB,YAAY,EAAE,CAAC;oBACf,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;oBAC5B,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;oBAC5B,OAAO,EAAE,IAAI;iBACb,CAAA;gBACD,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAA;gBAC3D,IAAI,CAAC;oBACJ,MAAM,eAAe,CAAC,eAAe,EAAE,WAAW,CAAC,CAAA;gBACpD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,MAAM,IAAI,wBAAwB,CAAC;wBAClC,EAAE,EAAE,oBAAoB;wBACxB,IAAI,EAAE,eAAe;wBACrB,KAAK;qBACL,CAAC,CAAA;gBACH,CAAC;gBAED,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAA;YAChD,CAAC;YAED,6DAA6D;YAC7D,IAAI,CAAC;gBACJ,MAAM,WAAW,CAAC,UAAU,EAAE;oBAC7B,OAAO,EAAE,iBAAiB;oBAC1B,EAAE,EAAE,GAAG;oBACP,eAAe,EAAE,QAAQ;iBACzB,CAAC,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,wBAAwB,CAAC;oBAClC,EAAE,EAAE,cAAc;oBAClB,IAAI,EAAE,UAAU;oBAChB,KAAK;iBACL,CAAC,CAAA;YACH,CAAC;YAED,MAAM,MAAM,GAA8B;gBACzC,IAAI,EAAE,UAAU;gBAChB,eAAe,EAAE,QAAQ;gBACzB,UAAU;gBACV,EAAE,EAAE,GAAG;aACP,CAAA;YAED,sBAAsB;YACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,CAAA;YAEvD,OAAO,MAAM,CAAA;QACd,CAAC;gBAAS,CAAC;YACV,oEAAoE;YACpE,mEAAmE;YACnE,oCAAoC;YACpC,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAC5D,CAAC;IACF,CAAC;CACD;AAED;;;;;;GAMG;AACH,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,KAAc;IAC9D,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAChE,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,CAAC;QACJ,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1B,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAA;QAChD,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QACnC,MAAM,GAAG,CAAA;IACV,CAAC;AACF,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AACzD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a-workspace-can-be-configured.test.d.ts","sourceRoot":"","sources":["../../../../src/store/session/__tests__/a-workspace-can-be-configured.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { mkdtemp, rm } from 'node:fs/promises';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { afterEach, describe, expect, it } from 'vitest';
|
|
5
|
+
import { TenantIsolationError } from '../../../session/errors.js';
|
|
6
|
+
import { DiskSessionStore } from '../disk.js';
|
|
7
|
+
import { InMemorySessionStore } from '../memory.js';
|
|
8
|
+
/**
|
|
9
|
+
* Every project in existence ran at depth 4 and width 8.
|
|
10
|
+
*
|
|
11
|
+
* The config was hardcoded identically in both stores, `CreateProjectParams`
|
|
12
|
+
* was `{tenantId, name}`, and there was no `updateProject`. So a tenant with
|
|
13
|
+
* several workspaces could not give them different limits — which is most of
|
|
14
|
+
* what having several workspaces is for.
|
|
15
|
+
*
|
|
16
|
+
* Only the two fields something READS are settable. `ProjectConfig` declares
|
|
17
|
+
* eight; five enforcement sites read two of them. Exposing the other six would
|
|
18
|
+
* make dead fields easier to set, and a host that configures a retention policy
|
|
19
|
+
* and gets no error believes retention is on. `maxInterventionDepth` looks like
|
|
20
|
+
* an exception and is not: its three apparent readers are all comments.
|
|
21
|
+
*
|
|
22
|
+
* Both stores are driven by the same cases, because a reference implementation
|
|
23
|
+
* that disagrees with the durable one is worse than having only one.
|
|
24
|
+
*/
|
|
25
|
+
const TENANT = 'tnt_cfg';
|
|
26
|
+
const OTHER = 'tnt_other';
|
|
27
|
+
const dirs = [];
|
|
28
|
+
afterEach(async () => {
|
|
29
|
+
await Promise.all(dirs.map((d) => rm(d, { recursive: true, force: true })));
|
|
30
|
+
dirs.length = 0;
|
|
31
|
+
});
|
|
32
|
+
async function diskStore() {
|
|
33
|
+
const rootDir = await mkdtemp(join(tmpdir(), 'namzu-cfg-'));
|
|
34
|
+
dirs.push(rootDir);
|
|
35
|
+
return new DiskSessionStore({ rootDir });
|
|
36
|
+
}
|
|
37
|
+
const IMPLEMENTATIONS = [
|
|
38
|
+
['in memory', async () => new InMemorySessionStore()],
|
|
39
|
+
['on disk', diskStore],
|
|
40
|
+
];
|
|
41
|
+
describe.each(IMPLEMENTATIONS)('a workspace carries its own limits (%s)', (_name, build) => {
|
|
42
|
+
it('takes the limits it was created with', async () => {
|
|
43
|
+
const store = await build();
|
|
44
|
+
const project = await store.createProject({ tenantId: TENANT, name: 'w', config: { maxDelegationDepth: 2, maxDelegationWidth: 3 } }, TENANT);
|
|
45
|
+
expect(project.config.maxDelegationDepth).toBe(2);
|
|
46
|
+
expect(project.config.maxDelegationWidth).toBe(3);
|
|
47
|
+
});
|
|
48
|
+
it('keeps the defaults for anything not given', async () => {
|
|
49
|
+
const store = await build();
|
|
50
|
+
const project = await store.createProject({ tenantId: TENANT, name: 'w', config: { maxDelegationDepth: 2 } }, TENANT);
|
|
51
|
+
expect(project.config.maxDelegationDepth).toBe(2);
|
|
52
|
+
expect(project.config.maxDelegationWidth).toBe(8);
|
|
53
|
+
});
|
|
54
|
+
it('lets two workspaces of one tenant differ, which is the point', async () => {
|
|
55
|
+
const store = await build();
|
|
56
|
+
const narrow = await store.createProject({ tenantId: TENANT, name: 'narrow', config: { maxDelegationWidth: 1 } }, TENANT);
|
|
57
|
+
const wide = await store.createProject({ tenantId: TENANT, name: 'wide', config: { maxDelegationWidth: 16 } }, TENANT);
|
|
58
|
+
expect(narrow.config.maxDelegationWidth).toBe(1);
|
|
59
|
+
expect(wide.config.maxDelegationWidth).toBe(16);
|
|
60
|
+
});
|
|
61
|
+
it('changes a limit after the fact, and the change is readable back', async () => {
|
|
62
|
+
const store = await build();
|
|
63
|
+
const project = await store.createProject({ tenantId: TENANT, name: 'w' }, TENANT);
|
|
64
|
+
await store.updateProject?.(project.id, { maxDelegationWidth: 12 }, TENANT);
|
|
65
|
+
expect((await store.getProject(project.id, TENANT))?.config.maxDelegationWidth).toBe(12);
|
|
66
|
+
});
|
|
67
|
+
it('leaves a limit it was not asked to change', async () => {
|
|
68
|
+
// Per field, not whole-value: raising the width says nothing about the
|
|
69
|
+
// depth, and resetting it would be an answer to a question nobody asked.
|
|
70
|
+
const store = await build();
|
|
71
|
+
const project = await store.createProject({ tenantId: TENANT, name: 'w', config: { maxDelegationDepth: 2 } }, TENANT);
|
|
72
|
+
await store.updateProject?.(project.id, { maxDelegationWidth: 12 }, TENANT);
|
|
73
|
+
const reloaded = await store.getProject(project.id, TENANT);
|
|
74
|
+
expect(reloaded?.config.maxDelegationDepth).toBe(2);
|
|
75
|
+
expect(reloaded?.config.maxDelegationWidth).toBe(12);
|
|
76
|
+
});
|
|
77
|
+
it('treats an explicitly undefined limit as "leave it", not "clear it"', async () => {
|
|
78
|
+
// The case the per-field guard exists for, and the one a plain spread
|
|
79
|
+
// gets wrong: `{...config}` with an explicit `undefined` key writes the
|
|
80
|
+
// undefined through and erases a limit the caller never mentioned. A
|
|
81
|
+
// caller building an update object programmatically produces exactly
|
|
82
|
+
// this shape.
|
|
83
|
+
const store = await build();
|
|
84
|
+
const project = await store.createProject({ tenantId: TENANT, name: 'w', config: { maxDelegationDepth: 3 } }, TENANT);
|
|
85
|
+
await store.updateProject?.(project.id, { maxDelegationDepth: undefined, maxDelegationWidth: 12 }, TENANT);
|
|
86
|
+
const reloaded = await store.getProject(project.id, TENANT);
|
|
87
|
+
expect(reloaded?.config.maxDelegationDepth).toBe(3);
|
|
88
|
+
expect(reloaded?.config.maxDelegationWidth).toBe(12);
|
|
89
|
+
});
|
|
90
|
+
it('lists what this tenant owns, oldest first', async () => {
|
|
91
|
+
// Eight, spaced past the millisecond `createdAt` is measured in, so this
|
|
92
|
+
// is an assertion about age rather than about the tie-break below. With
|
|
93
|
+
// the sort dropped the disk store returns them in directory order, which
|
|
94
|
+
// is id-ascending — it matches creation order once in 8!.
|
|
95
|
+
const store = await build();
|
|
96
|
+
const created = [];
|
|
97
|
+
for (const name of ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']) {
|
|
98
|
+
created.push(await store.createProject({ tenantId: TENANT, name }, TENANT));
|
|
99
|
+
await new Promise((resolve) => setTimeout(resolve, 2));
|
|
100
|
+
}
|
|
101
|
+
const listed = await store.listProjects?.(TENANT);
|
|
102
|
+
expect(listed?.map((p) => p.id)).toEqual(created.map((p) => p.id));
|
|
103
|
+
});
|
|
104
|
+
it('stays a total order when several are created in the same millisecond', async () => {
|
|
105
|
+
// CI found this and a slower machine could not: on a fast filesystem
|
|
106
|
+
// projects routinely share a `createdAt`, and "oldest first" alone left
|
|
107
|
+
// the rest to `readdir`. A caller paginating a listing that reorders
|
|
108
|
+
// under it sees the same project twice and never sees another.
|
|
109
|
+
const store = await build();
|
|
110
|
+
for (const name of ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']) {
|
|
111
|
+
await store.createProject({ tenantId: TENANT, name }, TENANT);
|
|
112
|
+
}
|
|
113
|
+
const listed = (await store.listProjects?.(TENANT)) ?? [];
|
|
114
|
+
expect(listed).toHaveLength(8);
|
|
115
|
+
for (let i = 1; i < listed.length; i++) {
|
|
116
|
+
const before = listed[i - 1];
|
|
117
|
+
const after = listed[i];
|
|
118
|
+
if (before === undefined || after === undefined)
|
|
119
|
+
throw new Error('short listing');
|
|
120
|
+
const olderFirst = before.createdAt.getTime() < after.createdAt.getTime();
|
|
121
|
+
const tieByName = before.createdAt.getTime() === after.createdAt.getTime() && before.id < after.id;
|
|
122
|
+
expect({ pair: [before.name, after.name], ordered: olderFirst || tieByName }).toEqual({
|
|
123
|
+
pair: [before.name, after.name],
|
|
124
|
+
ordered: true,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
it('omits another tenant from the listing rather than refusing', async () => {
|
|
129
|
+
// A listing is a question about what you own. Refusing would confirm
|
|
130
|
+
// that somebody else's project is there, which is the leak the tenant
|
|
131
|
+
// boundary exists to prevent.
|
|
132
|
+
const store = await build();
|
|
133
|
+
await store.createProject({ tenantId: TENANT, name: 'mine' }, TENANT);
|
|
134
|
+
await store.createProject({ tenantId: OTHER, name: 'theirs' }, OTHER);
|
|
135
|
+
expect((await store.listProjects?.(TENANT))?.map((p) => p.name)).toEqual(['mine']);
|
|
136
|
+
});
|
|
137
|
+
it('refuses to reconfigure another tenant project', async () => {
|
|
138
|
+
// Reading a listing is a question; writing to somebody else's workspace
|
|
139
|
+
// is not, so this one throws.
|
|
140
|
+
const store = await build();
|
|
141
|
+
const theirs = await store.createProject({ tenantId: OTHER, name: 'theirs' }, OTHER);
|
|
142
|
+
await expect(store.updateProject?.(theirs.id, { maxDelegationWidth: 99 }, TENANT)).rejects.toBeInstanceOf(TenantIsolationError);
|
|
143
|
+
});
|
|
144
|
+
it('returns null for a project that does not exist', async () => {
|
|
145
|
+
const store = await build();
|
|
146
|
+
expect(await store.updateProject?.('prj_missing', {}, TENANT)).toBeNull();
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
//# sourceMappingURL=a-workspace-can-be-configured.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a-workspace-can-be-configured.test.js","sourceRoot":"","sources":["../../../../src/store/session/__tests__/a-workspace-can-be-configured.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import type { MessageId, SessionId, TenantId } from '../../types/ids/index.js';
|
|
24
24
|
import type { Message } from '../../types/message/index.js';
|
|
25
|
-
import type { Project } from '../../types/project/entity.js';
|
|
25
|
+
import type { Project, ProjectStatus } from '../../types/project/entity.js';
|
|
26
26
|
import type { Session } from '../../types/session/entity.js';
|
|
27
27
|
import type { ProjectId, SubSessionId, ThreadId } from '../../types/session/ids.js';
|
|
28
28
|
import type { SessionMessage } from '../../types/session/messages.js';
|
|
29
|
-
import type { CreateProjectParams, CreateSessionParams, CreateSubSessionParams, SessionStore, SessionView } from '../../types/session/store.js';
|
|
29
|
+
import type { CreateProjectParams, CreateSessionParams, CreateSubSessionParams, ProjectConfigInput, SessionStore, SessionView } from '../../types/session/store.js';
|
|
30
30
|
import type { SubSession } from '../../types/session/sub-session.js';
|
|
31
31
|
import type { SessionSummaryRef } from '../../types/summary/ref.js';
|
|
32
32
|
/**
|
|
@@ -44,9 +44,13 @@ export declare class DiskSessionStore implements SessionStore {
|
|
|
44
44
|
constructor(config: DiskSessionStoreConfig);
|
|
45
45
|
createProject(params: CreateProjectParams, tenantId: TenantId): Promise<Project>;
|
|
46
46
|
getProject(projectId: ProjectId, tenantId: TenantId): Promise<Project | null>;
|
|
47
|
+
updateProject(projectId: ProjectId, config: ProjectConfigInput, tenantId: TenantId): Promise<Project | null>;
|
|
48
|
+
setProjectStatus(projectId: ProjectId, status: ProjectStatus, tenantId: TenantId, expectedOwnerVersion: number): Promise<Project | null>;
|
|
49
|
+
listProjects(tenantId: TenantId): Promise<readonly Project[]>;
|
|
47
50
|
createSession(params: CreateSessionParams, tenantId: TenantId): Promise<Session>;
|
|
48
51
|
getSession(sessionId: SessionId, tenantId: TenantId): Promise<Session | null>;
|
|
49
52
|
listSessions(threadId: ThreadId, tenantId: TenantId): Promise<readonly Session[]>;
|
|
53
|
+
listSessionsByProject(projectId: ProjectId, tenantId: TenantId): Promise<readonly Session[]>;
|
|
50
54
|
updateSession(session: Session, tenantId: TenantId, expectedOwnerVersion?: number): Promise<void>;
|
|
51
55
|
deleteSession(sessionId: SessionId, tenantId: TenantId): Promise<void>;
|
|
52
56
|
createSubSession(params: CreateSubSessionParams, tenantId: TenantId): Promise<SubSession>;
|