@oscharko-dev/keiko-server 0.2.7 → 0.2.9
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/dist/.tsbuildinfo +1 -1
- package/dist/chat-handlers.d.ts +18 -2
- package/dist/chat-handlers.d.ts.map +1 -1
- package/dist/chat-handlers.js +185 -3
- package/dist/command-runner-errors.d.ts +17 -0
- package/dist/command-runner-errors.d.ts.map +1 -0
- package/dist/command-runner-errors.js +37 -0
- package/dist/command-runner-evidence.d.ts +23 -0
- package/dist/command-runner-evidence.d.ts.map +1 -0
- package/dist/command-runner-evidence.js +69 -0
- package/dist/command-runner-routes.d.ts +7 -0
- package/dist/command-runner-routes.d.ts.map +1 -0
- package/dist/command-runner-routes.js +175 -0
- package/dist/command-runner.d.ts +29 -0
- package/dist/command-runner.d.ts.map +1 -0
- package/dist/command-runner.js +348 -0
- package/dist/conversation-prompt.d.ts +2 -2
- package/dist/conversation-prompt.d.ts.map +1 -1
- package/dist/conversation-prompt.js +17 -1
- package/dist/csp.d.ts.map +1 -1
- package/dist/csp.js +3 -0
- package/dist/deps.d.ts +28 -1
- package/dist/deps.d.ts.map +1 -1
- package/dist/deps.js +288 -13
- package/dist/discussion-prompt.d.ts +4 -0
- package/dist/discussion-prompt.d.ts.map +1 -0
- package/dist/discussion-prompt.js +19 -0
- package/dist/editor/agentActionAudit.d.ts +18 -0
- package/dist/editor/agentActionAudit.d.ts.map +1 -0
- package/dist/editor/agentActionAudit.js +80 -0
- package/dist/editor/agentRoutes.d.ts +1 -0
- package/dist/editor/agentRoutes.d.ts.map +1 -1
- package/dist/editor/agentRoutes.js +292 -55
- package/dist/editor/agentSessionRegistry.d.ts +35 -0
- package/dist/editor/agentSessionRegistry.d.ts.map +1 -0
- package/dist/editor/agentSessionRegistry.js +243 -0
- package/dist/editor/completionRoutes.d.ts.map +1 -1
- package/dist/editor/completionRoutes.js +5 -10
- package/dist/editor/languageRoutes.d.ts +12 -1
- package/dist/editor/languageRoutes.d.ts.map +1 -1
- package/dist/editor/languageRoutes.js +71 -8
- package/dist/editor/languageService.d.ts +3 -2
- package/dist/editor/languageService.d.ts.map +1 -1
- package/dist/editor/languageService.js +41 -3
- package/dist/editor/languageServiceHost.d.ts.map +1 -1
- package/dist/editor/languageServiceHost.js +2 -2
- package/dist/editor/lsp/hostLanguageOperation.d.ts +17 -0
- package/dist/editor/lsp/hostLanguageOperation.d.ts.map +1 -0
- package/dist/editor/lsp/hostLanguageOperation.js +436 -0
- package/dist/editor/lsp/hostLanguageProviders.d.ts +26 -0
- package/dist/editor/lsp/hostLanguageProviders.d.ts.map +1 -0
- package/dist/editor/lsp/hostLanguageProviders.js +161 -0
- package/dist/editor/lsp/lspFrameCodec.d.ts +13 -0
- package/dist/editor/lsp/lspFrameCodec.d.ts.map +1 -0
- package/dist/editor/lsp/lspFrameCodec.js +164 -0
- package/dist/editor/lsp/lspJsonRpcClient.d.ts +34 -0
- package/dist/editor/lsp/lspJsonRpcClient.d.ts.map +1 -0
- package/dist/editor/lsp/lspJsonRpcClient.js +173 -0
- package/dist/editor/lsp/lspLanguageProvider.d.ts +7 -0
- package/dist/editor/lsp/lspLanguageProvider.d.ts.map +1 -0
- package/dist/editor/lsp/lspLanguageProvider.js +29 -0
- package/dist/editor/lsp/lspLifecycleLedger.d.ts +5 -0
- package/dist/editor/lsp/lspLifecycleLedger.d.ts.map +1 -0
- package/dist/editor/lsp/lspLifecycleLedger.js +37 -0
- package/dist/editor/lsp/lspNodeAdapter.d.ts +31 -0
- package/dist/editor/lsp/lspNodeAdapter.d.ts.map +1 -0
- package/dist/editor/lsp/lspNodeAdapter.js +230 -0
- package/dist/editor/lsp/lspProcessManager.d.ts +24 -0
- package/dist/editor/lsp/lspProcessManager.d.ts.map +1 -0
- package/dist/editor/lsp/lspProcessManager.js +255 -0
- package/dist/editor/lsp/lspRestartThrottle.d.ts +6 -0
- package/dist/editor/lsp/lspRestartThrottle.d.ts.map +1 -0
- package/dist/editor/lsp/lspRestartThrottle.js +24 -0
- package/dist/editor/lsp/lspStatusRoute.d.ts +8 -0
- package/dist/editor/lsp/lspStatusRoute.d.ts.map +1 -0
- package/dist/editor/lsp/lspStatusRoute.js +22 -0
- package/dist/editor/lsp/lspTransport.d.ts +19 -0
- package/dist/editor/lsp/lspTransport.d.ts.map +1 -0
- package/dist/editor/lsp/lspTransport.js +55 -0
- package/dist/editor/lsp/testing/fakeLspProcess.d.ts +23 -0
- package/dist/editor/lsp/testing/fakeLspProcess.d.ts.map +1 -0
- package/dist/editor/lsp/testing/fakeLspProcess.js +132 -0
- package/dist/files.d.ts +63 -0
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +799 -1
- package/dist/gateway-readiness.d.ts +6 -0
- package/dist/gateway-readiness.d.ts.map +1 -0
- package/dist/gateway-readiness.js +624 -0
- package/dist/gateway-setup.d.ts +2 -0
- package/dist/gateway-setup.d.ts.map +1 -1
- package/dist/gateway-setup.js +275 -11
- package/dist/gitDelivery/actionSheetProjection.d.ts +30 -0
- package/dist/gitDelivery/actionSheetProjection.d.ts.map +1 -0
- package/dist/gitDelivery/actionSheetProjection.js +206 -0
- package/dist/gitDelivery/actionSheetRoutes.d.ts +29 -0
- package/dist/gitDelivery/actionSheetRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/actionSheetRoutes.js +293 -0
- package/dist/gitDelivery/agentOperationsRoutes.d.ts +33 -0
- package/dist/gitDelivery/agentOperationsRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/agentOperationsRoutes.js +405 -0
- package/dist/gitDelivery/commitRoutes.d.ts +23 -0
- package/dist/gitDelivery/commitRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/commitRoutes.js +204 -0
- package/dist/gitDelivery/evidenceRoutes.d.ts +9 -0
- package/dist/gitDelivery/evidenceRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/evidenceRoutes.js +101 -0
- package/dist/gitDelivery/execution.d.ts +38 -0
- package/dist/gitDelivery/execution.d.ts.map +1 -0
- package/dist/gitDelivery/execution.js +117 -0
- package/dist/gitDelivery/localMutationRoutes.d.ts +30 -0
- package/dist/gitDelivery/localMutationRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/localMutationRoutes.js +165 -0
- package/dist/gitDelivery/mergeExecution.d.ts +63 -0
- package/dist/gitDelivery/mergeExecution.d.ts.map +1 -0
- package/dist/gitDelivery/mergeExecution.js +168 -0
- package/dist/gitDelivery/mergeRoutes.d.ts +12 -0
- package/dist/gitDelivery/mergeRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/mergeRoutes.js +218 -0
- package/dist/gitDelivery/mutationEvidenceLedger.d.ts +23 -0
- package/dist/gitDelivery/mutationEvidenceLedger.d.ts.map +1 -0
- package/dist/gitDelivery/mutationEvidenceLedger.js +87 -0
- package/dist/gitDelivery/prExecution.d.ts +54 -0
- package/dist/gitDelivery/prExecution.d.ts.map +1 -0
- package/dist/gitDelivery/prExecution.js +192 -0
- package/dist/gitDelivery/prRoutes.d.ts +12 -0
- package/dist/gitDelivery/prRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/prRoutes.js +256 -0
- package/dist/gitDelivery/pushExecution.d.ts +43 -0
- package/dist/gitDelivery/pushExecution.d.ts.map +1 -0
- package/dist/gitDelivery/pushExecution.js +124 -0
- package/dist/gitDelivery/pushRoutes.d.ts +12 -0
- package/dist/gitDelivery/pushRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/pushRoutes.js +200 -0
- package/dist/gitDelivery/requestGuards.d.ts +15 -0
- package/dist/gitDelivery/requestGuards.d.ts.map +1 -0
- package/dist/gitDelivery/requestGuards.js +97 -0
- package/dist/gitDelivery/syncEvidence.d.ts +37 -0
- package/dist/gitDelivery/syncEvidence.d.ts.map +1 -0
- package/dist/gitDelivery/syncEvidence.js +85 -0
- package/dist/gitDelivery/syncExecution.d.ts +30 -0
- package/dist/gitDelivery/syncExecution.d.ts.map +1 -0
- package/dist/gitDelivery/syncExecution.js +266 -0
- package/dist/gitDelivery/syncRoutes.d.ts +13 -0
- package/dist/gitDelivery/syncRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/syncRoutes.js +200 -0
- package/dist/gitPorcelainStatus.d.ts +15 -0
- package/dist/gitPorcelainStatus.d.ts.map +1 -0
- package/dist/gitPorcelainStatus.js +104 -0
- package/dist/gitRepositoryReads.d.ts +10 -0
- package/dist/gitRepositoryReads.d.ts.map +1 -0
- package/dist/gitRepositoryReads.js +314 -0
- package/dist/gitRepositoryRoutes.d.ts +7 -0
- package/dist/gitRepositoryRoutes.d.ts.map +1 -0
- package/dist/gitRepositoryRoutes.js +221 -0
- package/dist/gitRoutes.d.ts +66 -0
- package/dist/gitRoutes.d.ts.map +1 -0
- package/dist/gitRoutes.js +543 -0
- package/dist/governed-workflow.d.ts +2 -0
- package/dist/governed-workflow.d.ts.map +1 -1
- package/dist/governed-workflow.js +4 -0
- package/dist/grounded-qa-hybrid.d.ts.map +1 -1
- package/dist/grounded-qa-hybrid.js +2 -0
- package/dist/grounded-qa-multi-source.d.ts.map +1 -1
- package/dist/grounded-qa-multi-source.js +1 -0
- package/dist/grounded-qa.d.ts +11 -0
- package/dist/grounded-qa.d.ts.map +1 -1
- package/dist/grounded-qa.js +14 -4
- package/dist/headers.d.ts +4 -1
- package/dist/headers.d.ts.map +1 -1
- package/dist/headers.js +11 -4
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/local-knowledge-grounded-qa.d.ts.map +1 -1
- package/dist/local-knowledge-grounded-qa.js +11 -2
- package/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +1 -1
- package/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
- package/dist/qualityIntelligence/figmaSnapshotRoutes.js +1 -1
- package/dist/read-handlers.d.ts +5 -0
- package/dist/read-handlers.d.ts.map +1 -1
- package/dist/read-handlers.js +57 -1
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +260 -12
- package/dist/run-engine.d.ts.map +1 -1
- package/dist/run-engine.js +3 -0
- package/dist/run-handlers.d.ts +0 -1
- package/dist/run-handlers.d.ts.map +1 -1
- package/dist/run-handlers.js +64 -211
- package/dist/run-request.d.ts +11 -0
- package/dist/run-request.d.ts.map +1 -1
- package/dist/run-request.js +158 -10
- package/dist/runtime/capabilityDetector.d.ts +38 -0
- package/dist/runtime/capabilityDetector.d.ts.map +1 -0
- package/dist/runtime/capabilityDetector.js +443 -0
- package/dist/runtime/capabilityRoutes.d.ts +9 -0
- package/dist/runtime/capabilityRoutes.d.ts.map +1 -0
- package/dist/runtime/capabilityRoutes.js +45 -0
- package/dist/runtime/containerEngineDetector.d.ts +17 -0
- package/dist/runtime/containerEngineDetector.d.ts.map +1 -0
- package/dist/runtime/containerEngineDetector.js +222 -0
- package/dist/runtime/containerRoutes.d.ts +8 -0
- package/dist/runtime/containerRoutes.d.ts.map +1 -0
- package/dist/runtime/containerRoutes.js +207 -0
- package/dist/runtime/containerRunner-errors.d.ts +18 -0
- package/dist/runtime/containerRunner-errors.d.ts.map +1 -0
- package/dist/runtime/containerRunner-errors.js +42 -0
- package/dist/runtime/containerRunner-evidence.d.ts +24 -0
- package/dist/runtime/containerRunner-evidence.d.ts.map +1 -0
- package/dist/runtime/containerRunner-evidence.js +74 -0
- package/dist/runtime/containerRunner.d.ts +37 -0
- package/dist/runtime/containerRunner.d.ts.map +1 -0
- package/dist/runtime/containerRunner.js +443 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +24 -4
- package/dist/store/db.d.ts.map +1 -1
- package/dist/store/db.js +2 -1
- package/dist/store/index.d.ts +1 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/messages.d.ts +2 -1
- package/dist/store/messages.d.ts.map +1 -1
- package/dist/store/messages.js +46 -4
- package/dist/store/schema.d.ts +1 -1
- package/dist/store/schema.d.ts.map +1 -1
- package/dist/store/schema.js +68 -1
- package/dist/store/types.d.ts +3 -2
- package/dist/store/types.d.ts.map +1 -1
- package/dist/task-workspace/active-store.d.ts +21 -0
- package/dist/task-workspace/active-store.d.ts.map +1 -0
- package/dist/task-workspace/active-store.js +55 -0
- package/dist/task-workspace/authorization.d.ts +7 -0
- package/dist/task-workspace/authorization.d.ts.map +1 -0
- package/dist/task-workspace/authorization.js +54 -0
- package/dist/task-workspace/binding.d.ts +3 -0
- package/dist/task-workspace/binding.d.ts.map +1 -0
- package/dist/task-workspace/binding.js +22 -0
- package/dist/task-workspace/cleanup.d.ts +4 -0
- package/dist/task-workspace/cleanup.d.ts.map +1 -0
- package/dist/task-workspace/cleanup.js +428 -0
- package/dist/task-workspace/errors.d.ts +14 -0
- package/dist/task-workspace/errors.d.ts.map +1 -0
- package/dist/task-workspace/errors.js +81 -0
- package/dist/task-workspace/evidence.d.ts +32 -0
- package/dist/task-workspace/evidence.d.ts.map +1 -0
- package/dist/task-workspace/evidence.js +52 -0
- package/dist/task-workspace/field-safety.d.ts +3 -0
- package/dist/task-workspace/field-safety.d.ts.map +1 -0
- package/dist/task-workspace/field-safety.js +42 -0
- package/dist/task-workspace/health.d.ts +4 -0
- package/dist/task-workspace/health.d.ts.map +1 -0
- package/dist/task-workspace/health.js +163 -0
- package/dist/task-workspace/lifecycle.d.ts +3 -0
- package/dist/task-workspace/lifecycle.d.ts.map +1 -0
- package/dist/task-workspace/lifecycle.js +248 -0
- package/dist/task-workspace/locks.d.ts +13 -0
- package/dist/task-workspace/locks.d.ts.map +1 -0
- package/dist/task-workspace/locks.js +44 -0
- package/dist/task-workspace/managed-root.d.ts +7 -0
- package/dist/task-workspace/managed-root.d.ts.map +1 -0
- package/dist/task-workspace/managed-root.js +98 -0
- package/dist/task-workspace/mutex.d.ts +8 -0
- package/dist/task-workspace/mutex.d.ts.map +1 -0
- package/dist/task-workspace/mutex.js +82 -0
- package/dist/task-workspace/naming.d.ts +15 -0
- package/dist/task-workspace/naming.d.ts.map +1 -0
- package/dist/task-workspace/naming.js +0 -0
- package/dist/task-workspace/provisioning.d.ts +3 -0
- package/dist/task-workspace/provisioning.d.ts.map +1 -0
- package/dist/task-workspace/provisioning.js +528 -0
- package/dist/task-workspace/reconciliation.d.ts +15 -0
- package/dist/task-workspace/reconciliation.d.ts.map +1 -0
- package/dist/task-workspace/reconciliation.js +274 -0
- package/dist/task-workspace/repair.d.ts +3 -0
- package/dist/task-workspace/repair.d.ts.map +1 -0
- package/dist/task-workspace/repair.js +286 -0
- package/dist/task-workspace/routes.d.ts +19 -0
- package/dist/task-workspace/routes.d.ts.map +1 -0
- package/dist/task-workspace/routes.js +481 -0
- package/dist/task-workspace/store.d.ts +12 -0
- package/dist/task-workspace/store.d.ts.map +1 -0
- package/dist/task-workspace/store.js +128 -0
- package/dist/task-workspace/types.d.ts +170 -0
- package/dist/task-workspace/types.d.ts.map +1 -0
- package/dist/task-workspace/types.js +5 -0
- package/dist/voice-action-governance.d.ts +23 -0
- package/dist/voice-action-governance.d.ts.map +1 -0
- package/dist/voice-action-governance.js +126 -0
- package/dist/voice-handlers.d.ts +6 -0
- package/dist/voice-handlers.d.ts.map +1 -0
- package/dist/voice-handlers.js +570 -0
- package/dist/voice-realtime-grounded-tool.d.ts +31 -0
- package/dist/voice-realtime-grounded-tool.d.ts.map +1 -0
- package/dist/voice-realtime-grounded-tool.js +322 -0
- package/dist/voice-realtime.d.ts +69 -0
- package/dist/voice-realtime.d.ts.map +1 -0
- package/dist/voice-realtime.js +787 -0
- package/dist/workspace-state-handlers.d.ts +5 -0
- package/dist/workspace-state-handlers.d.ts.map +1 -0
- package/dist/workspace-state-handlers.js +106 -0
- package/package.json +20 -19
- package/dist/grounded-handoff.d.ts +0 -4
- package/dist/grounded-handoff.d.ts.map +0 -1
- package/dist/grounded-handoff.js +0 -445
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/store/schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,cAAc,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/store/schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,cAAc,IAAI,CAAC;AA2RhC,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAepD"}
|
package/dist/store/schema.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ADR-0013 D5 — Schema v1 + migration runner via PRAGMA user_version. Forward-only, idempotent,
|
|
2
2
|
// transactional. Each migration is a `.sql` string of one or more CREATE/ALTER statements; the
|
|
3
3
|
// runner applies migrations whose 1-based index > current user_version.
|
|
4
|
-
export const SCHEMA_VERSION =
|
|
4
|
+
export const SCHEMA_VERSION = 8;
|
|
5
5
|
const V1_SQL = `
|
|
6
6
|
CREATE TABLE projects (
|
|
7
7
|
path TEXT NOT NULL PRIMARY KEY,
|
|
@@ -184,12 +184,79 @@ CREATE INDEX idx_relationship_audit_relationship
|
|
|
184
184
|
ON relationship_audit_entries(workspace_id, relationship_id, occurred_at)
|
|
185
185
|
WHERE relationship_id IS NOT NULL;
|
|
186
186
|
`;
|
|
187
|
+
// V6 — persist the redacted, browser-safe grounded answer projection on assistant messages.
|
|
188
|
+
// This stores citation metadata and context summaries only, not retrieved excerpt contents.
|
|
189
|
+
const V6_SQL = `
|
|
190
|
+
ALTER TABLE chat_messages ADD COLUMN grounded_answer_json TEXT;
|
|
191
|
+
`;
|
|
192
|
+
// V7 (issue #445, epic #443) — durable managed task-workspace instances. STRICT mode. One row per
|
|
193
|
+
// provisioned/activated task workspace; the partial unique index on (repository_id, task_id) enforces
|
|
194
|
+
// the idempotency invariant at the DB layer as a second barrier alongside the deterministic id
|
|
195
|
+
// derivation (AC3). All columns are content-free per the #444 contract (ids/hashes, enums, ISO
|
|
196
|
+
// timestamps, branch/path names); `lock_json`, `drift_markers_json`, and `recovery_hints_json` carry
|
|
197
|
+
// the nested WorkspaceLock / drift-marker / recovery-hint shapes the contract validator gates.
|
|
198
|
+
const V7_SQL = `
|
|
199
|
+
CREATE TABLE task_workspace_instances (
|
|
200
|
+
workspace_id TEXT NOT NULL PRIMARY KEY,
|
|
201
|
+
schema_version TEXT NOT NULL,
|
|
202
|
+
task_id TEXT NOT NULL,
|
|
203
|
+
repository_id TEXT NOT NULL,
|
|
204
|
+
repository_root TEXT NOT NULL,
|
|
205
|
+
base_branch TEXT NOT NULL,
|
|
206
|
+
task_branch TEXT NOT NULL,
|
|
207
|
+
managed_worktree_path TEXT NOT NULL,
|
|
208
|
+
gitdir_identity TEXT NOT NULL,
|
|
209
|
+
lifecycle_state TEXT NOT NULL,
|
|
210
|
+
health TEXT NOT NULL,
|
|
211
|
+
lock_json TEXT,
|
|
212
|
+
created_at TEXT NOT NULL,
|
|
213
|
+
updated_at TEXT NOT NULL,
|
|
214
|
+
last_verified_at TEXT,
|
|
215
|
+
last_verified_head TEXT,
|
|
216
|
+
drift_markers_json TEXT NOT NULL,
|
|
217
|
+
recovery_hints_json TEXT NOT NULL,
|
|
218
|
+
audit_correlation_id TEXT NOT NULL,
|
|
219
|
+
CHECK (
|
|
220
|
+
schema_version IN ('1')
|
|
221
|
+
AND lifecycle_state IN (
|
|
222
|
+
'provisioning','active','paused','handoff-ready','archived','merged',
|
|
223
|
+
'abandoned','recovery-required','failed','cleanup-pending'
|
|
224
|
+
)
|
|
225
|
+
AND health IN ('healthy','degraded','drifted','locked-out','missing','unknown')
|
|
226
|
+
)
|
|
227
|
+
) STRICT;
|
|
228
|
+
|
|
229
|
+
CREATE UNIQUE INDEX uniq_task_workspace_repo_task
|
|
230
|
+
ON task_workspace_instances(repository_id, task_id);
|
|
231
|
+
CREATE INDEX idx_task_workspace_repository
|
|
232
|
+
ON task_workspace_instances(repository_id, updated_at);
|
|
233
|
+
`;
|
|
234
|
+
// V8 (issue #446, epic #443) — singleton active task-workspace pointer. Studio binds exactly ONE
|
|
235
|
+
// active task workspace at a time; this table holds at most one row (id pinned to the constant
|
|
236
|
+
// 'active', enforced by CHECK). The WorkspaceBinding surfaces consume is DERIVED from the referenced
|
|
237
|
+
// instance (binding.ts), never stored, so the active root has no second copy to drift. Content-free:
|
|
238
|
+
// an opaque workspace id + an opaque actor id + ISO timestamps only. ON DELETE CASCADE clears the
|
|
239
|
+
// pointer when the referenced instance is removed (the lifecycle service also clears it defensively).
|
|
240
|
+
const V8_SQL = `
|
|
241
|
+
CREATE TABLE task_workspace_active_pointer (
|
|
242
|
+
id TEXT NOT NULL PRIMARY KEY DEFAULT 'active',
|
|
243
|
+
workspace_id TEXT NOT NULL,
|
|
244
|
+
set_by TEXT NOT NULL,
|
|
245
|
+
set_at TEXT NOT NULL,
|
|
246
|
+
updated_at TEXT NOT NULL,
|
|
247
|
+
CHECK (id = 'active'),
|
|
248
|
+
FOREIGN KEY (workspace_id) REFERENCES task_workspace_instances(workspace_id) ON DELETE CASCADE
|
|
249
|
+
) STRICT;
|
|
250
|
+
`;
|
|
187
251
|
const MIGRATIONS = [
|
|
188
252
|
{ version: 1, sql: V1_SQL },
|
|
189
253
|
{ version: 2, sql: V2_SQL },
|
|
190
254
|
{ version: 3, sql: V3_SQL },
|
|
191
255
|
{ version: 4, sql: V4_SQL },
|
|
192
256
|
{ version: 5, sql: V5_SQL },
|
|
257
|
+
{ version: 6, sql: V6_SQL },
|
|
258
|
+
{ version: 7, sql: V7_SQL },
|
|
259
|
+
{ version: 8, sql: V8_SQL },
|
|
193
260
|
];
|
|
194
261
|
function currentUserVersion(db) {
|
|
195
262
|
const row = db.prepare("PRAGMA user_version").get();
|
package/dist/store/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Project, Chat, ChatConnectedScope, ChatLocalKnowledgeScope, ChatRole, WorkflowStatus, ChatMessage, CreateChatOptions, UpdateProjectPatch, UpdateChatPatch, NewChatMessage, UpdateChatMessagePatch } from "@oscharko-dev/keiko-contracts/bff-wire";
|
|
2
|
-
export type { Project, Chat, ChatConnectedScope, ChatLocalKnowledgeScope, ChatRole, WorkflowStatus, ChatMessage, CreateChatOptions, UpdateProjectPatch, UpdateChatPatch, NewChatMessage, UpdateChatMessagePatch, };
|
|
1
|
+
import type { Project, Chat, ChatConnectedScope, ChatLocalKnowledgeScope, ChatRole, WorkflowStatus, ChatMessage, CreateChatOptions, GroundedAnswer, UpdateProjectPatch, UpdateChatPatch, NewChatMessage, UpdateChatMessagePatch } from "@oscharko-dev/keiko-contracts/bff-wire";
|
|
2
|
+
export type { Project, Chat, ChatConnectedScope, ChatLocalKnowledgeScope, ChatRole, WorkflowStatus, ChatMessage, CreateChatOptions, GroundedAnswer, UpdateProjectPatch, UpdateChatPatch, NewChatMessage, UpdateChatMessagePatch, };
|
|
3
3
|
export interface UiStore {
|
|
4
4
|
readonly listProjects: () => readonly Project[];
|
|
5
5
|
readonly createProject: (path: string, name?: string) => Project;
|
|
@@ -15,6 +15,7 @@ export interface UiStore {
|
|
|
15
15
|
readonly createMessage: (msg: NewChatMessage) => ChatMessage;
|
|
16
16
|
readonly createMessages: (messages: readonly NewChatMessage[]) => readonly ChatMessage[];
|
|
17
17
|
readonly updateMessage: (id: string, patch: UpdateChatMessagePatch) => ChatMessage;
|
|
18
|
+
readonly attachGroundedAnswer: (id: string, answer: GroundedAnswer) => ChatMessage;
|
|
18
19
|
readonly close: () => void;
|
|
19
20
|
}
|
|
20
21
|
export interface UpdateChatOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,OAAO,EACP,IAAI,EACJ,kBAAkB,EAClB,uBAAuB,EACvB,QAAQ,EACR,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,sBAAsB,EACvB,MAAM,wCAAwC,CAAC;AAChD,YAAY,EACV,OAAO,EACP,IAAI,EACJ,kBAAkB,EAClB,uBAAuB,EACvB,QAAQ,EACR,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,sBAAsB,GACvB,CAAC;AAEF,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,SAAS,OAAO,EAAE,CAAC;IAChD,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACjE,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC;IAC7E,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAE/C,QAAQ,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,SAAS,IAAI,EAAE,CAAC;IAC7E,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,UAAU,EAAE,CACnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,iBAAiB,KACrB,IAAI,CAAC;IACV,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/F,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAE1C,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,SAAS,WAAW,EAAE,CAAC;IAClF,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAClE,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,WAAW,CAAC;IAC7D,QAAQ,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,KAAK,SAAS,WAAW,EAAE,CAAC;IACzF,QAAQ,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,KAAK,WAAW,CAAC;IAEnF,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CAC5C;AAID,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACnD"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,OAAO,EACP,IAAI,EACJ,kBAAkB,EAClB,uBAAuB,EACvB,QAAQ,EACR,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,sBAAsB,EACvB,MAAM,wCAAwC,CAAC;AAChD,YAAY,EACV,OAAO,EACP,IAAI,EACJ,kBAAkB,EAClB,uBAAuB,EACvB,QAAQ,EACR,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,sBAAsB,GACvB,CAAC;AAEF,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,SAAS,OAAO,EAAE,CAAC;IAChD,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACjE,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC;IAC7E,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAE/C,QAAQ,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,SAAS,IAAI,EAAE,CAAC;IAC7E,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,UAAU,EAAE,CACnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,iBAAiB,KACrB,IAAI,CAAC;IACV,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/F,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAE1C,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,SAAS,WAAW,EAAE,CAAC;IAClF,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAClE,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,WAAW,CAAC;IAC7D,QAAQ,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,KAAK,SAAS,WAAW,EAAE,CAAC;IACzF,QAAQ,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,KAAK,WAAW,CAAC;IACnF,QAAQ,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,KAAK,WAAW,CAAC;IAEnF,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CAC5C;AAID,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACnD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { DatabaseSync } from "node:sqlite";
|
|
2
|
+
export interface ActiveWorkspacePointer {
|
|
3
|
+
readonly workspaceId: string;
|
|
4
|
+
readonly setBy: string;
|
|
5
|
+
readonly setAt: string;
|
|
6
|
+
readonly updatedAt: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ActiveWorkspacePointerStore {
|
|
9
|
+
/** The current active pointer, or undefined in unbound mode (no row). */
|
|
10
|
+
readonly get: () => ActiveWorkspacePointer | undefined;
|
|
11
|
+
/** Upsert the singleton row (id pinned to 'active'); returns the persisted pointer. */
|
|
12
|
+
readonly set: (input: {
|
|
13
|
+
readonly workspaceId: string;
|
|
14
|
+
readonly setBy: string;
|
|
15
|
+
readonly atIso: string;
|
|
16
|
+
}) => ActiveWorkspacePointer;
|
|
17
|
+
/** Delete the singleton row → unbound mode. Idempotent. */
|
|
18
|
+
readonly clear: () => void;
|
|
19
|
+
}
|
|
20
|
+
export declare function buildActiveWorkspacePointerStoreOverDatabase(db: DatabaseSync): ActiveWorkspacePointerStore;
|
|
21
|
+
//# sourceMappingURL=active-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-store.d.ts","sourceRoot":"","sources":["../../src/task-workspace/active-store.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,sBAAsB,GAAG,SAAS,CAAC;IACvD,uFAAuF;IACvF,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE;QACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,KAAK,sBAAsB,CAAC;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;AAsCD,wBAAgB,4CAA4C,CAC1D,EAAE,EAAE,YAAY,GACf,2BAA2B,CAgB7B"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// Durable singleton active task-workspace pointer (Issue #446, Epic #443).
|
|
2
|
+
//
|
|
3
|
+
// Studio binds exactly ONE active task workspace at a time. The pointer is the durable source of truth
|
|
4
|
+
// for "which workspace is active"; the WorkspaceBinding surfaces consume is DERIVED from the referenced
|
|
5
|
+
// WorkspaceInstance (see binding.ts), never stored here — so there is no second copy of the root to
|
|
6
|
+
// drift. The table is pinned to a single row (id = 'active', CHECK-enforced) over the SAME node:sqlite
|
|
7
|
+
// handle as the UI store and the #445 instance store (schema.ts §V8), so the V8 sibling row shares the
|
|
8
|
+
// single-writer transaction model.
|
|
9
|
+
//
|
|
10
|
+
// The pointer is content-free: an opaque workspace id + an opaque actor id + ISO timestamps. No root,
|
|
11
|
+
// no branch, no path is persisted here. "Clear active" deletes the row → unbound mode.
|
|
12
|
+
const SQL_GET = `SELECT workspace_id, set_by, set_at, updated_at FROM task_workspace_active_pointer WHERE id = 'active'`;
|
|
13
|
+
const SQL_CLEAR = `DELETE FROM task_workspace_active_pointer WHERE id = 'active'`;
|
|
14
|
+
// `set_at` records when the CURRENT workspace became active, `updated_at` the last touch. On conflict
|
|
15
|
+
// the CASE keeps the original `set_at` when the SAME workspace is re-set (an idempotent re-activation
|
|
16
|
+
// preserves its "became active" time) and resets it when switching to a DIFFERENT workspace.
|
|
17
|
+
const SQL_SET = `
|
|
18
|
+
INSERT INTO task_workspace_active_pointer (id, workspace_id, set_by, set_at, updated_at)
|
|
19
|
+
VALUES ('active', ?, ?, ?, ?)
|
|
20
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
21
|
+
set_at = CASE
|
|
22
|
+
WHEN task_workspace_active_pointer.workspace_id = excluded.workspace_id
|
|
23
|
+
THEN task_workspace_active_pointer.set_at
|
|
24
|
+
ELSE excluded.set_at
|
|
25
|
+
END,
|
|
26
|
+
workspace_id = excluded.workspace_id,
|
|
27
|
+
set_by = excluded.set_by,
|
|
28
|
+
updated_at = excluded.updated_at
|
|
29
|
+
RETURNING workspace_id, set_by, set_at, updated_at
|
|
30
|
+
`;
|
|
31
|
+
function rowToPointer(row) {
|
|
32
|
+
return {
|
|
33
|
+
workspaceId: row.workspace_id,
|
|
34
|
+
setBy: row.set_by,
|
|
35
|
+
setAt: row.set_at,
|
|
36
|
+
updatedAt: row.updated_at,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function buildActiveWorkspacePointerStoreOverDatabase(db) {
|
|
40
|
+
return {
|
|
41
|
+
get: () => {
|
|
42
|
+
const row = db.prepare(SQL_GET).get();
|
|
43
|
+
return row === undefined ? undefined : rowToPointer(row);
|
|
44
|
+
},
|
|
45
|
+
set: (input) => {
|
|
46
|
+
const row = db
|
|
47
|
+
.prepare(SQL_SET)
|
|
48
|
+
.get(input.workspaceId, input.setBy, input.atIso, input.atIso);
|
|
49
|
+
return rowToPointer(row);
|
|
50
|
+
},
|
|
51
|
+
clear: () => {
|
|
52
|
+
db.prepare(SQL_CLEAR).run();
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { WorkspaceInfo } from "@oscharko-dev/keiko-workspace";
|
|
2
|
+
import type { UiHandlerDeps } from "../deps.js";
|
|
3
|
+
type ManagedRootDeps = Pick<UiHandlerDeps, "managedTaskWorkspaceRoot" | "store" | "workspaceProvisioning">;
|
|
4
|
+
export declare function resolveManagedTaskWorkspaceRoot(deps: Pick<ManagedRootDeps, "managedTaskWorkspaceRoot" | "workspaceProvisioning">, root: string): WorkspaceInfo | undefined;
|
|
5
|
+
export declare function resolveRegisteredOrManagedWorkspaceRoot(deps: ManagedRootDeps, root: string): WorkspaceInfo | undefined;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=authorization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../src/task-workspace/authorization.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,KAAK,eAAe,GAAG,IAAI,CACzB,aAAa,EACb,0BAA0B,GAAG,OAAO,GAAG,uBAAuB,CAC/D,CAAC;AAmBF,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,0BAA0B,GAAG,uBAAuB,CAAC,EACjF,IAAI,EAAE,MAAM,GACX,aAAa,GAAG,SAAS,CAiB3B;AAED,wBAAgB,uCAAuC,CACrD,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,MAAM,GACX,aAAa,GAAG,SAAS,CAK3B"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Authorization helpers for task-bound execution roots (Epic #443).
|
|
2
|
+
//
|
|
3
|
+
// Legacy BFF routes authorize `projectId` / `workspaceRoot` against the UI project store. A bound task
|
|
4
|
+
// workspace intentionally points those surfaces at a managed worktree instead, so the route boundary
|
|
5
|
+
// must accept that root only when it can be re-proven from the persisted WorkspaceInstance and the
|
|
6
|
+
// Keiko-owned managed root. This does not grant arbitrary filesystem authority: the leaf id, persisted
|
|
7
|
+
// path, derived managed path, realpath containment, and on-disk presence must all agree.
|
|
8
|
+
import { basename } from "node:path";
|
|
9
|
+
import { isManagedTargetContained, managedTargetExists } from "./managed-root.js";
|
|
10
|
+
import { deriveManagedWorktreePath } from "./naming.js";
|
|
11
|
+
function workspaceInfo(root) {
|
|
12
|
+
return {
|
|
13
|
+
root,
|
|
14
|
+
name: undefined,
|
|
15
|
+
version: undefined,
|
|
16
|
+
testFramework: "unknown",
|
|
17
|
+
sourceDirs: [],
|
|
18
|
+
testDirs: [],
|
|
19
|
+
languages: [],
|
|
20
|
+
ignoreLines: [],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function pathLeaf(path) {
|
|
24
|
+
return basename(path.replace(/[/\\]+$/u, ""));
|
|
25
|
+
}
|
|
26
|
+
export function resolveManagedTaskWorkspaceRoot(deps, root) {
|
|
27
|
+
const managedRoot = deps.managedTaskWorkspaceRoot;
|
|
28
|
+
const provisioning = deps.workspaceProvisioning;
|
|
29
|
+
if (managedRoot === undefined || provisioning === undefined || root.length === 0) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
const instance = provisioning.getInstance(pathLeaf(root));
|
|
33
|
+
if (instance === undefined)
|
|
34
|
+
return undefined;
|
|
35
|
+
const expected = deriveManagedWorktreePath({
|
|
36
|
+
managedRoot,
|
|
37
|
+
repositoryId: instance.repositoryId,
|
|
38
|
+
workspaceId: instance.workspaceId,
|
|
39
|
+
});
|
|
40
|
+
if (root !== expected || instance.managedWorktreePath !== expected)
|
|
41
|
+
return undefined;
|
|
42
|
+
if (!isManagedTargetContained(managedRoot, instance.managedWorktreePath))
|
|
43
|
+
return undefined;
|
|
44
|
+
if (!managedTargetExists(instance.managedWorktreePath))
|
|
45
|
+
return undefined;
|
|
46
|
+
return workspaceInfo(instance.managedWorktreePath);
|
|
47
|
+
}
|
|
48
|
+
export function resolveRegisteredOrManagedWorkspaceRoot(deps, root) {
|
|
49
|
+
for (const project of deps.store.listProjects()) {
|
|
50
|
+
if (project.path === root)
|
|
51
|
+
return workspaceInfo(project.path);
|
|
52
|
+
}
|
|
53
|
+
return resolveManagedTaskWorkspaceRoot(deps, root);
|
|
54
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../src/task-workspace/binding.ts"],"names":[],"mappings":"AAWA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAEvC,wBAAgB,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,gBAAgB,CAU1E"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Derive the authoritative active-workspace binding from a persisted instance (Issue #446, Epic #443).
|
|
2
|
+
//
|
|
3
|
+
// The #444 contract makes the WorkspaceBinding the single source of truth surfaces consume, with the
|
|
4
|
+
// invariant gitDeliveryRoot === activeRoot === editorProjectRoot enforced by validateWorkspaceBinding.
|
|
5
|
+
// #445 first computed this binding privately inside provisioning; #446 promotes it to a shared helper
|
|
6
|
+
// so BOTH the provisioning/activation path AND the #446 lifecycle/active-pointer path derive the same
|
|
7
|
+
// binding from a stored instance — there is exactly one derivation, never a recomputed second one.
|
|
8
|
+
//
|
|
9
|
+
// The active root is the managed worktree path: every bound surface (editor/runtime/git-delivery/
|
|
10
|
+
// terminal/files/...) operates on the task's isolated worktree, never the bare repository root.
|
|
11
|
+
import { TASK_WORKSPACE_SCHEMA_VERSION, TASK_WORKSPACE_SURFACES, } from "@oscharko-dev/keiko-contracts";
|
|
12
|
+
export function buildBinding(instance) {
|
|
13
|
+
return {
|
|
14
|
+
schemaVersion: TASK_WORKSPACE_SCHEMA_VERSION,
|
|
15
|
+
workspaceId: instance.workspaceId,
|
|
16
|
+
taskId: instance.taskId,
|
|
17
|
+
activeRoot: instance.managedWorktreePath,
|
|
18
|
+
boundSurfaces: TASK_WORKSPACE_SURFACES,
|
|
19
|
+
gitDeliveryRoot: instance.managedWorktreePath,
|
|
20
|
+
editorProjectRoot: instance.managedWorktreePath,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { WorkspaceCleanupService, WorkspaceCleanupServiceDeps } from "./types.js";
|
|
2
|
+
export declare function safelyRemoveManagedPath(managedRoot: string, target: string): void;
|
|
3
|
+
export declare function createWorkspaceCleanupService(deps: WorkspaceCleanupServiceDeps): WorkspaceCleanupService;
|
|
4
|
+
//# sourceMappingURL=cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/task-workspace/cleanup.ts"],"names":[],"mappings":"AAgDA,OAAO,KAAK,EAGV,uBAAuB,EACvB,2BAA2B,EAI5B,MAAM,YAAY,CAAC;AAiCpB,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAcjF;AAgeD,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,2BAA2B,GAChC,uBAAuB,CAgBzB"}
|