@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.
Files changed (119) hide show
  1. package/CHANGELOG.md +208 -0
  2. package/dist/agents/runAgent.d.ts +9 -0
  3. package/dist/agents/runAgent.d.ts.map +1 -1
  4. package/dist/agents/runAgent.js.map +1 -1
  5. package/dist/connector/mcp/__tests__/a-transport-forgets-its-listeners.test.d.ts +2 -0
  6. package/dist/connector/mcp/__tests__/a-transport-forgets-its-listeners.test.d.ts.map +1 -0
  7. package/dist/connector/mcp/__tests__/a-transport-forgets-its-listeners.test.js +101 -0
  8. package/dist/connector/mcp/__tests__/a-transport-forgets-its-listeners.test.js.map +1 -0
  9. package/dist/connector/mcp/http-sse.d.ts +10 -0
  10. package/dist/connector/mcp/http-sse.d.ts.map +1 -1
  11. package/dist/connector/mcp/http-sse.js +16 -0
  12. package/dist/connector/mcp/http-sse.js.map +1 -1
  13. package/dist/connector/mcp/stdio.d.ts +12 -0
  14. package/dist/connector/mcp/stdio.d.ts.map +1 -1
  15. package/dist/connector/mcp/stdio.js +33 -1
  16. package/dist/connector/mcp/stdio.js.map +1 -1
  17. package/dist/connector/mcp/streamable-http.d.ts +2 -0
  18. package/dist/connector/mcp/streamable-http.d.ts.map +1 -1
  19. package/dist/connector/mcp/streamable-http.js +13 -1
  20. package/dist/connector/mcp/streamable-http.js.map +1 -1
  21. package/dist/contracts/__tests__/an-id-the-sdk-mints-passes-its-own-schema.test.d.ts +2 -0
  22. package/dist/contracts/__tests__/an-id-the-sdk-mints-passes-its-own-schema.test.d.ts.map +1 -0
  23. package/dist/contracts/__tests__/an-id-the-sdk-mints-passes-its-own-schema.test.js +73 -0
  24. package/dist/contracts/__tests__/an-id-the-sdk-mints-passes-its-own-schema.test.js.map +1 -0
  25. package/dist/contracts/schemas.d.ts +15 -0
  26. package/dist/contracts/schemas.d.ts.map +1 -1
  27. package/dist/contracts/schemas.js +18 -1
  28. package/dist/contracts/schemas.js.map +1 -1
  29. package/dist/manager/agent/__tests__/an-env-reaches-the-child-it-was-set-for.test.d.ts +2 -0
  30. package/dist/manager/agent/__tests__/an-env-reaches-the-child-it-was-set-for.test.d.ts.map +1 -0
  31. package/dist/manager/agent/__tests__/an-env-reaches-the-child-it-was-set-for.test.js +159 -0
  32. package/dist/manager/agent/__tests__/an-env-reaches-the-child-it-was-set-for.test.js.map +1 -0
  33. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  34. package/dist/manager/agent/lifecycle.js +39 -4
  35. package/dist/manager/agent/lifecycle.js.map +1 -1
  36. package/dist/manager/index.d.ts +2 -0
  37. package/dist/manager/index.d.ts.map +1 -1
  38. package/dist/manager/index.js +1 -0
  39. package/dist/manager/index.js.map +1 -1
  40. package/dist/manager/project/__tests__/a-closed-workspace-takes-no-work.test.d.ts +2 -0
  41. package/dist/manager/project/__tests__/a-closed-workspace-takes-no-work.test.d.ts.map +1 -0
  42. package/dist/manager/project/__tests__/a-closed-workspace-takes-no-work.test.js +208 -0
  43. package/dist/manager/project/__tests__/a-closed-workspace-takes-no-work.test.js.map +1 -0
  44. package/dist/manager/project/lifecycle.d.ts +66 -0
  45. package/dist/manager/project/lifecycle.d.ts.map +1 -0
  46. package/dist/manager/project/lifecycle.js +125 -0
  47. package/dist/manager/project/lifecycle.js.map +1 -0
  48. package/dist/public-runtime.d.ts +2 -2
  49. package/dist/public-runtime.d.ts.map +1 -1
  50. package/dist/public-runtime.js +7 -1
  51. package/dist/public-runtime.js.map +1 -1
  52. package/dist/session/errors.d.ts +71 -1
  53. package/dist/session/errors.d.ts.map +1 -1
  54. package/dist/session/errors.js +50 -0
  55. package/dist/session/errors.js.map +1 -1
  56. package/dist/session/handoff/broadcast.d.ts.map +1 -1
  57. package/dist/session/handoff/broadcast.js +4 -5
  58. package/dist/session/handoff/broadcast.js.map +1 -1
  59. package/dist/session/handoff/single.d.ts.map +1 -1
  60. package/dist/session/handoff/single.js +5 -4
  61. package/dist/session/handoff/single.js.map +1 -1
  62. package/dist/session/migration/__tests__/a-migrated-project-id-is-an-id.test.d.ts +2 -0
  63. package/dist/session/migration/__tests__/a-migrated-project-id-is-an-id.test.d.ts.map +1 -0
  64. package/dist/session/migration/__tests__/a-migrated-project-id-is-an-id.test.js +75 -0
  65. package/dist/session/migration/__tests__/a-migrated-project-id-is-an-id.test.js.map +1 -0
  66. package/dist/session/migration/filesystem.d.ts.map +1 -1
  67. package/dist/session/migration/filesystem.js +24 -0
  68. package/dist/session/migration/filesystem.js.map +1 -1
  69. package/dist/store/session/__tests__/a-workspace-can-be-configured.test.d.ts +2 -0
  70. package/dist/store/session/__tests__/a-workspace-can-be-configured.test.d.ts.map +1 -0
  71. package/dist/store/session/__tests__/a-workspace-can-be-configured.test.js +149 -0
  72. package/dist/store/session/__tests__/a-workspace-can-be-configured.test.js.map +1 -0
  73. package/dist/store/session/disk.d.ts +6 -2
  74. package/dist/store/session/disk.d.ts.map +1 -1
  75. package/dist/store/session/disk.js +120 -3
  76. package/dist/store/session/disk.js.map +1 -1
  77. package/dist/store/session/memory.d.ts +6 -2
  78. package/dist/store/session/memory.d.ts.map +1 -1
  79. package/dist/store/session/memory.js +78 -3
  80. package/dist/store/session/memory.js.map +1 -1
  81. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  82. package/dist/tools/coordinator/agent.js +7 -0
  83. package/dist/tools/coordinator/agent.js.map +1 -1
  84. package/dist/tools/coordinator/index.d.ts.map +1 -1
  85. package/dist/tools/coordinator/index.js +6 -0
  86. package/dist/tools/coordinator/index.js.map +1 -1
  87. package/dist/types/agent/base.d.ts +22 -0
  88. package/dist/types/agent/base.d.ts.map +1 -1
  89. package/dist/types/project/entity.d.ts +17 -0
  90. package/dist/types/project/entity.d.ts.map +1 -1
  91. package/dist/types/session/store.d.ts +80 -1
  92. package/dist/types/session/store.d.ts.map +1 -1
  93. package/package.json +1 -1
  94. package/src/agents/runAgent.ts +9 -0
  95. package/src/connector/mcp/__tests__/a-transport-forgets-its-listeners.test.ts +127 -0
  96. package/src/connector/mcp/http-sse.ts +17 -0
  97. package/src/connector/mcp/stdio.ts +34 -1
  98. package/src/connector/mcp/streamable-http.ts +15 -1
  99. package/src/contracts/__tests__/an-id-the-sdk-mints-passes-its-own-schema.test.ts +84 -0
  100. package/src/contracts/schemas.ts +18 -1
  101. package/src/manager/agent/__tests__/an-env-reaches-the-child-it-was-set-for.test.ts +196 -0
  102. package/src/manager/agent/lifecycle.ts +42 -6
  103. package/src/manager/index.ts +3 -0
  104. package/src/manager/project/__tests__/a-closed-workspace-takes-no-work.test.ts +268 -0
  105. package/src/manager/project/lifecycle.ts +160 -0
  106. package/src/public-runtime.ts +9 -0
  107. package/src/session/errors.ts +85 -1
  108. package/src/session/handoff/broadcast.ts +4 -5
  109. package/src/session/handoff/single.ts +5 -4
  110. package/src/session/migration/__tests__/a-migrated-project-id-is-an-id.test.ts +92 -0
  111. package/src/session/migration/filesystem.ts +28 -0
  112. package/src/store/session/__tests__/a-workspace-can-be-configured.test.ts +210 -0
  113. package/src/store/session/disk.ts +142 -4
  114. package/src/store/session/memory.ts +95 -4
  115. package/src/tools/coordinator/agent.ts +7 -0
  116. package/src/tools/coordinator/index.ts +6 -0
  117. package/src/types/agent/base.ts +23 -0
  118. package/src/types/project/entity.ts +18 -0
  119. 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":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/session/errors.ts"],"names":[],"mappings":"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"}
@@ -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;AAEH,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,CAyOpC"}
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
- const project = await deps.store.getProject(source.projectId, tenantId);
131
- if (!project) {
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":"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"}
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;AAEH,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"}
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
- const project = await deps.store.getProject(source.projectId, tenantId);
90
- if (!project) {
91
- throw new Error(`Project ${source.projectId} not found`);
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":"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"}
1
+ {"version":3,"file":"single.js","sourceRoot":"","sources":["../../../src/session/handoff/single.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=a-migrated-project-id-is-an-id.test.d.ts.map
@@ -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;CA0NlE"}
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":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=a-workspace-can-be-configured.test.d.ts.map
@@ -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>;