@chances-ai/engine 24.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/dist/agents/discover.d.ts +30 -0
- package/dist/agents/discover.d.ts.map +1 -0
- package/dist/agents/discover.js +183 -0
- package/dist/agents/discover.js.map +1 -0
- package/dist/agents/index.d.ts +20 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +52 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/parse.d.ts +61 -0
- package/dist/agents/parse.d.ts.map +1 -0
- package/dist/agents/parse.js +527 -0
- package/dist/agents/parse.js.map +1 -0
- package/dist/agents/types.d.ts +52 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +8 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/ai/adapters/ai-sdk-stream.d.ts +19 -0
- package/dist/ai/adapters/ai-sdk-stream.d.ts.map +1 -0
- package/dist/ai/adapters/ai-sdk-stream.js +125 -0
- package/dist/ai/adapters/ai-sdk-stream.js.map +1 -0
- package/dist/ai/adapters/ai-sdk.d.ts +56 -0
- package/dist/ai/adapters/ai-sdk.d.ts.map +1 -0
- package/dist/ai/adapters/ai-sdk.js +112 -0
- package/dist/ai/adapters/ai-sdk.js.map +1 -0
- package/dist/ai/adapters/mock.d.ts +13 -0
- package/dist/ai/adapters/mock.d.ts.map +1 -0
- package/dist/ai/adapters/mock.js +54 -0
- package/dist/ai/adapters/mock.js.map +1 -0
- package/dist/ai/adapters/openai-compatible.d.ts +23 -0
- package/dist/ai/adapters/openai-compatible.d.ts.map +1 -0
- package/dist/ai/adapters/openai-compatible.js +45 -0
- package/dist/ai/adapters/openai-compatible.js.map +1 -0
- package/dist/ai/cost.d.ts +3 -0
- package/dist/ai/cost.d.ts.map +1 -0
- package/dist/ai/cost.js +5 -0
- package/dist/ai/cost.js.map +1 -0
- package/dist/ai/index.d.ts +12 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +11 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/known-models.d.ts +20 -0
- package/dist/ai/known-models.d.ts.map +1 -0
- package/dist/ai/known-models.js +129 -0
- package/dist/ai/known-models.js.map +1 -0
- package/dist/ai/registry.d.ts +12 -0
- package/dist/ai/registry.d.ts.map +1 -0
- package/dist/ai/registry.js +24 -0
- package/dist/ai/registry.js.map +1 -0
- package/dist/ai/retry.d.ts +11 -0
- package/dist/ai/retry.d.ts.map +1 -0
- package/dist/ai/retry.js +14 -0
- package/dist/ai/retry.js.map +1 -0
- package/dist/ai/router.d.ts +25 -0
- package/dist/ai/router.d.ts.map +1 -0
- package/dist/ai/router.js +36 -0
- package/dist/ai/router.js.map +1 -0
- package/dist/ai/setup.d.ts +23 -0
- package/dist/ai/setup.d.ts.map +1 -0
- package/dist/ai/setup.js +47 -0
- package/dist/ai/setup.js.map +1 -0
- package/dist/ai/summarizer.d.ts +24 -0
- package/dist/ai/summarizer.d.ts.map +1 -0
- package/dist/ai/summarizer.js +56 -0
- package/dist/ai/summarizer.js.map +1 -0
- package/dist/ai/types.d.ts +83 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +2 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/core/compaction/circuit-breaker.d.ts +32 -0
- package/dist/core/compaction/circuit-breaker.d.ts.map +1 -0
- package/dist/core/compaction/circuit-breaker.js +42 -0
- package/dist/core/compaction/circuit-breaker.js.map +1 -0
- package/dist/core/compaction/compactor.d.ts +75 -0
- package/dist/core/compaction/compactor.d.ts.map +1 -0
- package/dist/core/compaction/compactor.js +261 -0
- package/dist/core/compaction/compactor.js.map +1 -0
- package/dist/core/compaction/estimate.d.ts +39 -0
- package/dist/core/compaction/estimate.d.ts.map +1 -0
- package/dist/core/compaction/estimate.js +74 -0
- package/dist/core/compaction/estimate.js.map +1 -0
- package/dist/core/compaction/index.d.ts +5 -0
- package/dist/core/compaction/index.d.ts.map +1 -0
- package/dist/core/compaction/index.js +5 -0
- package/dist/core/compaction/index.js.map +1 -0
- package/dist/core/compaction/prune.d.ts +43 -0
- package/dist/core/compaction/prune.d.ts.map +1 -0
- package/dist/core/compaction/prune.js +51 -0
- package/dist/core/compaction/prune.js.map +1 -0
- package/dist/core/engine.d.ts +268 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +767 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/task-tool.d.ts +175 -0
- package/dist/core/task-tool.d.ts.map +1 -0
- package/dist/core/task-tool.js +901 -0
- package/dist/core/task-tool.js.map +1 -0
- package/dist/core/workspace-query.d.ts +83 -0
- package/dist/core/workspace-query.d.ts.map +1 -0
- package/dist/core/workspace-query.js +217 -0
- package/dist/core/workspace-query.js.map +1 -0
- package/dist/core/worktree/active-marker.d.ts +31 -0
- package/dist/core/worktree/active-marker.d.ts.map +1 -0
- package/dist/core/worktree/active-marker.js +109 -0
- package/dist/core/worktree/active-marker.js.map +1 -0
- package/dist/core/worktree/create.d.ts +40 -0
- package/dist/core/worktree/create.d.ts.map +1 -0
- package/dist/core/worktree/create.js +121 -0
- package/dist/core/worktree/create.js.map +1 -0
- package/dist/core/worktree/errors.d.ts +7 -0
- package/dist/core/worktree/errors.d.ts.map +1 -0
- package/dist/core/worktree/errors.js +11 -0
- package/dist/core/worktree/errors.js.map +1 -0
- package/dist/core/worktree/gc.d.ts +39 -0
- package/dist/core/worktree/gc.d.ts.map +1 -0
- package/dist/core/worktree/gc.js +146 -0
- package/dist/core/worktree/gc.js.map +1 -0
- package/dist/core/worktree/git.d.ts +53 -0
- package/dist/core/worktree/git.d.ts.map +1 -0
- package/dist/core/worktree/git.js +166 -0
- package/dist/core/worktree/git.js.map +1 -0
- package/dist/core/worktree/index.d.ts +8 -0
- package/dist/core/worktree/index.d.ts.map +1 -0
- package/dist/core/worktree/index.js +8 -0
- package/dist/core/worktree/index.js.map +1 -0
- package/dist/core/worktree/paths.d.ts +26 -0
- package/dist/core/worktree/paths.d.ts.map +1 -0
- package/dist/core/worktree/paths.js +57 -0
- package/dist/core/worktree/paths.js.map +1 -0
- package/dist/core/worktree/slug.d.ts +6 -0
- package/dist/core/worktree/slug.d.ts.map +1 -0
- package/dist/core/worktree/slug.js +21 -0
- package/dist/core/worktree/slug.js.map +1 -0
- package/dist/local-vault/file-store.d.ts +64 -0
- package/dist/local-vault/file-store.d.ts.map +1 -0
- package/dist/local-vault/file-store.js +225 -0
- package/dist/local-vault/file-store.js.map +1 -0
- package/dist/local-vault/index.d.ts +57 -0
- package/dist/local-vault/index.d.ts.map +1 -0
- package/dist/local-vault/index.js +68 -0
- package/dist/local-vault/index.js.map +1 -0
- package/dist/local-vault/keychain.d.ts +58 -0
- package/dist/local-vault/keychain.d.ts.map +1 -0
- package/dist/local-vault/keychain.js +200 -0
- package/dist/local-vault/keychain.js.map +1 -0
- package/dist/local-vault/mutex.d.ts +20 -0
- package/dist/local-vault/mutex.d.ts.map +1 -0
- package/dist/local-vault/mutex.js +44 -0
- package/dist/local-vault/mutex.js.map +1 -0
- package/dist/local-vault/passphrase.d.ts +30 -0
- package/dist/local-vault/passphrase.d.ts.map +1 -0
- package/dist/local-vault/passphrase.js +72 -0
- package/dist/local-vault/passphrase.js.map +1 -0
- package/dist/lsp/config.d.ts +34 -0
- package/dist/lsp/config.d.ts.map +1 -0
- package/dist/lsp/config.js +68 -0
- package/dist/lsp/config.js.map +1 -0
- package/dist/lsp/detect.d.ts +7 -0
- package/dist/lsp/detect.d.ts.map +1 -0
- package/dist/lsp/detect.js +78 -0
- package/dist/lsp/detect.js.map +1 -0
- package/dist/lsp/errors.d.ts +11 -0
- package/dist/lsp/errors.d.ts.map +1 -0
- package/dist/lsp/errors.js +11 -0
- package/dist/lsp/errors.js.map +1 -0
- package/dist/lsp/formatters.d.ts +147 -0
- package/dist/lsp/formatters.d.ts.map +1 -0
- package/dist/lsp/formatters.js +259 -0
- package/dist/lsp/formatters.js.map +1 -0
- package/dist/lsp/index.d.ts +31 -0
- package/dist/lsp/index.d.ts.map +1 -0
- package/dist/lsp/index.js +31 -0
- package/dist/lsp/index.js.map +1 -0
- package/dist/lsp/instance.d.ts +72 -0
- package/dist/lsp/instance.d.ts.map +1 -0
- package/dist/lsp/instance.js +489 -0
- package/dist/lsp/instance.js.map +1 -0
- package/dist/lsp/lazy-load.d.ts +27 -0
- package/dist/lsp/lazy-load.d.ts.map +1 -0
- package/dist/lsp/lazy-load.js +57 -0
- package/dist/lsp/lazy-load.js.map +1 -0
- package/dist/lsp/manager.d.ts +59 -0
- package/dist/lsp/manager.d.ts.map +1 -0
- package/dist/lsp/manager.js +242 -0
- package/dist/lsp/manager.js.map +1 -0
- package/dist/lsp/ops.d.ts +13 -0
- package/dist/lsp/ops.d.ts.map +1 -0
- package/dist/lsp/ops.js +225 -0
- package/dist/lsp/ops.js.map +1 -0
- package/dist/lsp/rpc.d.ts +47 -0
- package/dist/lsp/rpc.d.ts.map +1 -0
- package/dist/lsp/rpc.js +134 -0
- package/dist/lsp/rpc.js.map +1 -0
- package/dist/lsp/safe-uri.d.ts +18 -0
- package/dist/lsp/safe-uri.d.ts.map +1 -0
- package/dist/lsp/safe-uri.js +96 -0
- package/dist/lsp/safe-uri.js.map +1 -0
- package/dist/lsp/types.d.ts +70 -0
- package/dist/lsp/types.d.ts.map +1 -0
- package/dist/lsp/types.js +16 -0
- package/dist/lsp/types.js.map +1 -0
- package/dist/mcp/bridge.d.ts +57 -0
- package/dist/mcp/bridge.d.ts.map +1 -0
- package/dist/mcp/bridge.js +98 -0
- package/dist/mcp/bridge.js.map +1 -0
- package/dist/mcp/category.d.ts +22 -0
- package/dist/mcp/category.d.ts.map +1 -0
- package/dist/mcp/category.js +11 -0
- package/dist/mcp/category.js.map +1 -0
- package/dist/mcp/client.d.ts +228 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +352 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/content.d.ts +86 -0
- package/dist/mcp/content.d.ts.map +1 -0
- package/dist/mcp/content.js +147 -0
- package/dist/mcp/content.js.map +1 -0
- package/dist/mcp/env.d.ts +19 -0
- package/dist/mcp/env.d.ts.map +1 -0
- package/dist/mcp/env.js +50 -0
- package/dist/mcp/env.js.map +1 -0
- package/dist/mcp/host.d.ts +199 -0
- package/dist/mcp/host.d.ts.map +1 -0
- package/dist/mcp/host.js +530 -0
- package/dist/mcp/host.js.map +1 -0
- package/dist/mcp/index.d.ts +18 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +17 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/load-mcp-host.d.ts +32 -0
- package/dist/mcp/load-mcp-host.d.ts.map +1 -0
- package/dist/mcp/load-mcp-host.js +49 -0
- package/dist/mcp/load-mcp-host.js.map +1 -0
- package/dist/mcp/oauth/callback-server.d.ts +73 -0
- package/dist/mcp/oauth/callback-server.d.ts.map +1 -0
- package/dist/mcp/oauth/callback-server.js +280 -0
- package/dist/mcp/oauth/callback-server.js.map +1 -0
- package/dist/mcp/oauth/config-hash.d.ts +24 -0
- package/dist/mcp/oauth/config-hash.d.ts.map +1 -0
- package/dist/mcp/oauth/config-hash.js +55 -0
- package/dist/mcp/oauth/config-hash.js.map +1 -0
- package/dist/mcp/oauth/error-normalize.d.ts +39 -0
- package/dist/mcp/oauth/error-normalize.d.ts.map +1 -0
- package/dist/mcp/oauth/error-normalize.js +91 -0
- package/dist/mcp/oauth/error-normalize.js.map +1 -0
- package/dist/mcp/oauth/provider.d.ts +190 -0
- package/dist/mcp/oauth/provider.d.ts.map +1 -0
- package/dist/mcp/oauth/provider.js +305 -0
- package/dist/mcp/oauth/provider.js.map +1 -0
- package/dist/mcp/oauth/refresh-coalescer.d.ts +46 -0
- package/dist/mcp/oauth/refresh-coalescer.d.ts.map +1 -0
- package/dist/mcp/oauth/refresh-coalescer.js +77 -0
- package/dist/mcp/oauth/refresh-coalescer.js.map +1 -0
- package/dist/mcp/oauth/sdk-shapes.d.ts +77 -0
- package/dist/mcp/oauth/sdk-shapes.d.ts.map +1 -0
- package/dist/mcp/oauth/sdk-shapes.js +21 -0
- package/dist/mcp/oauth/sdk-shapes.js.map +1 -0
- package/dist/mcp/parse.d.ts +28 -0
- package/dist/mcp/parse.d.ts.map +1 -0
- package/dist/mcp/parse.js +209 -0
- package/dist/mcp/parse.js.map +1 -0
- package/dist/mcp/prompts.d.ts +31 -0
- package/dist/mcp/prompts.d.ts.map +1 -0
- package/dist/mcp/prompts.js +71 -0
- package/dist/mcp/prompts.js.map +1 -0
- package/dist/mcp/redact.d.ts +62 -0
- package/dist/mcp/redact.d.ts.map +1 -0
- package/dist/mcp/redact.js +87 -0
- package/dist/mcp/redact.js.map +1 -0
- package/dist/mcp/resources.d.ts +70 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +170 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/types.d.ts +123 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +2 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/memory/frontmatter.d.ts +18 -0
- package/dist/memory/frontmatter.d.ts.map +1 -0
- package/dist/memory/frontmatter.js +81 -0
- package/dist/memory/frontmatter.js.map +1 -0
- package/dist/memory/index.d.ts +5 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +5 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/store.d.ts +44 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +237 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/memory/tools.d.ts +11 -0
- package/dist/memory/tools.d.ts.map +1 -0
- package/dist/memory/tools.js +159 -0
- package/dist/memory/tools.js.map +1 -0
- package/dist/memory/types.d.ts +32 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +20 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/plugin-api/index.d.ts +167 -0
- package/dist/plugin-api/index.d.ts.map +1 -0
- package/dist/plugin-api/index.js +151 -0
- package/dist/plugin-api/index.js.map +1 -0
- package/dist/plugin-logger/index.d.ts +21 -0
- package/dist/plugin-logger/index.d.ts.map +1 -0
- package/dist/plugin-logger/index.js +59 -0
- package/dist/plugin-logger/index.js.map +1 -0
- package/dist/session/index.d.ts +125 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +202 -0
- package/dist/session/index.js.map +1 -0
- package/dist/tools/approval.d.ts +33 -0
- package/dist/tools/approval.d.ts.map +1 -0
- package/dist/tools/approval.js +53 -0
- package/dist/tools/approval.js.map +1 -0
- package/dist/tools/builtins/_shared.d.ts +94 -0
- package/dist/tools/builtins/_shared.d.ts.map +1 -0
- package/dist/tools/builtins/_shared.js +246 -0
- package/dist/tools/builtins/_shared.js.map +1 -0
- package/dist/tools/builtins/ask-user-question.d.ts +27 -0
- package/dist/tools/builtins/ask-user-question.d.ts.map +1 -0
- package/dist/tools/builtins/ask-user-question.js +191 -0
- package/dist/tools/builtins/ask-user-question.js.map +1 -0
- package/dist/tools/builtins/bash.d.ts +3 -0
- package/dist/tools/builtins/bash.d.ts.map +1 -0
- package/dist/tools/builtins/bash.js +158 -0
- package/dist/tools/builtins/bash.js.map +1 -0
- package/dist/tools/builtins/diff.d.ts +3 -0
- package/dist/tools/builtins/diff.d.ts.map +1 -0
- package/dist/tools/builtins/diff.js +83 -0
- package/dist/tools/builtins/diff.js.map +1 -0
- package/dist/tools/builtins/edit.d.ts +3 -0
- package/dist/tools/builtins/edit.d.ts.map +1 -0
- package/dist/tools/builtins/edit.js +40 -0
- package/dist/tools/builtins/edit.js.map +1 -0
- package/dist/tools/builtins/glob.d.ts +3 -0
- package/dist/tools/builtins/glob.d.ts.map +1 -0
- package/dist/tools/builtins/glob.js +37 -0
- package/dist/tools/builtins/glob.js.map +1 -0
- package/dist/tools/builtins/grep.d.ts +3 -0
- package/dist/tools/builtins/grep.d.ts.map +1 -0
- package/dist/tools/builtins/grep.js +81 -0
- package/dist/tools/builtins/grep.js.map +1 -0
- package/dist/tools/builtins/lsp.d.ts +3 -0
- package/dist/tools/builtins/lsp.d.ts.map +1 -0
- package/dist/tools/builtins/lsp.js +102 -0
- package/dist/tools/builtins/lsp.js.map +1 -0
- package/dist/tools/builtins/pty.d.ts +64 -0
- package/dist/tools/builtins/pty.d.ts.map +1 -0
- package/dist/tools/builtins/pty.js +536 -0
- package/dist/tools/builtins/pty.js.map +1 -0
- package/dist/tools/builtins/read.d.ts +3 -0
- package/dist/tools/builtins/read.d.ts.map +1 -0
- package/dist/tools/builtins/read.js +18 -0
- package/dist/tools/builtins/read.js.map +1 -0
- package/dist/tools/builtins/web-fetch.d.ts +4 -0
- package/dist/tools/builtins/web-fetch.d.ts.map +1 -0
- package/dist/tools/builtins/web-fetch.js +353 -0
- package/dist/tools/builtins/web-fetch.js.map +1 -0
- package/dist/tools/builtins/write.d.ts +3 -0
- package/dist/tools/builtins/write.d.ts.map +1 -0
- package/dist/tools/builtins/write.js +48 -0
- package/dist/tools/builtins/write.js.map +1 -0
- package/dist/tools/builtins.d.ts +9 -0
- package/dist/tools/builtins.d.ts.map +1 -0
- package/dist/tools/builtins.js +29 -0
- package/dist/tools/builtins.js.map +1 -0
- package/dist/tools/diff.d.ts +18 -0
- package/dist/tools/diff.d.ts.map +1 -0
- package/dist/tools/diff.js +57 -0
- package/dist/tools/diff.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +9 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/permission.d.ts +120 -0
- package/dist/tools/permission.d.ts.map +1 -0
- package/dist/tools/permission.js +208 -0
- package/dist/tools/permission.js.map +1 -0
- package/dist/tools/registry.d.ts +12 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +19 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +244 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +15 -0
- package/dist/tools/types.js.map +1 -0
- package/package.json +109 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-tool.js","sourceRoot":"","sources":["../../src/core/task-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* (v23 M5 / docs/6.6 §2) Read-only workspace queries that back the desktop/web
|
|
3
|
+
* 3-pane IDE's file tree, code viewer, and environment/Git panel. These run
|
|
4
|
+
* OUTSIDE a turn — no model, no tool, no permission prompt — but stay
|
|
5
|
+
* **fail-closed on path escape** (a workspace-contained lexical guard) so a
|
|
6
|
+
* remote viewer can browse the workspace without being able to read outside it.
|
|
7
|
+
*
|
|
8
|
+
* The primitives reuse hardened building blocks: the lexical containment guard
|
|
9
|
+
* mirrors `safePath`'s read-class branch (`@chances-ai/tools` `_shared.ts`), and
|
|
10
|
+
* git goes through the same `runGit` the worktree machinery uses. They are pure
|
|
11
|
+
* functions of `(workspaceRoot, …)` so both `apps/cli` (serve) and `apps/desktop`
|
|
12
|
+
* wire them into one `EngineHost` with zero duplication.
|
|
13
|
+
*/
|
|
14
|
+
/** `read_file` content cap — the same 256 KB ceiling the diff/preview path uses
|
|
15
|
+
* (`_shared.ts` `PREVIEW_BYTE_CAP`). A larger file is truncated, not refused, so
|
|
16
|
+
* the viewer shows a head; the client offers "open externally". */
|
|
17
|
+
export declare const READ_FILE_BYTE_CAP: number;
|
|
18
|
+
/** Diff text cap — a huge diff is truncated for the viewer (the shortstat still
|
|
19
|
+
* reports the real totals). */
|
|
20
|
+
export declare const DIFF_BYTE_CAP: number;
|
|
21
|
+
export interface FileEntry {
|
|
22
|
+
name: string;
|
|
23
|
+
kind: "dir" | "file";
|
|
24
|
+
}
|
|
25
|
+
export interface ListFilesResult {
|
|
26
|
+
/** Echoes the requested dir (normalised, relative to the workspace root). */
|
|
27
|
+
dir: string;
|
|
28
|
+
entries: FileEntry[];
|
|
29
|
+
}
|
|
30
|
+
export interface ReadFileResult {
|
|
31
|
+
path: string;
|
|
32
|
+
content: string;
|
|
33
|
+
/** The file exceeded {@link READ_FILE_BYTE_CAP}; `content` is a head slice. */
|
|
34
|
+
truncated: boolean;
|
|
35
|
+
/** A NUL byte was seen in the head — `content` is empty (don't render binary). */
|
|
36
|
+
binary: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface GitFileStatus {
|
|
39
|
+
path: string;
|
|
40
|
+
/** Porcelain XY status code, e.g. `".M"`, `"M."`, `"A."`, `"??"`. */
|
|
41
|
+
status: string;
|
|
42
|
+
}
|
|
43
|
+
export interface GitStatusResult {
|
|
44
|
+
/** False when not a git repo or git is missing — the panel renders "no repo". */
|
|
45
|
+
repo: boolean;
|
|
46
|
+
/** Current branch, or null when detached / no commits / not a repo. */
|
|
47
|
+
branch: string | null;
|
|
48
|
+
ahead: number;
|
|
49
|
+
behind: number;
|
|
50
|
+
files: GitFileStatus[];
|
|
51
|
+
}
|
|
52
|
+
export interface GitDiffResult {
|
|
53
|
+
diff: string;
|
|
54
|
+
truncated: boolean;
|
|
55
|
+
shortstat: {
|
|
56
|
+
added: number;
|
|
57
|
+
removed: number;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/** Thrown when a query argument resolves outside the workspace root. The wire
|
|
61
|
+
* layer maps this to a JSON-RPC `invalidParams`. */
|
|
62
|
+
export declare class WorkspaceEscapeError extends Error {
|
|
63
|
+
constructor(p: string);
|
|
64
|
+
}
|
|
65
|
+
/** List the IMMEDIATE children of `dir` (one level, lazy) — dirs first, then
|
|
66
|
+
* files, each alphabetical; `DEFAULT_IGNORE` names omitted. Throws on escape or
|
|
67
|
+
* a non-directory / missing target. */
|
|
68
|
+
export declare function listFiles(workspaceRoot: string, dir: string): Promise<ListFilesResult>;
|
|
69
|
+
/** Read a workspace file, capped + binary-guarded. Throws on escape; an fs error
|
|
70
|
+
* (missing/permission) propagates to the wire as a server error. */
|
|
71
|
+
export declare function readWorkspaceFile(workspaceRoot: string, path: string): Promise<ReadFileResult>;
|
|
72
|
+
/** `git status --porcelain=v2 --branch` parsed into branch + ahead/behind +
|
|
73
|
+
* changed files. Not-a-repo / git-missing fails soft to `{ repo: false }`. */
|
|
74
|
+
export declare function gitStatus(workspaceRoot: string, signal?: AbortSignal): Promise<GitStatusResult>;
|
|
75
|
+
/** `git diff [-- <path>]` (patch text, capped) + `--shortstat` (real totals).
|
|
76
|
+
* Not-a-repo / git-missing → empty diff. */
|
|
77
|
+
export declare function gitDiff(workspaceRoot: string, path?: string, signal?: AbortSignal): Promise<GitDiffResult>;
|
|
78
|
+
/** Parse "N files changed, A insertions(+), B deletions(-)" → {added, removed}. */
|
|
79
|
+
export declare function parseShortstat(text: string): {
|
|
80
|
+
added: number;
|
|
81
|
+
removed: number;
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=workspace-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-query.d.ts","sourceRoot":"","sources":["../../src/core/workspace-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH;;mEAEmE;AACnE,eAAO,MAAM,kBAAkB,QAAa,CAAC;AAE7C;+BAC+B;AAC/B,eAAO,MAAM,aAAa,QAAa,CAAC;AAaxC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;CACtB;AACD,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AACD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,SAAS,EAAE,OAAO,CAAC;IACnB,kFAAkF;IAClF,MAAM,EAAE,OAAO,CAAC;CACjB;AACD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,IAAI,EAAE,OAAO,CAAC;IACd,uEAAuE;IACvE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AACD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED;oDACoD;AACpD,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,CAAC,EAAE,MAAM;CAItB;AAqCD;;uCAEuC;AACvC,wBAAsB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAiB5F;AAED;oEACoE;AACpE,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAoBpG;AAED;8EAC8E;AAC9E,wBAAsB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAgDrG;AAED;4CAC4C;AAC5C,wBAAsB,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAmBhH;AAED,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAO/E"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* (v23 M5 / docs/6.6 §2) Read-only workspace queries that back the desktop/web
|
|
3
|
+
* 3-pane IDE's file tree, code viewer, and environment/Git panel. These run
|
|
4
|
+
* OUTSIDE a turn — no model, no tool, no permission prompt — but stay
|
|
5
|
+
* **fail-closed on path escape** (a workspace-contained lexical guard) so a
|
|
6
|
+
* remote viewer can browse the workspace without being able to read outside it.
|
|
7
|
+
*
|
|
8
|
+
* The primitives reuse hardened building blocks: the lexical containment guard
|
|
9
|
+
* mirrors `safePath`'s read-class branch (`@chances-ai/tools` `_shared.ts`), and
|
|
10
|
+
* git goes through the same `runGit` the worktree machinery uses. They are pure
|
|
11
|
+
* functions of `(workspaceRoot, …)` so both `apps/cli` (serve) and `apps/desktop`
|
|
12
|
+
* wire them into one `EngineHost` with zero duplication.
|
|
13
|
+
*/
|
|
14
|
+
import { open, readdir, realpath } from "node:fs/promises";
|
|
15
|
+
import { isAbsolute, relative, resolve, sep } from "node:path";
|
|
16
|
+
import { runGit } from "./worktree/git.js";
|
|
17
|
+
/** `read_file` content cap — the same 256 KB ceiling the diff/preview path uses
|
|
18
|
+
* (`_shared.ts` `PREVIEW_BYTE_CAP`). A larger file is truncated, not refused, so
|
|
19
|
+
* the viewer shows a head; the client offers "open externally". */
|
|
20
|
+
export const READ_FILE_BYTE_CAP = 256 * 1024;
|
|
21
|
+
/** Diff text cap — a huge diff is truncated for the viewer (the shortstat still
|
|
22
|
+
* reports the real totals). */
|
|
23
|
+
export const DIFF_BYTE_CAP = 512 * 1024;
|
|
24
|
+
/** Default directory-walk ignores, matching `@chances-ai/native`'s glob/grep set
|
|
25
|
+
* (`native/src/index.ts`). The MVP file tree honours these common ignores;
|
|
26
|
+
* full `.gitignore` parsing is a follow-up (docs/6.6 §8). */
|
|
27
|
+
const DEFAULT_IGNORE = new Set([
|
|
28
|
+
"node_modules",
|
|
29
|
+
".git",
|
|
30
|
+
"dist",
|
|
31
|
+
"target",
|
|
32
|
+
".turbo",
|
|
33
|
+
]);
|
|
34
|
+
/** Thrown when a query argument resolves outside the workspace root. The wire
|
|
35
|
+
* layer maps this to a JSON-RPC `invalidParams`. */
|
|
36
|
+
export class WorkspaceEscapeError extends Error {
|
|
37
|
+
constructor(p) {
|
|
38
|
+
super(`Path escapes workspace: ${p}`);
|
|
39
|
+
this.name = "WorkspaceEscapeError";
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** True when `target` is `root` itself or strictly inside it (path-relative,
|
|
43
|
+
* Windows-safe). */
|
|
44
|
+
function within(root, target) {
|
|
45
|
+
const rel = relative(root, target);
|
|
46
|
+
return rel === "" || (!rel.startsWith(`..${sep}`) && rel !== ".." && !isAbsolute(rel));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Lexical containment guard — read-only, fail-closed. Resolves `p` against the
|
|
50
|
+
* workspace root and rejects an escape (`..` / absolute outside). The cheap first
|
|
51
|
+
* gate; for an existing target, {@link realContain} ALSO resolves symlinks (the
|
|
52
|
+
* codex MUST below).
|
|
53
|
+
*/
|
|
54
|
+
function safeResolve(workspaceRoot, p) {
|
|
55
|
+
const abs = isAbsolute(p) ? p : resolve(workspaceRoot, p);
|
|
56
|
+
if (!within(workspaceRoot, abs))
|
|
57
|
+
throw new WorkspaceEscapeError(p);
|
|
58
|
+
return abs;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* (codex M5 MUST) Resolve symlinks before reading. These queries are exposed to
|
|
62
|
+
* REMOTE viewers (web/phone over the wire), so — unlike the local agent's read
|
|
63
|
+
* tool, where reading through an inbound symlink is a benign convenience — a
|
|
64
|
+
* workspace symlink pointing OUTSIDE the root is an exfiltration vector. We
|
|
65
|
+
* realpath BOTH the root and the (existing) target and re-check containment, so a
|
|
66
|
+
* symlink-to-`/etc/...` is rejected. Lexical `safeResolve` runs first (cheap);
|
|
67
|
+
* this hardens the existing-path read/list cases.
|
|
68
|
+
*/
|
|
69
|
+
async function realContain(workspaceRoot, abs, original) {
|
|
70
|
+
const realRoot = await realpath(workspaceRoot);
|
|
71
|
+
const realAbs = await realpath(abs); // throws ENOENT for a missing target → surfaced as a server error
|
|
72
|
+
if (!within(realRoot, realAbs))
|
|
73
|
+
throw new WorkspaceEscapeError(original);
|
|
74
|
+
return realAbs;
|
|
75
|
+
}
|
|
76
|
+
/** List the IMMEDIATE children of `dir` (one level, lazy) — dirs first, then
|
|
77
|
+
* files, each alphabetical; `DEFAULT_IGNORE` names omitted. Throws on escape or
|
|
78
|
+
* a non-directory / missing target. */
|
|
79
|
+
export async function listFiles(workspaceRoot, dir) {
|
|
80
|
+
const lexical = safeResolve(workspaceRoot, dir || ".");
|
|
81
|
+
const abs = await realContain(workspaceRoot, lexical, dir || ".");
|
|
82
|
+
const dirents = await readdir(abs, { withFileTypes: true });
|
|
83
|
+
const entries = [];
|
|
84
|
+
for (const d of dirents) {
|
|
85
|
+
if (DEFAULT_IGNORE.has(d.name))
|
|
86
|
+
continue;
|
|
87
|
+
entries.push({ name: d.name, kind: d.isDirectory() ? "dir" : "file" });
|
|
88
|
+
}
|
|
89
|
+
entries.sort((a, b) => {
|
|
90
|
+
if (a.kind !== b.kind)
|
|
91
|
+
return a.kind === "dir" ? -1 : 1;
|
|
92
|
+
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
|
|
93
|
+
});
|
|
94
|
+
// Echo the LOGICAL path (relative to the requested root), not the realpath'd
|
|
95
|
+
// target — the client keyed its tree on the path it asked for.
|
|
96
|
+
const normRel = relative(workspaceRoot, lexical);
|
|
97
|
+
return { dir: normRel === "" ? "." : normRel, entries };
|
|
98
|
+
}
|
|
99
|
+
/** Read a workspace file, capped + binary-guarded. Throws on escape; an fs error
|
|
100
|
+
* (missing/permission) propagates to the wire as a server error. */
|
|
101
|
+
export async function readWorkspaceFile(workspaceRoot, path) {
|
|
102
|
+
const lexical = safeResolve(workspaceRoot, path);
|
|
103
|
+
const abs = await realContain(workspaceRoot, lexical, path);
|
|
104
|
+
// (codex M5 MUST) Read AT MOST cap+1 bytes via a file handle — never load the
|
|
105
|
+
// whole file into memory just to slice it (a multi-GB file would OOM). The
|
|
106
|
+
// extra byte tells us whether the file was truncated without a separate stat.
|
|
107
|
+
const fh = await open(abs, "r");
|
|
108
|
+
try {
|
|
109
|
+
const buf = Buffer.alloc(READ_FILE_BYTE_CAP + 1);
|
|
110
|
+
const { bytesRead } = await fh.read(buf, 0, READ_FILE_BYTE_CAP + 1, 0);
|
|
111
|
+
const truncated = bytesRead > READ_FILE_BYTE_CAP;
|
|
112
|
+
const head = buf.subarray(0, Math.min(bytesRead, READ_FILE_BYTE_CAP));
|
|
113
|
+
// Binary sniff: a NUL byte in the head ⇒ don't decode/render.
|
|
114
|
+
if (head.subarray(0, Math.min(head.length, 8192)).includes(0)) {
|
|
115
|
+
return { path, content: "", truncated: false, binary: true };
|
|
116
|
+
}
|
|
117
|
+
return { path, content: head.toString("utf8"), truncated, binary: false };
|
|
118
|
+
}
|
|
119
|
+
finally {
|
|
120
|
+
await fh.close();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** `git status --porcelain=v2 --branch` parsed into branch + ahead/behind +
|
|
124
|
+
* changed files. Not-a-repo / git-missing fails soft to `{ repo: false }`. */
|
|
125
|
+
export async function gitStatus(workspaceRoot, signal) {
|
|
126
|
+
const empty = { repo: false, branch: null, ahead: 0, behind: 0, files: [] };
|
|
127
|
+
let res;
|
|
128
|
+
try {
|
|
129
|
+
res = await runGit(["status", "--porcelain=v2", "--branch"], { cwd: workspaceRoot, signal, allowNonZero: true });
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return empty; // git binary missing → WorktreeError; render "no repo"
|
|
133
|
+
}
|
|
134
|
+
if (!res.ok)
|
|
135
|
+
return empty; // not a git repo
|
|
136
|
+
let branch = null;
|
|
137
|
+
let ahead = 0;
|
|
138
|
+
let behind = 0;
|
|
139
|
+
const files = [];
|
|
140
|
+
for (const line of res.stdout.split("\n")) {
|
|
141
|
+
if (line.length === 0)
|
|
142
|
+
continue;
|
|
143
|
+
if (line.startsWith("# branch.head ")) {
|
|
144
|
+
const v = line.slice("# branch.head ".length).trim();
|
|
145
|
+
branch = v === "(detached)" ? null : v;
|
|
146
|
+
}
|
|
147
|
+
else if (line.startsWith("# branch.ab ")) {
|
|
148
|
+
// "# branch.ab +A -B"
|
|
149
|
+
const m = line.match(/\+(-?\d+)\s+-(-?\d+)/);
|
|
150
|
+
if (m) {
|
|
151
|
+
ahead = Number.parseInt(m[1] ?? "0", 10);
|
|
152
|
+
behind = Number.parseInt(m[2] ?? "0", 10);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else if (line.startsWith("1 ") || line.startsWith("2 ")) {
|
|
156
|
+
// porcelain v2:
|
|
157
|
+
// "1 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <path>" → path at field 8
|
|
158
|
+
// "2 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <Xscore> <path>\t<orig>" → field 9
|
|
159
|
+
// (codex M5 SHOULD) the `2 ` rename/copy record has a SCORE at field 8, so
|
|
160
|
+
// the new path starts at field 9 — slicing from 8 mis-parses it as "R100 new".
|
|
161
|
+
const fields = line.split(" ");
|
|
162
|
+
const status = fields[1] ?? "??";
|
|
163
|
+
const isRename = line.startsWith("2 ");
|
|
164
|
+
const rest = fields.slice(isRename ? 9 : 8).join(" ");
|
|
165
|
+
const path = (isRename ? (rest.split("\t")[0] ?? rest) : rest).trim();
|
|
166
|
+
if (path)
|
|
167
|
+
files.push({ path, status });
|
|
168
|
+
}
|
|
169
|
+
else if (line.startsWith("u ")) {
|
|
170
|
+
const fields = line.split(" ");
|
|
171
|
+
const status = fields[1] ?? "UU";
|
|
172
|
+
const path = fields.slice(10).join(" ").trim();
|
|
173
|
+
if (path)
|
|
174
|
+
files.push({ path, status });
|
|
175
|
+
}
|
|
176
|
+
else if (line.startsWith("? ")) {
|
|
177
|
+
files.push({ path: line.slice(2).trim(), status: "??" });
|
|
178
|
+
}
|
|
179
|
+
// "! " (ignored) → skipped.
|
|
180
|
+
}
|
|
181
|
+
return { repo: true, branch, ahead, behind, files };
|
|
182
|
+
}
|
|
183
|
+
/** `git diff [-- <path>]` (patch text, capped) + `--shortstat` (real totals).
|
|
184
|
+
* Not-a-repo / git-missing → empty diff. */
|
|
185
|
+
export async function gitDiff(workspaceRoot, path, signal) {
|
|
186
|
+
const empty = { diff: "", truncated: false, shortstat: { added: 0, removed: 0 } };
|
|
187
|
+
// Defense-in-depth: a diff path is workspace-relative; reject an escape before
|
|
188
|
+
// handing it to git (lexical is enough — git won't follow it outside the repo).
|
|
189
|
+
if (path)
|
|
190
|
+
safeResolve(workspaceRoot, path);
|
|
191
|
+
const pathArgs = path ? ["--", path] : [];
|
|
192
|
+
let diffRes;
|
|
193
|
+
let statRes;
|
|
194
|
+
try {
|
|
195
|
+
diffRes = await runGit(["diff", ...pathArgs], { cwd: workspaceRoot, signal, allowNonZero: true });
|
|
196
|
+
statRes = await runGit(["diff", "--shortstat", ...pathArgs], { cwd: workspaceRoot, signal, allowNonZero: true });
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
return empty; // git missing
|
|
200
|
+
}
|
|
201
|
+
if (!diffRes.ok)
|
|
202
|
+
return empty;
|
|
203
|
+
const full = diffRes.stdout;
|
|
204
|
+
const truncated = Buffer.byteLength(full, "utf8") > DIFF_BYTE_CAP;
|
|
205
|
+
const diff = truncated ? full.slice(0, DIFF_BYTE_CAP) : full;
|
|
206
|
+
return { diff, truncated, shortstat: parseShortstat(statRes.ok ? statRes.stdout : "") };
|
|
207
|
+
}
|
|
208
|
+
/** Parse "N files changed, A insertions(+), B deletions(-)" → {added, removed}. */
|
|
209
|
+
export function parseShortstat(text) {
|
|
210
|
+
const ins = text.match(/(\d+) insertion/);
|
|
211
|
+
const del = text.match(/(\d+) deletion/);
|
|
212
|
+
return {
|
|
213
|
+
added: ins ? Number.parseInt(ins[1] ?? "0", 10) : 0,
|
|
214
|
+
removed: del ? Number.parseInt(del[1] ?? "0", 10) : 0,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=workspace-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-query.js","sourceRoot":"","sources":["../../src/core/workspace-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface ActiveMarker {
|
|
2
|
+
pid: number;
|
|
3
|
+
hostname: string;
|
|
4
|
+
createdAt: number;
|
|
5
|
+
lastHeartbeat: number;
|
|
6
|
+
}
|
|
7
|
+
/** Writes the initial active marker for a worktree. Stored inside the
|
|
8
|
+
* worktree's git-admin dir (so `git status` doesn't see it). Must be called
|
|
9
|
+
* AFTER `git worktree add` succeeds (the admin dir is created by that
|
|
10
|
+
* call). */
|
|
11
|
+
export declare function writeActiveMarker(worktreePath: string, now?: number): Promise<void>;
|
|
12
|
+
/** Cheap heartbeat — updates the marker's `lastHeartbeat` JSON field
|
|
13
|
+
* (NOT just mtime — codex Round-2 MUST-FIX #5: GC reads the JSON field,
|
|
14
|
+
* not file mtime). Called from the engine's `runTurn` top when running
|
|
15
|
+
* inside an isolated subagent. Silent on ENOENT (worktree already torn
|
|
16
|
+
* down by parent) so a heartbeat after cleanup does not surface a noisy
|
|
17
|
+
* error onto the bus. */
|
|
18
|
+
export declare function refreshActiveMarker(worktreePath: string, now?: number): Promise<void>;
|
|
19
|
+
/** Returns the marker contents, or `undefined` when missing / malformed.
|
|
20
|
+
* Errors are squashed because the GC treats "missing marker" the same as
|
|
21
|
+
* "no live owner" — the worktree IS eligible for deletion when nobody
|
|
22
|
+
* claims it. */
|
|
23
|
+
export declare function readActiveMarker(worktreePath: string): Promise<ActiveMarker | undefined>;
|
|
24
|
+
/** Liveness probe. Local host only — for foreign hosts we conservatively
|
|
25
|
+
* return `true` so the GC won't delete a peer process's worktree.
|
|
26
|
+
* `process.kill(pid, 0)` does not deliver a signal; it just queries
|
|
27
|
+
* existence. ESRCH → not alive. EPERM → exists but unowned (still alive).
|
|
28
|
+
*
|
|
29
|
+
* (Round-1 MUST-FIX #4: PID-based liveness check.) */
|
|
30
|
+
export declare function isProcessAlive(pid: number, host: string): boolean;
|
|
31
|
+
//# sourceMappingURL=active-marker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-marker.d.ts","sourceRoot":"","sources":["../../../src/core/worktree/active-marker.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;YAGY;AACZ,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7F;AAED;;;;;yBAKyB;AACzB,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoC/F;AAED;;;gBAGgB;AAChB,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAiB9F;AAED;;;;;sDAKsD;AACtD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAUjE"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { hostname } from "node:os";
|
|
2
|
+
import { readFile, utimes, writeFile } from "node:fs/promises";
|
|
3
|
+
import { activeMarkerPathFor } from "./paths.js";
|
|
4
|
+
/** Writes the initial active marker for a worktree. Stored inside the
|
|
5
|
+
* worktree's git-admin dir (so `git status` doesn't see it). Must be called
|
|
6
|
+
* AFTER `git worktree add` succeeds (the admin dir is created by that
|
|
7
|
+
* call). */
|
|
8
|
+
export async function writeActiveMarker(worktreePath, now = Date.now()) {
|
|
9
|
+
const marker = {
|
|
10
|
+
pid: process.pid,
|
|
11
|
+
hostname: hostname(),
|
|
12
|
+
createdAt: now,
|
|
13
|
+
lastHeartbeat: now,
|
|
14
|
+
};
|
|
15
|
+
const markerPath = await activeMarkerPathFor(worktreePath);
|
|
16
|
+
await writeFile(markerPath, JSON.stringify(marker), { encoding: "utf8" });
|
|
17
|
+
}
|
|
18
|
+
/** Cheap heartbeat — updates the marker's `lastHeartbeat` JSON field
|
|
19
|
+
* (NOT just mtime — codex Round-2 MUST-FIX #5: GC reads the JSON field,
|
|
20
|
+
* not file mtime). Called from the engine's `runTurn` top when running
|
|
21
|
+
* inside an isolated subagent. Silent on ENOENT (worktree already torn
|
|
22
|
+
* down by parent) so a heartbeat after cleanup does not surface a noisy
|
|
23
|
+
* error onto the bus. */
|
|
24
|
+
export async function refreshActiveMarker(worktreePath, now = Date.now()) {
|
|
25
|
+
let markerPath;
|
|
26
|
+
try {
|
|
27
|
+
markerPath = await activeMarkerPathFor(worktreePath);
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
if (e.code === "ENOENT")
|
|
31
|
+
return;
|
|
32
|
+
throw e;
|
|
33
|
+
}
|
|
34
|
+
let raw;
|
|
35
|
+
try {
|
|
36
|
+
raw = await readFile(markerPath, "utf8");
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
if (e.code === "ENOENT")
|
|
40
|
+
return;
|
|
41
|
+
throw e;
|
|
42
|
+
}
|
|
43
|
+
let marker;
|
|
44
|
+
try {
|
|
45
|
+
marker = JSON.parse(raw);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Marker was corrupted — rewrite it from scratch as if this process
|
|
49
|
+
// had just adopted the worktree. Better than refusing the heartbeat
|
|
50
|
+
// and letting GC reclaim a still-active worktree on the next pass.
|
|
51
|
+
return writeActiveMarker(worktreePath, now);
|
|
52
|
+
}
|
|
53
|
+
marker.lastHeartbeat = now;
|
|
54
|
+
try {
|
|
55
|
+
await writeFile(markerPath, JSON.stringify(marker), { encoding: "utf8" });
|
|
56
|
+
// Also bump mtime so observability tools that watch the file see a
|
|
57
|
+
// change. `writeFile` already touches mtime on most platforms but
|
|
58
|
+
// setting explicitly keeps the contract uniform across FSes.
|
|
59
|
+
const date = new Date(now);
|
|
60
|
+
await utimes(markerPath, date, date);
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
if (e.code === "ENOENT")
|
|
64
|
+
return;
|
|
65
|
+
throw e;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/** Returns the marker contents, or `undefined` when missing / malformed.
|
|
69
|
+
* Errors are squashed because the GC treats "missing marker" the same as
|
|
70
|
+
* "no live owner" — the worktree IS eligible for deletion when nobody
|
|
71
|
+
* claims it. */
|
|
72
|
+
export async function readActiveMarker(worktreePath) {
|
|
73
|
+
try {
|
|
74
|
+
const markerPath = await activeMarkerPathFor(worktreePath);
|
|
75
|
+
const raw = await readFile(markerPath, "utf8");
|
|
76
|
+
const parsed = JSON.parse(raw);
|
|
77
|
+
if (typeof parsed.pid === "number" &&
|
|
78
|
+
typeof parsed.hostname === "string" &&
|
|
79
|
+
typeof parsed.createdAt === "number" &&
|
|
80
|
+
typeof parsed.lastHeartbeat === "number") {
|
|
81
|
+
return parsed;
|
|
82
|
+
}
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/** Liveness probe. Local host only — for foreign hosts we conservatively
|
|
90
|
+
* return `true` so the GC won't delete a peer process's worktree.
|
|
91
|
+
* `process.kill(pid, 0)` does not deliver a signal; it just queries
|
|
92
|
+
* existence. ESRCH → not alive. EPERM → exists but unowned (still alive).
|
|
93
|
+
*
|
|
94
|
+
* (Round-1 MUST-FIX #4: PID-based liveness check.) */
|
|
95
|
+
export function isProcessAlive(pid, host) {
|
|
96
|
+
if (host !== hostname())
|
|
97
|
+
return true;
|
|
98
|
+
if (!Number.isInteger(pid) || pid <= 0)
|
|
99
|
+
return false;
|
|
100
|
+
try {
|
|
101
|
+
process.kill(pid, 0);
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
catch (e) {
|
|
105
|
+
const err = e;
|
|
106
|
+
return err.code === "EPERM";
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=active-marker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-marker.js","sourceRoot":"","sources":["../../../src/core/worktree/active-marker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export interface CreateAgentWorktreeOptions {
|
|
2
|
+
signal?: AbortSignal;
|
|
3
|
+
/** Maximum slug-collision retries before SLUG_EXHAUSTED. Default 5.
|
|
4
|
+
* Each retry regenerates a fresh slug; the 32-bit space makes >1
|
|
5
|
+
* retry vanishingly rare even at 1 000 concurrent. */
|
|
6
|
+
maxSlugAttempts?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface AgentWorktreeHandle {
|
|
9
|
+
/** Canonical repo root the worktree was registered against. May differ
|
|
10
|
+
* from the caller's `cwd` if `cwd` was inside a pre-existing user
|
|
11
|
+
* worktree (`canonicalRoot` is resolved via git rev-parse). */
|
|
12
|
+
canonicalRoot: string;
|
|
13
|
+
/** Absolute path to the worktree directory. Pass this to
|
|
14
|
+
* `runWithCwd` so child tools see it as their workspace. */
|
|
15
|
+
path: string;
|
|
16
|
+
/** The branch `git worktree add -b` created, e.g.
|
|
17
|
+
* `chances/worktree-agent-3b9a7c11`. */
|
|
18
|
+
branch: string;
|
|
19
|
+
/** The slug portion (`agent-3b9a7c11`). */
|
|
20
|
+
slug: string;
|
|
21
|
+
/** Idempotent teardown. Safe to call multiple times: probes existence
|
|
22
|
+
* first, ignores ENOENT, and lets git deduplicate "already removed". */
|
|
23
|
+
cleanup(): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Creates a fresh `.chances/worktrees/<slug>` worktree for an isolated
|
|
27
|
+
* subagent. Per Round-1:
|
|
28
|
+
*
|
|
29
|
+
* - AbortSignal-aware: cancellation kills the in-flight `git worktree add`
|
|
30
|
+
* and runs idempotent cleanup before rethrowing (MUST-FIX #3).
|
|
31
|
+
* - Slug-collision retry up to `maxSlugAttempts` (NICE #2).
|
|
32
|
+
* - Canonical-root resolution so `chances`-from-inside-a-user-worktree
|
|
33
|
+
* doesn't nest a new worktree under the user's (SHOULD-FIX #3).
|
|
34
|
+
* - `.git/info/exclude` ensured for `.chances/worktrees/` so the parent's
|
|
35
|
+
* `git status` stays clean (SHOULD-FIX #1).
|
|
36
|
+
* - Writes the `.chances-active` heartbeat marker so cross-process GC can
|
|
37
|
+
* detect a live owner (MUST-FIX #4 + SHOULD-FIX #5).
|
|
38
|
+
*/
|
|
39
|
+
export declare function createAgentWorktree(cwd: string, opts?: CreateAgentWorktreeOptions): Promise<AgentWorktreeHandle>;
|
|
40
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/core/worktree/create.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;0DAEsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC;;mEAE+D;IAC/D,aAAa,EAAE,MAAM,CAAC;IACtB;gEAC4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb;4CACwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb;4EACwE;IACxE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,0BAA+B,GACpC,OAAO,CAAC,mBAAmB,CAAC,CA2E9B"}
|