@sema-ai/core 1.275.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5433 -0
- package/LICENSE +27 -0
- package/NOTICE.md +30 -0
- package/README.md +1040 -0
- package/dist/agents/agent-definition.d.ts +10 -0
- package/dist/agents/agent-definition.d.ts.map +1 -0
- package/dist/agents/agent-definition.js +18 -0
- package/dist/agents/agent-definition.js.map +1 -0
- package/dist/agents/builtin-agents.d.ts +69 -0
- package/dist/agents/builtin-agents.d.ts.map +1 -0
- package/dist/agents/builtin-agents.js +177 -0
- package/dist/agents/builtin-agents.js.map +1 -0
- package/dist/agents/cascade.d.ts +101 -0
- package/dist/agents/cascade.d.ts.map +1 -0
- package/dist/agents/cascade.js +189 -0
- package/dist/agents/cascade.js.map +1 -0
- package/dist/agents/observer.d.ts +209 -0
- package/dist/agents/observer.d.ts.map +1 -0
- package/dist/agents/observer.js +495 -0
- package/dist/agents/observer.js.map +1 -0
- package/dist/agents/repair-loop.d.ts +236 -0
- package/dist/agents/repair-loop.d.ts.map +1 -0
- package/dist/agents/repair-loop.js +293 -0
- package/dist/agents/repair-loop.js.map +1 -0
- package/dist/agents/session-util.d.ts +8 -0
- package/dist/agents/session-util.d.ts.map +1 -0
- package/dist/agents/session-util.js +9 -0
- package/dist/agents/session-util.js.map +1 -0
- package/dist/agents/subagent-steps.d.ts +93 -0
- package/dist/agents/subagent-steps.d.ts.map +1 -0
- package/dist/agents/subagent-steps.js +206 -0
- package/dist/agents/subagent-steps.js.map +1 -0
- package/dist/agents/subagent.d.ts +441 -0
- package/dist/agents/subagent.d.ts.map +1 -0
- package/dist/agents/subagent.js +2492 -0
- package/dist/agents/subagent.js.map +1 -0
- package/dist/agents/suspend-guard.d.ts +35 -0
- package/dist/agents/suspend-guard.d.ts.map +1 -0
- package/dist/agents/suspend-guard.js +48 -0
- package/dist/agents/suspend-guard.js.map +1 -0
- package/dist/agents/teacher.d.ts +137 -0
- package/dist/agents/teacher.d.ts.map +1 -0
- package/dist/agents/teacher.js +575 -0
- package/dist/agents/teacher.js.map +1 -0
- package/dist/agents/team.d.ts +211 -0
- package/dist/agents/team.d.ts.map +1 -0
- package/dist/agents/team.js +293 -0
- package/dist/agents/team.js.map +1 -0
- package/dist/agents/tool-filter.d.ts +29 -0
- package/dist/agents/tool-filter.d.ts.map +1 -0
- package/dist/agents/tool-filter.js +50 -0
- package/dist/agents/tool-filter.js.map +1 -0
- package/dist/agents/verify.d.ts +177 -0
- package/dist/agents/verify.d.ts.map +1 -0
- package/dist/agents/verify.js +305 -0
- package/dist/agents/verify.js.map +1 -0
- package/dist/bench/metrics.d.ts +714 -0
- package/dist/bench/metrics.d.ts.map +1 -0
- package/dist/bench/metrics.js +618 -0
- package/dist/bench/metrics.js.map +1 -0
- package/dist/bin/sema-tb.d.ts +3 -0
- package/dist/bin/sema-tb.d.ts.map +1 -0
- package/dist/bin/sema-tb.js +516 -0
- package/dist/bin/sema-tb.js.map +1 -0
- package/dist/bin/tb-env.d.ts +13 -0
- package/dist/bin/tb-env.d.ts.map +1 -0
- package/dist/bin/tb-env.js +26 -0
- package/dist/bin/tb-env.js.map +1 -0
- package/dist/brain/anthropic.d.ts +46 -0
- package/dist/brain/anthropic.d.ts.map +1 -0
- package/dist/brain/anthropic.js +830 -0
- package/dist/brain/anthropic.js.map +1 -0
- package/dist/brain/circuit-breaker.d.ts +46 -0
- package/dist/brain/circuit-breaker.d.ts.map +1 -0
- package/dist/brain/circuit-breaker.js +173 -0
- package/dist/brain/circuit-breaker.js.map +1 -0
- package/dist/brain/degrading.d.ts +98 -0
- package/dist/brain/degrading.d.ts.map +1 -0
- package/dist/brain/degrading.js +249 -0
- package/dist/brain/degrading.js.map +1 -0
- package/dist/brain/errors.d.ts +31 -0
- package/dist/brain/errors.d.ts.map +1 -0
- package/dist/brain/errors.js +58 -0
- package/dist/brain/errors.js.map +1 -0
- package/dist/brain/failover.d.ts +18 -0
- package/dist/brain/failover.d.ts.map +1 -0
- package/dist/brain/failover.js +118 -0
- package/dist/brain/failover.js.map +1 -0
- package/dist/brain/model-presets.d.ts +36 -0
- package/dist/brain/model-presets.d.ts.map +1 -0
- package/dist/brain/model-presets.js +54 -0
- package/dist/brain/model-presets.js.map +1 -0
- package/dist/brain/openai.d.ts +43 -0
- package/dist/brain/openai.d.ts.map +1 -0
- package/dist/brain/openai.js +784 -0
- package/dist/brain/openai.js.map +1 -0
- package/dist/brain/reasoning.d.ts +138 -0
- package/dist/brain/reasoning.d.ts.map +1 -0
- package/dist/brain/reasoning.js +146 -0
- package/dist/brain/reasoning.js.map +1 -0
- package/dist/brain/repetition.d.ts +60 -0
- package/dist/brain/repetition.d.ts.map +1 -0
- package/dist/brain/repetition.js +121 -0
- package/dist/brain/repetition.js.map +1 -0
- package/dist/brain/request-params.d.ts +29 -0
- package/dist/brain/request-params.d.ts.map +1 -0
- package/dist/brain/request-params.js +78 -0
- package/dist/brain/request-params.js.map +1 -0
- package/dist/brain/retry.d.ts +18 -0
- package/dist/brain/retry.d.ts.map +1 -0
- package/dist/brain/retry.js +42 -0
- package/dist/brain/retry.js.map +1 -0
- package/dist/brain/routing.d.ts +19 -0
- package/dist/brain/routing.d.ts.map +1 -0
- package/dist/brain/routing.js +44 -0
- package/dist/brain/routing.js.map +1 -0
- package/dist/brain/status-sink.d.ts +46 -0
- package/dist/brain/status-sink.d.ts.map +1 -0
- package/dist/brain/status-sink.js +36 -0
- package/dist/brain/status-sink.js.map +1 -0
- package/dist/brain/stream-engine.d.ts +85 -0
- package/dist/brain/stream-engine.d.ts.map +1 -0
- package/dist/brain/stream-engine.js +391 -0
- package/dist/brain/stream-engine.js.map +1 -0
- package/dist/brain/timeout.d.ts +44 -0
- package/dist/brain/timeout.d.ts.map +1 -0
- package/dist/brain/timeout.js +41 -0
- package/dist/brain/timeout.js.map +1 -0
- package/dist/brain/tool-call-repair.d.ts +15 -0
- package/dist/brain/tool-call-repair.d.ts.map +1 -0
- package/dist/brain/tool-call-repair.js +67 -0
- package/dist/brain/tool-call-repair.js.map +1 -0
- package/dist/brain/walltime.d.ts +14 -0
- package/dist/brain/walltime.d.ts.map +1 -0
- package/dist/brain/walltime.js +14 -0
- package/dist/brain/walltime.js.map +1 -0
- package/dist/core/arg-summary.d.ts +19 -0
- package/dist/core/arg-summary.d.ts.map +1 -0
- package/dist/core/arg-summary.js +96 -0
- package/dist/core/arg-summary.js.map +1 -0
- package/dist/core/ask-question.d.ts +113 -0
- package/dist/core/ask-question.d.ts.map +1 -0
- package/dist/core/ask-question.js +246 -0
- package/dist/core/ask-question.js.map +1 -0
- package/dist/core/auto-compaction.d.ts +341 -0
- package/dist/core/auto-compaction.d.ts.map +1 -0
- package/dist/core/auto-compaction.js +495 -0
- package/dist/core/auto-compaction.js.map +1 -0
- package/dist/core/auto-promote.d.ts +126 -0
- package/dist/core/auto-promote.d.ts.map +1 -0
- package/dist/core/auto-promote.js +171 -0
- package/dist/core/auto-promote.js.map +1 -0
- package/dist/core/background-shell.d.ts +128 -0
- package/dist/core/background-shell.d.ts.map +1 -0
- package/dist/core/background-shell.js +42 -0
- package/dist/core/background-shell.js.map +1 -0
- package/dist/core/cache-break-detector.d.ts +63 -0
- package/dist/core/cache-break-detector.d.ts.map +1 -0
- package/dist/core/cache-break-detector.js +0 -0
- package/dist/core/cache-break-detector.js.map +1 -0
- package/dist/core/canonical-json.d.ts +45 -0
- package/dist/core/canonical-json.d.ts.map +1 -0
- package/dist/core/canonical-json.js +132 -0
- package/dist/core/canonical-json.js.map +1 -0
- package/dist/core/checkpoint-store.d.ts +1101 -0
- package/dist/core/checkpoint-store.d.ts.map +1 -0
- package/dist/core/checkpoint-store.js +514 -0
- package/dist/core/checkpoint-store.js.map +1 -0
- package/dist/core/consolidate-scope.d.ts +94 -0
- package/dist/core/consolidate-scope.d.ts.map +1 -0
- package/dist/core/consolidate-scope.js +158 -0
- package/dist/core/consolidate-scope.js.map +1 -0
- package/dist/core/context-edit.d.ts +82 -0
- package/dist/core/context-edit.d.ts.map +1 -0
- package/dist/core/context-edit.js +149 -0
- package/dist/core/context-edit.js.map +1 -0
- package/dist/core/context-guard.d.ts +43 -0
- package/dist/core/context-guard.d.ts.map +1 -0
- package/dist/core/context-guard.js +171 -0
- package/dist/core/context-guard.js.map +1 -0
- package/dist/core/dynamic-recall.d.ts +100 -0
- package/dist/core/dynamic-recall.d.ts.map +1 -0
- package/dist/core/dynamic-recall.js +108 -0
- package/dist/core/dynamic-recall.js.map +1 -0
- package/dist/core/exec-gate.d.ts +74 -0
- package/dist/core/exec-gate.d.ts.map +1 -0
- package/dist/core/exec-gate.js +143 -0
- package/dist/core/exec-gate.js.map +1 -0
- package/dist/core/exec-output-tail.d.ts +37 -0
- package/dist/core/exec-output-tail.d.ts.map +1 -0
- package/dist/core/exec-output-tail.js +63 -0
- package/dist/core/exec-output-tail.js.map +1 -0
- package/dist/core/file-snapshot-store.d.ts +137 -0
- package/dist/core/file-snapshot-store.d.ts.map +1 -0
- package/dist/core/file-snapshot-store.js +319 -0
- package/dist/core/file-snapshot-store.js.map +1 -0
- package/dist/core/git-worktree-env.d.ts +41 -0
- package/dist/core/git-worktree-env.d.ts.map +1 -0
- package/dist/core/git-worktree-env.js +64 -0
- package/dist/core/git-worktree-env.js.map +1 -0
- package/dist/core/hooks.d.ts +372 -0
- package/dist/core/hooks.d.ts.map +1 -0
- package/dist/core/hooks.js +269 -0
- package/dist/core/hooks.js.map +1 -0
- package/dist/core/lsp-diagnostics.d.ts +74 -0
- package/dist/core/lsp-diagnostics.d.ts.map +1 -0
- package/dist/core/lsp-diagnostics.js +125 -0
- package/dist/core/lsp-diagnostics.js.map +1 -0
- package/dist/core/lsp-protocol.d.ts +28 -0
- package/dist/core/lsp-protocol.d.ts.map +1 -0
- package/dist/core/lsp-protocol.js +179 -0
- package/dist/core/lsp-protocol.js.map +1 -0
- package/dist/core/lsp-session.d.ts +56 -0
- package/dist/core/lsp-session.d.ts.map +1 -0
- package/dist/core/lsp-session.js +185 -0
- package/dist/core/lsp-session.js.map +1 -0
- package/dist/core/lsp.d.ts +132 -0
- package/dist/core/lsp.d.ts.map +1 -0
- package/dist/core/lsp.js +147 -0
- package/dist/core/lsp.js.map +1 -0
- package/dist/core/mcp.d.ts +294 -0
- package/dist/core/mcp.d.ts.map +1 -0
- package/dist/core/mcp.js +992 -0
- package/dist/core/mcp.js.map +1 -0
- package/dist/core/media-byte-cap.d.ts +34 -0
- package/dist/core/media-byte-cap.d.ts.map +1 -0
- package/dist/core/media-byte-cap.js +76 -0
- package/dist/core/media-byte-cap.js.map +1 -0
- package/dist/core/memory-engine/data-plane.d.ts +103 -0
- package/dist/core/memory-engine/data-plane.d.ts.map +1 -0
- package/dist/core/memory-engine/data-plane.js +272 -0
- package/dist/core/memory-engine/data-plane.js.map +1 -0
- package/dist/core/memory-engine/dual-root.d.ts +40 -0
- package/dist/core/memory-engine/dual-root.d.ts.map +1 -0
- package/dist/core/memory-engine/dual-root.js +95 -0
- package/dist/core/memory-engine/dual-root.js.map +1 -0
- package/dist/core/memory-engine/engine.d.ts +161 -0
- package/dist/core/memory-engine/engine.d.ts.map +1 -0
- package/dist/core/memory-engine/engine.js +1110 -0
- package/dist/core/memory-engine/engine.js.map +1 -0
- package/dist/core/memory-engine/file-backend.d.ts +162 -0
- package/dist/core/memory-engine/file-backend.d.ts.map +1 -0
- package/dist/core/memory-engine/file-backend.js +948 -0
- package/dist/core/memory-engine/file-backend.js.map +1 -0
- package/dist/core/memory-engine/frontmatter.d.ts +24 -0
- package/dist/core/memory-engine/frontmatter.d.ts.map +1 -0
- package/dist/core/memory-engine/frontmatter.js +135 -0
- package/dist/core/memory-engine/frontmatter.js.map +1 -0
- package/dist/core/memory-engine/index.d.ts +13 -0
- package/dist/core/memory-engine/index.d.ts.map +1 -0
- package/dist/core/memory-engine/index.js +28 -0
- package/dist/core/memory-engine/index.js.map +1 -0
- package/dist/core/memory-engine/layout.d.ts +123 -0
- package/dist/core/memory-engine/layout.d.ts.map +1 -0
- package/dist/core/memory-engine/layout.js +643 -0
- package/dist/core/memory-engine/layout.js.map +1 -0
- package/dist/core/memory-engine/memory-backend-contract.d.ts +22 -0
- package/dist/core/memory-engine/memory-backend-contract.d.ts.map +1 -0
- package/dist/core/memory-engine/memory-backend-contract.js +271 -0
- package/dist/core/memory-engine/memory-backend-contract.js.map +1 -0
- package/dist/core/memory-engine/migrate.d.ts +17 -0
- package/dist/core/memory-engine/migrate.d.ts.map +1 -0
- package/dist/core/memory-engine/migrate.js +35 -0
- package/dist/core/memory-engine/migrate.js.map +1 -0
- package/dist/core/memory-engine/scan.d.ts +20 -0
- package/dist/core/memory-engine/scan.d.ts.map +1 -0
- package/dist/core/memory-engine/scan.js +84 -0
- package/dist/core/memory-engine/scan.js.map +1 -0
- package/dist/core/memory-engine/scope-contract.d.ts +104 -0
- package/dist/core/memory-engine/scope-contract.d.ts.map +1 -0
- package/dist/core/memory-engine/scope-contract.js +288 -0
- package/dist/core/memory-engine/scope-contract.js.map +1 -0
- package/dist/core/memory-engine/sync-client.d.ts +100 -0
- package/dist/core/memory-engine/sync-client.d.ts.map +1 -0
- package/dist/core/memory-engine/sync-client.js +328 -0
- package/dist/core/memory-engine/sync-client.js.map +1 -0
- package/dist/core/memory-engine/sync.d.ts +97 -0
- package/dist/core/memory-engine/sync.d.ts.map +1 -0
- package/dist/core/memory-engine/sync.js +91 -0
- package/dist/core/memory-engine/sync.js.map +1 -0
- package/dist/core/memory-engine/types.d.ts +279 -0
- package/dist/core/memory-engine/types.d.ts.map +1 -0
- package/dist/core/memory-engine/types.js +9 -0
- package/dist/core/memory-engine/types.js.map +1 -0
- package/dist/core/memory-recall.d.ts +261 -0
- package/dist/core/memory-recall.d.ts.map +1 -0
- package/dist/core/memory-recall.js +600 -0
- package/dist/core/memory-recall.js.map +1 -0
- package/dist/core/memory-vector.d.ts +24 -0
- package/dist/core/memory-vector.d.ts.map +1 -0
- package/dist/core/memory-vector.js +51 -0
- package/dist/core/memory-vector.js.map +1 -0
- package/dist/core/memory.d.ts +502 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +881 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/message-utils.d.ts +7 -0
- package/dist/core/message-utils.d.ts.map +1 -0
- package/dist/core/message-utils.js +10 -0
- package/dist/core/message-utils.js.map +1 -0
- package/dist/core/oracle-isolation.d.ts +85 -0
- package/dist/core/oracle-isolation.d.ts.map +1 -0
- package/dist/core/oracle-isolation.js +121 -0
- package/dist/core/oracle-isolation.js.map +1 -0
- package/dist/core/permission-rules.d.ts +102 -0
- package/dist/core/permission-rules.d.ts.map +1 -0
- package/dist/core/permission-rules.js +357 -0
- package/dist/core/permission-rules.js.map +1 -0
- package/dist/core/present-plan-tool.d.ts +28 -0
- package/dist/core/present-plan-tool.d.ts.map +1 -0
- package/dist/core/present-plan-tool.js +119 -0
- package/dist/core/present-plan-tool.js.map +1 -0
- package/dist/core/pricing.d.ts +48 -0
- package/dist/core/pricing.d.ts.map +1 -0
- package/dist/core/pricing.js +46 -0
- package/dist/core/pricing.js.map +1 -0
- package/dist/core/property-harness.d.ts +126 -0
- package/dist/core/property-harness.d.ts.map +1 -0
- package/dist/core/property-harness.js +192 -0
- package/dist/core/property-harness.js.map +1 -0
- package/dist/core/push-queue.d.ts +10 -0
- package/dist/core/push-queue.d.ts.map +1 -0
- package/dist/core/push-queue.js +42 -0
- package/dist/core/push-queue.js.map +1 -0
- package/dist/core/remote-env.d.ts +432 -0
- package/dist/core/remote-env.d.ts.map +1 -0
- package/dist/core/remote-env.js +77 -0
- package/dist/core/remote-env.js.map +1 -0
- package/dist/core/roles.d.ts +74 -0
- package/dist/core/roles.d.ts.map +1 -0
- package/dist/core/roles.js +272 -0
- package/dist/core/roles.js.map +1 -0
- package/dist/core/runner/active-skill-scope.d.ts +64 -0
- package/dist/core/runner/active-skill-scope.d.ts.map +1 -0
- package/dist/core/runner/active-skill-scope.js +197 -0
- package/dist/core/runner/active-skill-scope.js.map +1 -0
- package/dist/core/runner/assemble-result.d.ts +191 -0
- package/dist/core/runner/assemble-result.d.ts.map +1 -0
- package/dist/core/runner/assemble-result.js +250 -0
- package/dist/core/runner/assemble-result.js.map +1 -0
- package/dist/core/runner/call-cap.d.ts +130 -0
- package/dist/core/runner/call-cap.d.ts.map +1 -0
- package/dist/core/runner/call-cap.js +151 -0
- package/dist/core/runner/call-cap.js.map +1 -0
- package/dist/core/runner/grounding-signal.d.ts +12 -0
- package/dist/core/runner/grounding-signal.d.ts.map +1 -0
- package/dist/core/runner/grounding-signal.js +94 -0
- package/dist/core/runner/grounding-signal.js.map +1 -0
- package/dist/core/runner/image.d.ts +23 -0
- package/dist/core/runner/image.d.ts.map +1 -0
- package/dist/core/runner/image.js +151 -0
- package/dist/core/runner/image.js.map +1 -0
- package/dist/core/runner/memory-consolidation.d.ts +112 -0
- package/dist/core/runner/memory-consolidation.d.ts.map +1 -0
- package/dist/core/runner/memory-consolidation.js +372 -0
- package/dist/core/runner/memory-consolidation.js.map +1 -0
- package/dist/core/runner/prepare-task.d.ts +583 -0
- package/dist/core/runner/prepare-task.d.ts.map +1 -0
- package/dist/core/runner/prepare-task.js +3612 -0
- package/dist/core/runner/prepare-task.js.map +1 -0
- package/dist/core/runner/prompt-suggestions.d.ts +33 -0
- package/dist/core/runner/prompt-suggestions.d.ts.map +1 -0
- package/dist/core/runner/prompt-suggestions.js +116 -0
- package/dist/core/runner/prompt-suggestions.js.map +1 -0
- package/dist/core/runner/runtask.d.ts +274 -0
- package/dist/core/runner/runtask.d.ts.map +1 -0
- package/dist/core/runner/runtask.js +4606 -0
- package/dist/core/runner/runtask.js.map +1 -0
- package/dist/core/runner/session-rule-policy.d.ts +28 -0
- package/dist/core/runner/session-rule-policy.d.ts.map +1 -0
- package/dist/core/runner/session-rule-policy.js +110 -0
- package/dist/core/runner/session-rule-policy.js.map +1 -0
- package/dist/core/runner/strict-output-schema.d.ts +36 -0
- package/dist/core/runner/strict-output-schema.d.ts.map +1 -0
- package/dist/core/runner/strict-output-schema.js +365 -0
- package/dist/core/runner/strict-output-schema.js.map +1 -0
- package/dist/core/runner/synthetic-tools.d.ts +72 -0
- package/dist/core/runner/synthetic-tools.d.ts.map +1 -0
- package/dist/core/runner/synthetic-tools.js +203 -0
- package/dist/core/runner/synthetic-tools.js.map +1 -0
- package/dist/core/runner/tool-disclosure.d.ts +117 -0
- package/dist/core/runner/tool-disclosure.d.ts.map +1 -0
- package/dist/core/runner/tool-disclosure.js +0 -0
- package/dist/core/runner/tool-disclosure.js.map +1 -0
- package/dist/core/runner/turn-attachments.d.ts +381 -0
- package/dist/core/runner/turn-attachments.d.ts.map +1 -0
- package/dist/core/runner/turn-attachments.js +596 -0
- package/dist/core/runner/turn-attachments.js.map +1 -0
- package/dist/core/runner/usage-accounting.d.ts +35 -0
- package/dist/core/runner/usage-accounting.d.ts.map +1 -0
- package/dist/core/runner/usage-accounting.js +45 -0
- package/dist/core/runner/usage-accounting.js.map +1 -0
- package/dist/core/runtime.d.ts +9 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +17 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/safety-axis-vocab.d.ts +33 -0
- package/dist/core/safety-axis-vocab.d.ts.map +1 -0
- package/dist/core/safety-axis-vocab.js +35 -0
- package/dist/core/safety-axis-vocab.js.map +1 -0
- package/dist/core/safety-merge-corpus.d.ts +48 -0
- package/dist/core/safety-merge-corpus.d.ts.map +1 -0
- package/dist/core/safety-merge-corpus.js +203 -0
- package/dist/core/safety-merge-corpus.js.map +1 -0
- package/dist/core/scheduler.d.ts +126 -0
- package/dist/core/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler.js +54 -0
- package/dist/core/scheduler.js.map +1 -0
- package/dist/core/secret-env.d.ts +23 -0
- package/dist/core/secret-env.d.ts.map +1 -0
- package/dist/core/secret-env.js +35 -0
- package/dist/core/secret-env.js.map +1 -0
- package/dist/core/select-model.d.ts +26 -0
- package/dist/core/select-model.d.ts.map +1 -0
- package/dist/core/select-model.js +58 -0
- package/dist/core/select-model.js.map +1 -0
- package/dist/core/sensitive-path-policy.d.ts +24 -0
- package/dist/core/sensitive-path-policy.d.ts.map +1 -0
- package/dist/core/sensitive-path-policy.js +96 -0
- package/dist/core/sensitive-path-policy.js.map +1 -0
- package/dist/core/session-policy-store.d.ts +102 -0
- package/dist/core/session-policy-store.d.ts.map +1 -0
- package/dist/core/session-policy-store.js +177 -0
- package/dist/core/session-policy-store.js.map +1 -0
- package/dist/core/session-reconcile.d.ts +63 -0
- package/dist/core/session-reconcile.d.ts.map +1 -0
- package/dist/core/session-reconcile.js +71 -0
- package/dist/core/session-reconcile.js.map +1 -0
- package/dist/core/session-store.d.ts +99 -0
- package/dist/core/session-store.d.ts.map +1 -0
- package/dist/core/session-store.js +298 -0
- package/dist/core/session-store.js.map +1 -0
- package/dist/core/session.d.ts +144 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +56 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/spec-contract.d.ts +147 -0
- package/dist/core/spec-contract.d.ts.map +1 -0
- package/dist/core/spec-contract.js +340 -0
- package/dist/core/spec-contract.js.map +1 -0
- package/dist/core/strategy-store.d.ts +50 -0
- package/dist/core/strategy-store.d.ts.map +1 -0
- package/dist/core/strategy-store.js +100 -0
- package/dist/core/strategy-store.js.map +1 -0
- package/dist/core/stub-env.d.ts +35 -0
- package/dist/core/stub-env.d.ts.map +1 -0
- package/dist/core/stub-env.js +69 -0
- package/dist/core/stub-env.js.map +1 -0
- package/dist/core/task-notification.d.ts +115 -0
- package/dist/core/task-notification.d.ts.map +1 -0
- package/dist/core/task-notification.js +247 -0
- package/dist/core/task-notification.js.map +1 -0
- package/dist/core/task-outcome.d.ts +80 -0
- package/dist/core/task-outcome.d.ts.map +1 -0
- package/dist/core/task-outcome.js +40 -0
- package/dist/core/task-outcome.js.map +1 -0
- package/dist/core/task-registry.d.ts +349 -0
- package/dist/core/task-registry.d.ts.map +1 -0
- package/dist/core/task-registry.js +1751 -0
- package/dist/core/task-registry.js.map +1 -0
- package/dist/core/tighten-task-spec.d.ts +27 -0
- package/dist/core/tighten-task-spec.d.ts.map +1 -0
- package/dist/core/tighten-task-spec.js +95 -0
- package/dist/core/tighten-task-spec.js.map +1 -0
- package/dist/core/tool-detach.d.ts +31 -0
- package/dist/core/tool-detach.d.ts.map +1 -0
- package/dist/core/tool-detach.js +62 -0
- package/dist/core/tool-detach.js.map +1 -0
- package/dist/core/tool-errors.d.ts +72 -0
- package/dist/core/tool-errors.d.ts.map +1 -0
- package/dist/core/tool-errors.js +194 -0
- package/dist/core/tool-errors.js.map +1 -0
- package/dist/core/tool-name-aliases.d.ts +5 -0
- package/dist/core/tool-name-aliases.d.ts.map +1 -0
- package/dist/core/tool-name-aliases.js +130 -0
- package/dist/core/tool-name-aliases.js.map +1 -0
- package/dist/core/tool-policy.d.ts +295 -0
- package/dist/core/tool-policy.d.ts.map +1 -0
- package/dist/core/tool-policy.js +567 -0
- package/dist/core/tool-policy.js.map +1 -0
- package/dist/core/tool-result-budget.d.ts +44 -0
- package/dist/core/tool-result-budget.d.ts.map +1 -0
- package/dist/core/tool-result-budget.js +140 -0
- package/dist/core/tool-result-budget.js.map +1 -0
- package/dist/core/tool-result-store.d.ts +136 -0
- package/dist/core/tool-result-store.d.ts.map +1 -0
- package/dist/core/tool-result-store.js +219 -0
- package/dist/core/tool-result-store.js.map +1 -0
- package/dist/core/tools.d.ts +14 -0
- package/dist/core/tools.d.ts.map +1 -0
- package/dist/core/tools.js +98 -0
- package/dist/core/tools.js.map +1 -0
- package/dist/core/trace.d.ts +340 -0
- package/dist/core/trace.d.ts.map +1 -0
- package/dist/core/trace.js +12 -0
- package/dist/core/trace.js.map +1 -0
- package/dist/core/types.d.ts +2828 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/untrusted-egress.d.ts +32 -0
- package/dist/core/untrusted-egress.d.ts.map +1 -0
- package/dist/core/untrusted-egress.js +49 -0
- package/dist/core/untrusted-egress.js.map +1 -0
- package/dist/core/untrusted-text.d.ts +64 -0
- package/dist/core/untrusted-text.d.ts.map +1 -0
- package/dist/core/untrusted-text.js +119 -0
- package/dist/core/untrusted-text.js.map +1 -0
- package/dist/core/warm-resume.d.ts +23 -0
- package/dist/core/warm-resume.d.ts.map +1 -0
- package/dist/core/warm-resume.js +28 -0
- package/dist/core/warm-resume.js.map +1 -0
- package/dist/core/with-retry.d.ts +43 -0
- package/dist/core/with-retry.d.ts.map +1 -0
- package/dist/core/with-retry.js +59 -0
- package/dist/core/with-retry.js.map +1 -0
- package/dist/core/workflow-journal-store.d.ts +44 -0
- package/dist/core/workflow-journal-store.d.ts.map +1 -0
- package/dist/core/workflow-journal-store.js +47 -0
- package/dist/core/workflow-journal-store.js.map +1 -0
- package/dist/core/workflow-run-store-contract.d.ts +31 -0
- package/dist/core/workflow-run-store-contract.d.ts.map +1 -0
- package/dist/core/workflow-run-store-contract.js +191 -0
- package/dist/core/workflow-run-store-contract.js.map +1 -0
- package/dist/core/workflow-run-store.d.ts +149 -0
- package/dist/core/workflow-run-store.d.ts.map +1 -0
- package/dist/core/workflow-run-store.js +110 -0
- package/dist/core/workflow-run-store.js.map +1 -0
- package/dist/engine/compaction/compaction.d.ts +139 -0
- package/dist/engine/compaction/compaction.d.ts.map +1 -0
- package/dist/engine/compaction/compaction.js +1030 -0
- package/dist/engine/compaction/compaction.js.map +1 -0
- package/dist/engine/compaction/utils.d.ts +45 -0
- package/dist/engine/compaction/utils.d.ts.map +1 -0
- package/dist/engine/compaction/utils.js +203 -0
- package/dist/engine/compaction/utils.js.map +1 -0
- package/dist/engine/execution-env/kill-tree.d.ts +20 -0
- package/dist/engine/execution-env/kill-tree.d.ts.map +1 -0
- package/dist/engine/execution-env/kill-tree.js +183 -0
- package/dist/engine/execution-env/kill-tree.js.map +1 -0
- package/dist/engine/execution-env/node-execution-env.d.ts +133 -0
- package/dist/engine/execution-env/node-execution-env.d.ts.map +1 -0
- package/dist/engine/execution-env/node-execution-env.js +1031 -0
- package/dist/engine/execution-env/node-execution-env.js.map +1 -0
- package/dist/engine/harness/agent-harness.d.ts +174 -0
- package/dist/engine/harness/agent-harness.d.ts.map +1 -0
- package/dist/engine/harness/agent-harness.js +1053 -0
- package/dist/engine/harness/agent-harness.js.map +1 -0
- package/dist/engine/harness/messages.d.ts +17 -0
- package/dist/engine/harness/messages.d.ts.map +1 -0
- package/dist/engine/harness/messages.js +122 -0
- package/dist/engine/harness/messages.js.map +1 -0
- package/dist/engine/harness/types.d.ts +713 -0
- package/dist/engine/harness/types.d.ts.map +1 -0
- package/dist/engine/harness/types.js +100 -0
- package/dist/engine/harness/types.js.map +1 -0
- package/dist/engine/llm/diagnostics.d.ts +23 -0
- package/dist/engine/llm/diagnostics.d.ts.map +1 -0
- package/dist/engine/llm/diagnostics.js +32 -0
- package/dist/engine/llm/diagnostics.js.map +1 -0
- package/dist/engine/llm/event-stream.d.ts +25 -0
- package/dist/engine/llm/event-stream.d.ts.map +1 -0
- package/dist/engine/llm/event-stream.js +103 -0
- package/dist/engine/llm/event-stream.js.map +1 -0
- package/dist/engine/llm/index.d.ts +12 -0
- package/dist/engine/llm/index.d.ts.map +1 -0
- package/dist/engine/llm/index.js +12 -0
- package/dist/engine/llm/index.js.map +1 -0
- package/dist/engine/llm/types.d.ts +753 -0
- package/dist/engine/llm/types.d.ts.map +1 -0
- package/dist/engine/llm/types.js +2 -0
- package/dist/engine/llm/types.js.map +1 -0
- package/dist/engine/llm/validation.d.ts +8 -0
- package/dist/engine/llm/validation.d.ts.map +1 -0
- package/dist/engine/llm/validation.js +318 -0
- package/dist/engine/llm/validation.js.map +1 -0
- package/dist/engine/loop/agent-loop.d.ts +74 -0
- package/dist/engine/loop/agent-loop.d.ts.map +1 -0
- package/dist/engine/loop/agent-loop.js +1490 -0
- package/dist/engine/loop/agent-loop.js.map +1 -0
- package/dist/engine/loop/runtime-deps.d.ts +17 -0
- package/dist/engine/loop/runtime-deps.d.ts.map +1 -0
- package/dist/engine/loop/runtime-deps.js +21 -0
- package/dist/engine/loop/runtime-deps.js.map +1 -0
- package/dist/engine/loop/types.d.ts +609 -0
- package/dist/engine/loop/types.d.ts.map +1 -0
- package/dist/engine/loop/types.js +2 -0
- package/dist/engine/loop/types.js.map +1 -0
- package/dist/engine/lsp/frame-decoder.d.ts +16 -0
- package/dist/engine/lsp/frame-decoder.d.ts.map +1 -0
- package/dist/engine/lsp/frame-decoder.js +53 -0
- package/dist/engine/lsp/frame-decoder.js.map +1 -0
- package/dist/engine/lsp/node-lsp-manager.d.ts +105 -0
- package/dist/engine/lsp/node-lsp-manager.d.ts.map +1 -0
- package/dist/engine/lsp/node-lsp-manager.js +343 -0
- package/dist/engine/lsp/node-lsp-manager.js.map +1 -0
- package/dist/engine/lsp/stdio-lsp-transport.d.ts +37 -0
- package/dist/engine/lsp/stdio-lsp-transport.d.ts.map +1 -0
- package/dist/engine/lsp/stdio-lsp-transport.js +185 -0
- package/dist/engine/lsp/stdio-lsp-transport.js.map +1 -0
- package/dist/engine/session/import-validate.d.ts +44 -0
- package/dist/engine/session/import-validate.d.ts.map +1 -0
- package/dist/engine/session/import-validate.js +92 -0
- package/dist/engine/session/import-validate.js.map +1 -0
- package/dist/engine/session/memory-repo.d.ts +25 -0
- package/dist/engine/session/memory-repo.d.ts.map +1 -0
- package/dist/engine/session/memory-repo.js +59 -0
- package/dist/engine/session/memory-repo.js.map +1 -0
- package/dist/engine/session/memory-storage.d.ts +14 -0
- package/dist/engine/session/memory-storage.d.ts.map +1 -0
- package/dist/engine/session/memory-storage.js +17 -0
- package/dist/engine/session/memory-storage.js.map +1 -0
- package/dist/engine/session/repo-utils.d.ts +11 -0
- package/dist/engine/session/repo-utils.d.ts.map +1 -0
- package/dist/engine/session/repo-utils.js +40 -0
- package/dist/engine/session/repo-utils.js.map +1 -0
- package/dist/engine/session/session.d.ts +34 -0
- package/dist/engine/session/session.d.ts.map +1 -0
- package/dist/engine/session/session.js +227 -0
- package/dist/engine/session/session.js.map +1 -0
- package/dist/engine/session/storage-base.d.ts +38 -0
- package/dist/engine/session/storage-base.d.ts.map +1 -0
- package/dist/engine/session/storage-base.js +157 -0
- package/dist/engine/session/storage-base.js.map +1 -0
- package/dist/engine/session/timestamps.d.ts +3 -0
- package/dist/engine/session/timestamps.d.ts.map +1 -0
- package/dist/engine/session/timestamps.js +15 -0
- package/dist/engine/session/timestamps.js.map +1 -0
- package/dist/engine/session/uuid.d.ts +2 -0
- package/dist/engine/session/uuid.d.ts.map +1 -0
- package/dist/engine/session/uuid.js +50 -0
- package/dist/engine/session/uuid.js.map +1 -0
- package/dist/index.d.ts +160 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +374 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/harness.d.ts +26 -0
- package/dist/internal/harness.d.ts.map +1 -0
- package/dist/internal/harness.js +24 -0
- package/dist/internal/harness.js.map +1 -0
- package/dist/internal/llm.d.ts +9 -0
- package/dist/internal/llm.d.ts.map +1 -0
- package/dist/internal/llm.js +8 -0
- package/dist/internal/llm.js.map +1 -0
- package/dist/orchestration/builtin-workflows.d.ts +44 -0
- package/dist/orchestration/builtin-workflows.d.ts.map +1 -0
- package/dist/orchestration/builtin-workflows.js +165 -0
- package/dist/orchestration/builtin-workflows.js.map +1 -0
- package/dist/orchestration/dev-vm-script-runner.d.ts +24 -0
- package/dist/orchestration/dev-vm-script-runner.d.ts.map +1 -0
- package/dist/orchestration/dev-vm-script-runner.js +106 -0
- package/dist/orchestration/dev-vm-script-runner.js.map +1 -0
- package/dist/orchestration/goal.d.ts +97 -0
- package/dist/orchestration/goal.d.ts.map +1 -0
- package/dist/orchestration/goal.js +248 -0
- package/dist/orchestration/goal.js.map +1 -0
- package/dist/orchestration/run-spec.d.ts +63 -0
- package/dist/orchestration/run-spec.d.ts.map +1 -0
- package/dist/orchestration/run-spec.js +274 -0
- package/dist/orchestration/run-spec.js.map +1 -0
- package/dist/orchestration/run-workflow-tool.d.ts +187 -0
- package/dist/orchestration/run-workflow-tool.d.ts.map +1 -0
- package/dist/orchestration/run-workflow-tool.js +612 -0
- package/dist/orchestration/run-workflow-tool.js.map +1 -0
- package/dist/orchestration/workflow-governance.d.ts +70 -0
- package/dist/orchestration/workflow-governance.d.ts.map +1 -0
- package/dist/orchestration/workflow-governance.js +176 -0
- package/dist/orchestration/workflow-governance.js.map +1 -0
- package/dist/orchestration/workflow-meta.d.ts +41 -0
- package/dist/orchestration/workflow-meta.d.ts.map +1 -0
- package/dist/orchestration/workflow-meta.js +426 -0
- package/dist/orchestration/workflow-meta.js.map +1 -0
- package/dist/orchestration/workflow-observe.d.ts +77 -0
- package/dist/orchestration/workflow-observe.d.ts.map +1 -0
- package/dist/orchestration/workflow-observe.js +177 -0
- package/dist/orchestration/workflow-observe.js.map +1 -0
- package/dist/orchestration/workflow-primitives.d.ts +31 -0
- package/dist/orchestration/workflow-primitives.d.ts.map +1 -0
- package/dist/orchestration/workflow-primitives.js +104 -0
- package/dist/orchestration/workflow-primitives.js.map +1 -0
- package/dist/orchestration/workflow-sandbox-conformance.d.ts +34 -0
- package/dist/orchestration/workflow-sandbox-conformance.d.ts.map +1 -0
- package/dist/orchestration/workflow-sandbox-conformance.js +301 -0
- package/dist/orchestration/workflow-sandbox-conformance.js.map +1 -0
- package/dist/orchestration/workflow-script-runner.d.ts +127 -0
- package/dist/orchestration/workflow-script-runner.d.ts.map +1 -0
- package/dist/orchestration/workflow-script-runner.js +48 -0
- package/dist/orchestration/workflow-script-runner.js.map +1 -0
- package/dist/orchestration/workflow-script-store.d.ts +99 -0
- package/dist/orchestration/workflow-script-store.d.ts.map +1 -0
- package/dist/orchestration/workflow-script-store.js +133 -0
- package/dist/orchestration/workflow-script-store.js.map +1 -0
- package/dist/orchestration/workflow-size-guideline.d.ts +50 -0
- package/dist/orchestration/workflow-size-guideline.d.ts.map +1 -0
- package/dist/orchestration/workflow-size-guideline.js +78 -0
- package/dist/orchestration/workflow-size-guideline.js.map +1 -0
- package/dist/orchestration/workflow.d.ts +624 -0
- package/dist/orchestration/workflow.d.ts.map +1 -0
- package/dist/orchestration/workflow.js +1596 -0
- package/dist/orchestration/workflow.js.map +1 -0
- package/dist/prompts/default.d.ts +474 -0
- package/dist/prompts/default.d.ts.map +1 -0
- package/dist/prompts/default.js +676 -0
- package/dist/prompts/default.js.map +1 -0
- package/dist/prompts/supervisor.d.ts +60 -0
- package/dist/prompts/supervisor.d.ts.map +1 -0
- package/dist/prompts/supervisor.js +162 -0
- package/dist/prompts/supervisor.js.map +1 -0
- package/dist/scenarios/env.d.ts +41 -0
- package/dist/scenarios/env.d.ts.map +1 -0
- package/dist/scenarios/env.js +65 -0
- package/dist/scenarios/env.js.map +1 -0
- package/dist/scenarios/full-body.d.ts +47 -0
- package/dist/scenarios/full-body.d.ts.map +1 -0
- package/dist/scenarios/full-body.js +36 -0
- package/dist/scenarios/full-body.js.map +1 -0
- package/dist/scenarios/scenario-registry.d.ts +107 -0
- package/dist/scenarios/scenario-registry.d.ts.map +1 -0
- package/dist/scenarios/scenario-registry.js +192 -0
- package/dist/scenarios/scenario-registry.js.map +1 -0
- package/dist/scenarios/teacher-quickstart.d.ts +41 -0
- package/dist/scenarios/teacher-quickstart.d.ts.map +1 -0
- package/dist/scenarios/teacher-quickstart.js +32 -0
- package/dist/scenarios/teacher-quickstart.js.map +1 -0
- package/dist/server/http.d.ts +36 -0
- package/dist/server/http.d.ts.map +1 -0
- package/dist/server/http.js +144 -0
- package/dist/server/http.js.map +1 -0
- package/dist/stores/file/checkpoint-store.d.ts +62 -0
- package/dist/stores/file/checkpoint-store.d.ts.map +1 -0
- package/dist/stores/file/checkpoint-store.js +250 -0
- package/dist/stores/file/checkpoint-store.js.map +1 -0
- package/dist/stores/file/file-snapshot-store.d.ts +43 -0
- package/dist/stores/file/file-snapshot-store.d.ts.map +1 -0
- package/dist/stores/file/file-snapshot-store.js +374 -0
- package/dist/stores/file/file-snapshot-store.js.map +1 -0
- package/dist/stores/file/fs-atomic.d.ts +95 -0
- package/dist/stores/file/fs-atomic.d.ts.map +1 -0
- package/dist/stores/file/fs-atomic.js +415 -0
- package/dist/stores/file/fs-atomic.js.map +1 -0
- package/dist/stores/file/index.d.ts +98 -0
- package/dist/stores/file/index.d.ts.map +1 -0
- package/dist/stores/file/index.js +109 -0
- package/dist/stores/file/index.js.map +1 -0
- package/dist/stores/file/memory-store.d.ts +95 -0
- package/dist/stores/file/memory-store.d.ts.map +1 -0
- package/dist/stores/file/memory-store.js +393 -0
- package/dist/stores/file/memory-store.js.map +1 -0
- package/dist/stores/file/session-policy-store.d.ts +24 -0
- package/dist/stores/file/session-policy-store.d.ts.map +1 -0
- package/dist/stores/file/session-policy-store.js +123 -0
- package/dist/stores/file/session-policy-store.js.map +1 -0
- package/dist/stores/file/session-store.d.ts +34 -0
- package/dist/stores/file/session-store.d.ts.map +1 -0
- package/dist/stores/file/session-store.js +175 -0
- package/dist/stores/file/session-store.js.map +1 -0
- package/dist/stores/file/tool-result-store.d.ts +23 -0
- package/dist/stores/file/tool-result-store.d.ts.map +1 -0
- package/dist/stores/file/tool-result-store.js +61 -0
- package/dist/stores/file/tool-result-store.js.map +1 -0
- package/dist/stores/file/workflow-journal-store.d.ts +36 -0
- package/dist/stores/file/workflow-journal-store.d.ts.map +1 -0
- package/dist/stores/file/workflow-journal-store.js +157 -0
- package/dist/stores/file/workflow-journal-store.js.map +1 -0
- package/dist/stores/file/workflow-run-store.d.ts +58 -0
- package/dist/stores/file/workflow-run-store.d.ts.map +1 -0
- package/dist/stores/file/workflow-run-store.js +178 -0
- package/dist/stores/file/workflow-run-store.js.map +1 -0
- package/dist/stores/pg.d.ts +210 -0
- package/dist/stores/pg.d.ts.map +1 -0
- package/dist/stores/pg.js +652 -0
- package/dist/stores/pg.js.map +1 -0
- package/dist/tools/fs/encoding.d.ts +51 -0
- package/dist/tools/fs/encoding.d.ts.map +1 -0
- package/dist/tools/fs/encoding.js +74 -0
- package/dist/tools/fs/encoding.js.map +1 -0
- package/dist/tools/fs/gh-rate-limit.d.ts +19 -0
- package/dist/tools/fs/gh-rate-limit.d.ts.map +1 -0
- package/dist/tools/fs/gh-rate-limit.js +35 -0
- package/dist/tools/fs/gh-rate-limit.js.map +1 -0
- package/dist/tools/fs/index.d.ts +246 -0
- package/dist/tools/fs/index.d.ts.map +1 -0
- package/dist/tools/fs/index.js +2130 -0
- package/dist/tools/fs/index.js.map +1 -0
- package/dist/tools/fs/pdf.d.ts +106 -0
- package/dist/tools/fs/pdf.d.ts.map +1 -0
- package/dist/tools/fs/pdf.js +178 -0
- package/dist/tools/fs/pdf.js.map +1 -0
- package/dist/tools/fs/repo-map.d.ts +15 -0
- package/dist/tools/fs/repo-map.d.ts.map +1 -0
- package/dist/tools/fs/repo-map.js +251 -0
- package/dist/tools/fs/repo-map.js.map +1 -0
- package/dist/tools/fs/safety.d.ts +168 -0
- package/dist/tools/fs/safety.d.ts.map +1 -0
- package/dist/tools/fs/safety.js +479 -0
- package/dist/tools/fs/safety.js.map +1 -0
- package/dist/tools/fs/search.d.ts +118 -0
- package/dist/tools/fs/search.d.ts.map +1 -0
- package/dist/tools/fs/search.js +650 -0
- package/dist/tools/fs/search.js.map +1 -0
- package/dist/tools/gitea-issue.d.ts +39 -0
- package/dist/tools/gitea-issue.d.ts.map +1 -0
- package/dist/tools/gitea-issue.js +91 -0
- package/dist/tools/gitea-issue.js.map +1 -0
- package/dist/tools/monitor.d.ts +64 -0
- package/dist/tools/monitor.d.ts.map +1 -0
- package/dist/tools/monitor.js +135 -0
- package/dist/tools/monitor.js.map +1 -0
- package/dist/tools/scheduler-tools.d.ts +48 -0
- package/dist/tools/scheduler-tools.d.ts.map +1 -0
- package/dist/tools/scheduler-tools.js +449 -0
- package/dist/tools/scheduler-tools.js.map +1 -0
- package/dist/tools/sql-adapters.d.ts +32 -0
- package/dist/tools/sql-adapters.d.ts.map +1 -0
- package/dist/tools/sql-adapters.js +31 -0
- package/dist/tools/sql-adapters.js.map +1 -0
- package/dist/tools/sql.d.ts +36 -0
- package/dist/tools/sql.d.ts.map +1 -0
- package/dist/tools/sql.js +131 -0
- package/dist/tools/sql.js.map +1 -0
- package/dist/tools/task-list.d.ts +26 -0
- package/dist/tools/task-list.d.ts.map +1 -0
- package/dist/tools/task-list.js +352 -0
- package/dist/tools/task-list.js.map +1 -0
- package/dist/tools/todo.d.ts +11 -0
- package/dist/tools/todo.d.ts.map +1 -0
- package/dist/tools/todo.js +126 -0
- package/dist/tools/todo.js.map +1 -0
- package/dist/tools/web.d.ts +59 -0
- package/dist/tools/web.d.ts.map +1 -0
- package/dist/tools/web.js +607 -0
- package/dist/tools/web.js.map +1 -0
- package/dist/tools/worktree.d.ts +88 -0
- package/dist/tools/worktree.d.ts.map +1 -0
- package/dist/tools/worktree.js +434 -0
- package/dist/tools/worktree.js.map +1 -0
- package/docs/A1-ATTRIBUTION-ROUND1-2026-07-09.md +181 -0
- package/docs/AB-ORACLE-GATE-VERDICT-2026-07-10.md +100 -0
- package/docs/ANCHOR-GAP-INVENTORY-2026-07-09.md +143 -0
- package/docs/ARCHITECTURE.md +125 -0
- package/docs/BUGHUNT-2026-07-05-NIGHT.md +98 -0
- package/docs/BUILD.md +63 -0
- package/docs/CANCEL-ASYNC-ATTRIBUTION-2026-07-09.md +98 -0
- package/docs/CC-198-VS-201-DRIFT-2026-07-09.md +70 -0
- package/docs/CC-BASELINE-FAKE-ZERO-AUDIT-2026-07-09.md +51 -0
- package/docs/CC-DRIFT-198-206-AGENT-TYPES-2026-07-10.md +82 -0
- package/docs/CC-DRIFT-198-206-CHANGELOG-2026-07-10.md +82 -0
- package/docs/CC-DRIFT-198-206-REMINDERS-2026-07-10.md +96 -0
- package/docs/CC-DRIFT-198-206-ROADMAP-2026-07-10.md +110 -0
- package/docs/CC-DRIFT-198-206-TOOL-INVENTORY-2026-07-10.md +53 -0
- package/docs/CC-DRIFT-198-206-USAGE-CONSTANTS-2026-07-10.md +64 -0
- package/docs/CC-DRIFT-198-206-WORKFLOW-2026-07-10.md +83 -0
- package/docs/CC-PARITY-CHECKLIST.md +220 -0
- package/docs/CC-PARITY-DEEP-SWEEP-2026-07-07.md +149 -0
- package/docs/CC-SUBAGENT-PROMPT-STUDY-2026-07-09.md +219 -0
- package/docs/CC-TASK-REMINDER-CADENCE-STUDY-2026-07-09.md +396 -0
- package/docs/CC-TOOL-PARITY-SWEEP-2026-07.md +56 -0
- package/docs/CC-TOOL-PROMPT-DEEP-DIFF-2026-07-08.md +274 -0
- package/docs/CC-TOOLSURFACE-DEEP-DIVE-2026-07-07.md +197 -0
- package/docs/CC206-OBSERVER-ANCHORS-2026-07-11.md +463 -0
- package/docs/CC207-CORE-SWEEP-BACKLOG-2026-07-12.md +155 -0
- package/docs/CENTER-CONTROL-PLANE-SEAM.md +86 -0
- package/docs/CLEANUP-CONTRACT-ANCHOR-2026-07-09.md +83 -0
- package/docs/COLD-START-RSI-2026-07-09.md +72 -0
- package/docs/COMPACTION-LIVE-AUDIT-2026-07-09.md +114 -0
- package/docs/CONTEXT-lifecycle-extension-points-and-stop-attribution.md +71 -0
- package/docs/COREWARS-POLYGLOT-TRIAGE-2026-07-09.md +85 -0
- package/docs/DEADTARGET-OVERFULL-HBOX-2026-07-10.md +92 -0
- package/docs/DEADTARGET-PATH-TRACING-REVERSE-2026-07-10.md +87 -0
- package/docs/DEADTARGET-WINNING-AVG-COREWARS-2026-07-10.md +96 -0
- package/docs/DEEPSEEK-API-LIMITS-PROBE-2026-07-09.md +118 -0
- package/docs/DESIGN-140-MOCK-VERIFY-2026-07-11.md +79 -0
- package/docs/DESIGN-140-VERIFICATION-2026-07-11.md +43 -0
- package/docs/DESIGN-DRAFT-workflow-collab-2026-07-11.md +56 -0
- package/docs/DESIGN-ORACLE-GROUNDING-GATE-2026-07-10.md +167 -0
- package/docs/DESIGN-TFRAG-RECONCILE-SCAFFOLD-2026-07-09.md +102 -0
- package/docs/EXP-PA2-PE-DESIGN-2026-07-11.md +220 -0
- package/docs/EXT-DOGFOOD-2026-07-12.md +50 -0
- package/docs/FINAL-VERIFY-SURFACE-AUDIT-2026-07-09.md +44 -0
- package/docs/FRAG-RECON-INVESTIGATION-2026-07-09.md +183 -0
- package/docs/HANDOFF.md +121 -0
- package/docs/KNOWN-ISSUES.md +96 -0
- package/docs/LEGW-WINDOW-TAX-2026-07-10.md +82 -0
- package/docs/LIVE-PROBE-BATCH-2026-07-11.md +207 -0
- package/docs/M2-CERT-ATTRIBUTION-2026-07-10.md +61 -0
- package/docs/M25-LEG-VARIANCE-ATTRIBUTION-2026-07-10.md +81 -0
- package/docs/MAILMAN-TIMEOUT-ATTRIBUTION-2026-07-10.md +88 -0
- package/docs/MEMORY-BACKEND-DIALECT-NOTES.md +69 -0
- package/docs/MTEB-ESCAPE-HATCH-ATTRIBUTION-2026-07-09.md +57 -0
- package/docs/MTEB-LEADERBOARD-ATTRIBUTION-2026-07-10.md +134 -0
- package/docs/ORACLE-GATE-NEGATIVE-SAMPLE-2026-07-11.md +28 -0
- package/docs/PARITY-CONTEXT-TRANSACTIONS-2026-07-10.md +67 -0
- package/docs/PARITY-PROGRESS-MATRIX-2026-07-10.md +37 -0
- package/docs/PARITY-SPOT-AGENT-TYPES-2026-07-10.md +70 -0
- package/docs/PARITY-SPOT-REMINDERS-2026-07-10.md +144 -0
- package/docs/PARITY-SPOT-TOOL-INVENTORY-2026-07-10.md +61 -0
- package/docs/PARITY-SPOT-USAGE-CONSTANTS-2026-07-10.md +95 -0
- package/docs/PARITY-SPOT-WORKFLOW-2026-07-10.md +93 -0
- package/docs/PASSWORD-RECOVERY-PANEL-VERDICT-2026-07-10.md +62 -0
- package/docs/R8-R9-FINALIZE-COORDINATION-2026-07-09.md +124 -0
- package/docs/REPL-CODE-MODE-EVALUATION-2026-07-10.md +187 -0
- package/docs/REPORT-1249-TARGETED.md +48 -0
- package/docs/RESEARCH-3P-MEMORY-SWAP-2026-07-12.md +273 -0
- package/docs/ROADMAP.md +111 -0
- package/docs/RSI-CLOUD-DEPLOY-2026-07-06.md +289 -0
- package/docs/RSI-PROCESS-AI-COLDSTART-2026-07-11.md +68 -0
- package/docs/S18-THOROUGHNESS-AUDIT-2026-07-09.md +113 -0
- package/docs/SERVICE-INTEGRATION-GUIDE.md +298 -0
- package/docs/SUBAGENT-STREAM-RESILIENCE-PARITY-2026-07-10.md +118 -0
- package/docs/SWEBENCH-PRO-RECON-2026-07-11.md +31 -0
- package/docs/TB-EFFICIENCY-TELEMETRY-2026-07-08.md +114 -0
- package/docs/TB-FAILURE-AUTOPSY-2026-07-05-RERUN.md +67 -0
- package/docs/TB-FAIRNESS-AUDIT-2026-07-08.md +141 -0
- package/docs/TB-FULL-1257-2026-07-08.md +77 -0
- package/docs/TB-LEG-GAP-ATTRIBUTION-1261-1263-2026-07-11.md +154 -0
- package/docs/TB-REGRESSION-DAEMON-KILL-2026-07-08.md +58 -0
- package/docs/TB-RSI-CROSSCHECK-2026-07-06.md +68 -0
- package/docs/TB-RSI-LEDGER.md +30 -0
- package/docs/TB-STABLE-SET-2026-07-08.md +127 -0
- package/docs/TB21-RECON-2026-07-11.md +28 -0
- package/docs/TEST-DESIGN-BATCH-1-2-3.md +97 -0
- package/docs/THIRD-PARTY-INTEGRATION.md +45 -0
- package/docs/TOKEN-ESTIMATE-CALIBRATION-LIVE-2026-07-09.md +102 -0
- package/docs/audit-2026-06-10-/347/254/254/344/272/214/350/275/256-/347/251/272/347/231/275/345/214/272/344/270/216/345/277/230/346/216/245/347/272/277.md +147 -0
- package/docs/audit-2026-06-10-/350/256/241/347/256/227bug/346/211/253/346/217/217.md +163 -0
- package/docs/audit-2026-06-11-/344/277/256/345/244/215/345/244/215/345/256/241/344/270/216/345/233/236/345/275/222/344/270/223/346/211/253.md +95 -0
- package/docs/audit-2026-06-12-design71-P1/346/275/234/344/274/217/351/235/242/350/243/201/345/206/263/344/270/216/345/220/236/351/224/231/345/256/241/350/256/241.md +45 -0
- package/docs/audit-2026-06-12-/345/205/254/345/274/200/346/227/213/351/222/256/346/264/273/346/200/247/344/270/216vendored/346/255/273/350/267/257.md +63 -0
- package/docs/audit-2026-06-15/ADDENDUM-second-pass.md +88 -0
- package/docs/audit-2026-06-15/ARCHITECTURE-AND-ROADMAP.md +187 -0
- package/docs/audit-2026-06-15/DOC-CORRECTIONS.md +105 -0
- package/docs/audit-2026-06-15/INDEX.md +49 -0
- package/docs/audit-2026-06-15/ORCHESTRATION-STATUS.md +98 -0
- package/docs/audit-2026-06-15/PRODUCTION-ISSUES.md +189 -0
- package/docs/audit-2026-06-15/REFERENCES-literature.md +139 -0
- package/docs/audit-2026-06-15/VENDOR-REFACTOR-PLAN.md +96 -0
- package/docs/cc-probe-198/README.md +72 -0
- package/docs/cc-probe-198/STABILITY-AUDIT.md +118 -0
- package/docs/cc-probe-198/live-schema-monitor-worktree-2026-07-09.json +56 -0
- package/docs/cc-probe-198/mount-variants.json +536 -0
- package/docs/cc-probe-198/plan-mode-run.json +1 -0
- package/docs/cc-probe-198/probe-bash-bg.json +224 -0
- package/docs/cc-probe-198/probe-edit-mismatch.json +120 -0
- package/docs/cc-probe-198/probe-read-missing.json +62 -0
- package/docs/cc-probe-198/probe-search-empty.json +127 -0
- package/docs/cc-probe-198/probe-task-family.json +227 -0
- package/docs/cc-probe-198/probes.status +6 -0
- package/docs/cc-probe-198/raw-capture-interactive.json +948 -0
- package/docs/cc-probe-198/raw-capture-print.json +787 -0
- package/docs/cc-probe-198/raw-capture2-interactive.json +948 -0
- package/docs/cc-probe-198/raw-capture2-print.json +787 -0
- package/docs/cc-probe-198/system-prompt.txt +135 -0
- package/docs/cc-probe-198/tools-array.json +962 -0
- package/docs/durability-boundary.md +63 -0
- package/docs/fix-2026-06-10-/350/256/241/347/256/227bug/344/277/256/345/244/215-search/346/211/271.md +75 -0
- package/docs/fix-2026-06-11-/347/254/254/344/272/214/350/275/256-/344/277/256/345/244/215-search/346/211/271.md +62 -0
- package/docs/parity-sweep/REPORT-DYNAMIC.md +97 -0
- package/docs/parity-sweep/REPORT-STATIC-GGB.md +127 -0
- package/docs/parity-sweep/REPORT-STATIC-RWE.md +133 -0
- package/docs/vendor-history.md +385 -0
- package/docs/vendored-upstream-diff-2026-07.md +83 -0
- package/package.json +70 -0
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
/**
|
|
3
|
+
* batch-B (CC 2.1.187 parity): Read/Edit/Write take the file path as `file_path`, with the legacy `path` as a
|
|
4
|
+
* durable back-compat alias. Read the target the same way EVERYWHERE the path is consumed from a tool-call's args —
|
|
5
|
+
* not just the tool body but ALSO every gate that extracts the write target to confine it (sensitive-path,
|
|
6
|
+
* skill allowPaths, session allowDirs). A gate that only read `args.path` would see `undefined` for a `file_path`
|
|
7
|
+
* call and either fail-OPEN (bypass the guard — a real hole) or fail-closed (deny a legitimate write). Single source.
|
|
8
|
+
*/
|
|
9
|
+
export function fileArgPath(args) {
|
|
10
|
+
const a = args;
|
|
11
|
+
// file_path (CC) wins; an empty/non-string file_path falls back to the legacy `path`. Empty string ⇒ undefined
|
|
12
|
+
// (treated as "no path") so every caller's `=== undefined` check is sufficient — no separate length-0 guard needed.
|
|
13
|
+
const fp = a?.file_path;
|
|
14
|
+
if (typeof fp === "string" && fp.length > 0)
|
|
15
|
+
return fp;
|
|
16
|
+
const p = a?.path;
|
|
17
|
+
return typeof p === "string" && p.length > 0 ? p : undefined;
|
|
18
|
+
}
|
|
19
|
+
/** SHA-256 hex of UTF-8 content — the staleness/identity key (design/44 §4 inv 2, jury M1). */
|
|
20
|
+
export function sha256(content) {
|
|
21
|
+
return createHash("sha256").update(content, "utf8").digest("hex");
|
|
22
|
+
}
|
|
23
|
+
const SEP = "/";
|
|
24
|
+
// ── channel [384] bug A:this layer sees BOTH path families — POSIX from linux/remote envs AND
|
|
25
|
+
// Windows drive-letter form from a win32 NodeExecutionEnv (env.canonicalPath/realpath output is
|
|
26
|
+
// backslash-native there). The original "/"-hardcoded helpers judged every win32 path outside root
|
|
27
|
+
// (Read/Write/Edit 全瘫). All helpers below are FORM-aware (never keyed on process.platform — the env
|
|
28
|
+
// may be remote and of the OTHER family than the host). UNC is refused earlier (isUncPath).
|
|
29
|
+
/** Absolute in EITHER family: POSIX `/…` or drive-letter `C:\…`/`C:/…`. */
|
|
30
|
+
function isAbsolutePathForm(p) {
|
|
31
|
+
return p.startsWith("/") || /^[A-Za-z]:[\\/]/.test(p);
|
|
32
|
+
}
|
|
33
|
+
/** Comparable form: backslashes → `/`, drive letter case-folded (`C:` vs `c:` — Windows FS ignores it). */
|
|
34
|
+
function normalizeForCompare(p) {
|
|
35
|
+
let n = p.replace(/\\/g, "/");
|
|
36
|
+
if (/^[A-Za-z]:(\/|$)/.test(n))
|
|
37
|
+
n = n[0].toLowerCase() + n.slice(1);
|
|
38
|
+
return n;
|
|
39
|
+
}
|
|
40
|
+
/** The separator to REJOIN with, matching the path's native family (Node accepts `/` on win32, but we
|
|
41
|
+
* keep keys family-consistent so one file can't get two map keys via mixed separators). */
|
|
42
|
+
function nativeSepOf(p) {
|
|
43
|
+
return p.includes("\\") ? "\\" : "/";
|
|
44
|
+
}
|
|
45
|
+
function lastSepIndex(p) {
|
|
46
|
+
return Math.max(p.lastIndexOf("/"), p.lastIndexOf("\\"));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Device/special files that hang or corrupt a UTF-8 read — checked by PATH only, never opened (opening
|
|
50
|
+
* `/dev/zero` blocks the process forever, design/64 §7.2(1), CC `FileReadTool` BLOCKED_DEVICE_PATHS).
|
|
51
|
+
* `/dev/null` is intentionally absent (a safe empty read/write). Plus any `/dev/fd/*` and `/proc/<pid>/fd/[0-2]`.
|
|
52
|
+
*/
|
|
53
|
+
const BLOCKED_DEVICE_PATHS = new Set([
|
|
54
|
+
"/dev/zero", "/dev/random", "/dev/urandom", "/dev/full",
|
|
55
|
+
"/dev/stdin", "/dev/stdout", "/dev/stderr", "/dev/tty", "/dev/console",
|
|
56
|
+
"/dev/fd/0", "/dev/fd/1", "/dev/fd/2",
|
|
57
|
+
]);
|
|
58
|
+
// /proc stdio aliases (design/64 §16.1): /proc/self/fd/{0,1,2} and /proc/<pid>/fd/{0,1,2} hang the same
|
|
59
|
+
// way as /dev/stdin — more common to hit than /dev/fd/* on a Linux exec-env. Match any /proc/.../fd/[0-2].
|
|
60
|
+
const PROC_FD_RE = /^\/proc\/[^/]+\/fd\/[0-2]$/;
|
|
61
|
+
/** True for a device/special path that must never be opened (pure path check — no I/O). Matches CC's exact
|
|
62
|
+
* 12-entry blocklist (only `/dev/fd/0,1,2` — a plain `/dev/fd/7` is a readable fd file, so don't over-block,
|
|
63
|
+
* channel [65]/clay) plus `/proc/<pid|self>/fd/[0-2]`. */
|
|
64
|
+
// [K-PLATFORM-SWEEP] MINOR#9: win32 reserved device names — opening CON/PRN/AUX/NUL/COM1-9/LPT1-9 on a
|
|
65
|
+
// Windows filesystem hangs or hits the device regardless of directory (and classically regardless of an
|
|
66
|
+
// extension). Gated on WIN-FORM keys only: on a POSIX env `CON` is a perfectly legal filename.
|
|
67
|
+
const WIN_RESERVED_RE = /^(CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])(\.[^\\/]*)?$/i;
|
|
68
|
+
function isWinReservedDeviceKey(key) {
|
|
69
|
+
// codex 1.237 F6: win-form = drive-rooted, UNC, or a RELATIVE path using "\" — a POSIX absolute path
|
|
70
|
+
// ("/"-rooted) containing a literal backslash in a file name is legal and must NOT trip the block.
|
|
71
|
+
if (!(/^[A-Za-z]:[\\/]/.test(key) || key.startsWith("\\\\") || (!key.startsWith("/") && key.includes("\\"))))
|
|
72
|
+
return false;
|
|
73
|
+
const t = key.replace(/[\\/]+$/, "");
|
|
74
|
+
const base = t.slice(Math.max(t.lastIndexOf("/"), t.lastIndexOf("\\")) + 1);
|
|
75
|
+
return WIN_RESERVED_RE.test(base);
|
|
76
|
+
}
|
|
77
|
+
export function isBlockedDevicePath(key) {
|
|
78
|
+
return BLOCKED_DEVICE_PATHS.has(key) || PROC_FD_RE.test(key) || isWinReservedDeviceKey(key);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Extensions whose content is binary and would be garbage (or worse, hang) read as UTF-8 text
|
|
82
|
+
* (design/64 §7.2(2), CC `hasBinaryExtension`). Images/PDF are included here too: until multimodal read
|
|
83
|
+
* exists (design/64 §13.4 P3) they are also non-text, so reject rather than emit mojibake. Source files
|
|
84
|
+
* for app-dev (`.dart`/`.kt`/`.kts`/`.swift`/`.gradle`) are text and stay readable.
|
|
85
|
+
*/
|
|
86
|
+
const BINARY_EXTENSIONS = new Set([
|
|
87
|
+
".exe", ".dll", ".so", ".dylib", ".o", ".a", ".obj", ".lib", ".bin", ".class", ".pyc", ".pyo", ".wasm",
|
|
88
|
+
".zip", ".tar", ".gz", ".tgz", ".bz2", ".xz", ".7z", ".rar", ".jar", ".war", ".ear", ".lz4", ".zst",
|
|
89
|
+
".png", ".jpg", ".jpeg", ".gif", ".webp", ".bmp", ".tiff", ".tif", ".ico", ".heic", ".avif",
|
|
90
|
+
".mp3", ".wav", ".flac", ".ogg", ".m4a", ".aac", ".mp4", ".mov", ".avi", ".mkv", ".webm", ".wmv", ".flv",
|
|
91
|
+
".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".odt", ".ods", ".odp",
|
|
92
|
+
".woff", ".woff2", ".ttf", ".otf", ".eot",
|
|
93
|
+
".db", ".sqlite", ".sqlite3", ".mdb", ".dat", ".pdb", ".ipa", ".apk", ".dmg", ".iso", ".img",
|
|
94
|
+
]);
|
|
95
|
+
/** True if `path`'s extension is a known binary format (pure check — no I/O). Used by read_file and grep. */
|
|
96
|
+
export function hasBinaryExtension(path) {
|
|
97
|
+
const dot = path.lastIndexOf(".");
|
|
98
|
+
if (dot < 0)
|
|
99
|
+
return false;
|
|
100
|
+
return BINARY_EXTENSIONS.has(path.slice(dot).toLowerCase());
|
|
101
|
+
}
|
|
102
|
+
/** Extension → MIME for the image formats the Anthropic content API accepts (png/jpeg/gif/webp). Other image
|
|
103
|
+
* extensions (bmp/tiff/ico/heic/avif) are NOT API-supported and would need conversion (a heavy dep), so they
|
|
104
|
+
* stay in the binary-refused set — no silent garbage. (design/64 §13.4: Read-image, batch-C.) */
|
|
105
|
+
const IMAGE_MIME_BY_EXT = {
|
|
106
|
+
".png": "image/png",
|
|
107
|
+
".jpg": "image/jpeg",
|
|
108
|
+
".jpeg": "image/jpeg",
|
|
109
|
+
".gif": "image/gif",
|
|
110
|
+
".webp": "image/webp",
|
|
111
|
+
};
|
|
112
|
+
/** The MIME type to return an image file AS (a visual `ImageContent` block), or `undefined` if `path` is not a
|
|
113
|
+
* Read-supported image. Pure — no I/O. */
|
|
114
|
+
export function imageMimeForRead(path) {
|
|
115
|
+
const dot = path.lastIndexOf(".");
|
|
116
|
+
if (dot < 0)
|
|
117
|
+
return undefined;
|
|
118
|
+
return IMAGE_MIME_BY_EXT[path.slice(dot).toLowerCase()];
|
|
119
|
+
}
|
|
120
|
+
/** Verify the raw bytes actually ARE the image format the extension claims (magic-number sniff). Extension alone
|
|
121
|
+
* is forgeable: a `.png` holding text / an empty file / a truncated blob would otherwise become a malformed
|
|
122
|
+
* `ImageContent` that makes the NEXT provider request fail (400). Pure — no I/O. (batch-C, codex review.) */
|
|
123
|
+
export function imageMagicMatches(bytes, mimeType) {
|
|
124
|
+
const b = bytes;
|
|
125
|
+
switch (mimeType) {
|
|
126
|
+
case "image/png": // 89 50 4E 47 0D 0A 1A 0A
|
|
127
|
+
return b.length >= 8 && b[0] === 0x89 && b[1] === 0x50 && b[2] === 0x4e && b[3] === 0x47 && b[4] === 0x0d && b[5] === 0x0a && b[6] === 0x1a && b[7] === 0x0a;
|
|
128
|
+
case "image/jpeg": // FF D8 FF
|
|
129
|
+
return b.length >= 3 && b[0] === 0xff && b[1] === 0xd8 && b[2] === 0xff;
|
|
130
|
+
case "image/gif": // "GIF87a" / "GIF89a"
|
|
131
|
+
return b.length >= 6 && b[0] === 0x47 && b[1] === 0x49 && b[2] === 0x46 && b[3] === 0x38 && (b[4] === 0x37 || b[4] === 0x39) && b[5] === 0x61;
|
|
132
|
+
case "image/webp": // "RIFF" .... "WEBP"
|
|
133
|
+
return b.length >= 12 && b[0] === 0x52 && b[1] === 0x49 && b[2] === 0x46 && b[3] === 0x46 && b[8] === 0x57 && b[9] === 0x45 && b[10] === 0x42 && b[11] === 0x50;
|
|
134
|
+
default:
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Content sniff for binary data (design/64 §17.1, CC `constants/files.ts` `isBinaryContent`): a NUL byte,
|
|
140
|
+
* or more than 10% non-printable characters in the sample, means binary. Second layer behind
|
|
141
|
+
* {@link hasBinaryExtension} — catches extension-less or mis-named binaries (a `Dockerfile` that is really
|
|
142
|
+
* a compiled blob) that would otherwise be read as mojibake. Plain text (incl. UTF-8, tabs/newlines) passes.
|
|
143
|
+
*/
|
|
144
|
+
export function isBinaryContent(sample) {
|
|
145
|
+
if (sample.length === 0)
|
|
146
|
+
return false;
|
|
147
|
+
let nonPrintable = 0;
|
|
148
|
+
for (let i = 0; i < sample.length; i++) {
|
|
149
|
+
const c = sample.charCodeAt(i);
|
|
150
|
+
if (c === 0)
|
|
151
|
+
return true; // a NUL byte is a definitive binary signal
|
|
152
|
+
// 编码 parity 批 (codex 镜头2 HIGH, probe-confirmed 500/500): random bytes behind a FORGED
|
|
153
|
+
// `FF FE` BOM decode via utf16le into a sea of "printable" BMP codepoints the counters here
|
|
154
|
+
// never catch. Real text NEVER contains a lone surrogate or the U+FFFE/U+FFFF noncharacters;
|
|
155
|
+
// random 16-bit units hit one with p≈1−0.963^n (≈certain past a few hundred units). Zero false
|
|
156
|
+
// positives on well-formed text (valid decodes always pair surrogates).
|
|
157
|
+
if (c >= 0xd800 && c <= 0xdbff) {
|
|
158
|
+
const next = i + 1 < sample.length ? sample.charCodeAt(i + 1) : -1;
|
|
159
|
+
if (next < 0xdc00 || next > 0xdfff)
|
|
160
|
+
return true; // lone HIGH surrogate
|
|
161
|
+
i++; // valid pair — skip the low half
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
if (c >= 0xdc00 && c <= 0xdfff)
|
|
165
|
+
return true; // LOW surrogate with no preceding high
|
|
166
|
+
if (c === 0xfffe || c === 0xffff)
|
|
167
|
+
return true; // noncharacters — never in real text
|
|
168
|
+
// Control chars except common text whitespace (\t \n \r \f \v) and the UTF-8 replacement char.
|
|
169
|
+
if ((c < 0x20 && c !== 0x09 && c !== 0x0a && c !== 0x0d && c !== 0x0c && c !== 0x0b) || c === 0xfffd) {
|
|
170
|
+
nonPrintable++;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return nonPrintable / sample.length > 0.1;
|
|
174
|
+
}
|
|
175
|
+
/** True for a Windows/SMB UNC path (`\\host\share`) or a `//`-prefixed network path — refused to avoid
|
|
176
|
+
* NTLM credential leaks (design/64 §7.2(8), CC validateInput). Pure check on the RAW model path. */
|
|
177
|
+
export function isUncPath(path) {
|
|
178
|
+
return path.startsWith("\\\\") || path.startsWith("//");
|
|
179
|
+
}
|
|
180
|
+
/** True if `p` is the rootCanonical itself or strictly inside it (path-segment-aware, not a raw prefix). */
|
|
181
|
+
function within(rootCanonical, p) {
|
|
182
|
+
if (!rootCanonical)
|
|
183
|
+
return false; // defense in depth: an empty root would prefix-match EVERYTHING ("" + SEP)
|
|
184
|
+
const rootN = normalizeForCompare(rootCanonical);
|
|
185
|
+
const pN = normalizeForCompare(p);
|
|
186
|
+
if (!rootN)
|
|
187
|
+
return false;
|
|
188
|
+
if (pN === rootN)
|
|
189
|
+
return true;
|
|
190
|
+
const base = rootN.endsWith(SEP) ? rootN : rootN + SEP;
|
|
191
|
+
return pN.startsWith(base);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Resolve a model-supplied path to a canonical key AND enforce rootPath containment (design/44 §4
|
|
195
|
+
* inv 5/6/7). Existing paths use `canonicalPath` (resolves symlinks, so the same file can't get two
|
|
196
|
+
* keys). New paths canonicalize the **deepest existing ancestor** then rejoin the missing tail — a
|
|
197
|
+
* symlinked parent therefore can't smuggle the target outside root. Returns the canonical key, or a
|
|
198
|
+
* `path_not_in_root` violation. (Defense-in-depth at the tool layer; NOT a substitute for a sandboxed
|
|
199
|
+
* `executionEnv` — see design/44 §5.)
|
|
200
|
+
*/
|
|
201
|
+
export async function resolveKey(env, rootCanonical, path, signal, baseCwd,
|
|
202
|
+
// design/119 (CC --add-dir parity): extra ALLOWED containment roots (canonicalized by the caller).
|
|
203
|
+
// The primary root keeps its cwd/base-path role; these only widen the containment check.
|
|
204
|
+
additionalRootsCanonical) {
|
|
205
|
+
// Canonicalize the model-supplied path to its real on-disk target FIRST (shared with the
|
|
206
|
+
// sensitive-path policy, design/72 §2.1) — then layer containment + device checks on the result.
|
|
207
|
+
const canon = await canonicalizeTarget(env, path, signal, baseCwd);
|
|
208
|
+
if (!canon.ok)
|
|
209
|
+
return { ok: false, violation: { code: "invalid", message: canon.message } };
|
|
210
|
+
const key = canon.key;
|
|
211
|
+
// Blocked device/special file — checked on the canonical key (so a symlink-to-/dev/zero is caught too)
|
|
212
|
+
// BEFORE containment, so the model gets the precise "blocked device" reason (design/64 §7.2(1)).
|
|
213
|
+
if (isBlockedDevicePath(key)) {
|
|
214
|
+
return { ok: false, violation: { code: "invalid", message: `path "${path}" is a blocked device/special file (reading it can hang the process); refused.` } };
|
|
215
|
+
}
|
|
216
|
+
if (!within(rootCanonical, key) && !additionalRootsCanonical?.some((r) => within(r, key))) {
|
|
217
|
+
const roots = [rootCanonical, ...(additionalRootsCanonical ?? [])];
|
|
218
|
+
return {
|
|
219
|
+
ok: false,
|
|
220
|
+
violation: { code: "path_not_in_root", message: `path "${path}" resolves outside the allowed root${roots.length > 1 ? "s" : ""} (${roots.join(", ")}); access denied` },
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
return { ok: true, key };
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Canonicalize a model-supplied path to its real on-disk target (symlinks resolved; for a path that
|
|
227
|
+
* doesn't exist yet, the deepest EXISTING ancestor is canonicalized then the missing tail rejoined —
|
|
228
|
+
* so a symlinked parent can't smuggle the target elsewhere). NO containment check — this is the pure
|
|
229
|
+
* canonicalization shared by `resolveKey` (which adds rootPath containment) and
|
|
230
|
+
* `createSensitivePathPolicy` (design/72 §2.1, which matches the real target against a guarded list).
|
|
231
|
+
* A single source of truth for symlink resolution: a sensitive-path guard that matched the raw path
|
|
232
|
+
* instead of the real target would be one-shot bypassable by a symlink (the bug §2.1 calls out).
|
|
233
|
+
*/
|
|
234
|
+
export async function canonicalizeTarget(env, path, signal, baseCwd) {
|
|
235
|
+
// UNC/network path: refuse on the RAW path before any fs op (credential-leak surface, design/64 §7.2(8)).
|
|
236
|
+
if (isUncPath(path)) {
|
|
237
|
+
return { ok: false, message: `path "${path}" is a UNC/network path; refused (potential credential leak).` };
|
|
238
|
+
}
|
|
239
|
+
// A relative path resolves against the per-task tracked cwd (design/64 §16.3): `cd`-persistence applies
|
|
240
|
+
// to the fs tools too. `baseCwd` is the RAW tracked path (never canonicalized) — containment is NOT
|
|
241
|
+
// skipped by callers that need it (the join is fed through `canonicalPath` below, so a `cd` through a
|
|
242
|
+
// symlink pointing out of root is still caught per-op). Absolute paths ignore `baseCwd`.
|
|
243
|
+
const target = baseCwd && !isAbsolutePathForm(path) ? `${baseCwd.replace(/[\\/]+$/, "")}/${path}` : path;
|
|
244
|
+
const absR = await env.absolutePath(target, signal);
|
|
245
|
+
if (!absR.ok)
|
|
246
|
+
return { ok: false, message: `cannot resolve path "${path}": ${absR.error.message}` };
|
|
247
|
+
let abs = absR.value;
|
|
248
|
+
// Follow a leaf symlink chain manually (bounded) so a DANGLING symlink — one whose target doesn't
|
|
249
|
+
// exist yet, which `canonicalPath`'s `realpath` cannot resolve — still reveals its real target.
|
|
250
|
+
// Without this, `write_file innocent.txt` where `innocent.txt -> .git/hooks/payload` would
|
|
251
|
+
// canonicalize to the innocent name and slip past the sensitive-path guard (design/72 §2.1 🔴).
|
|
252
|
+
for (let hop = 0; hop < 16; hop++) {
|
|
253
|
+
const exists = await env.exists(abs, signal);
|
|
254
|
+
if (!(exists.ok && exists.value)) {
|
|
255
|
+
// Target doesn't exist: canonicalize the deepest existing ancestor so a symlinked PARENT can't escape.
|
|
256
|
+
return { ok: true, key: await canonicalizeNewPath(env, abs, signal) };
|
|
257
|
+
}
|
|
258
|
+
const canon = await env.canonicalPath(abs, signal);
|
|
259
|
+
if (canon.ok)
|
|
260
|
+
return { ok: true, key: canon.value };
|
|
261
|
+
// `exists` (lstat) is true but `realpath` failed ⇒ a leaf symlink to a non-existent target.
|
|
262
|
+
const info = await env.fileInfo(abs, signal);
|
|
263
|
+
if (!(info.ok && info.value.kind === "symlink")) {
|
|
264
|
+
return { ok: true, key: abs }; // genuinely not a symlink (realpath failed for another reason) — best-effort raw
|
|
265
|
+
}
|
|
266
|
+
if (!env.readLink) {
|
|
267
|
+
// It IS a symlink but this env can't read links → the real target is unknown. Fail-closed (P-5):
|
|
268
|
+
// returning the raw innocent path here let `write_file innocent.txt -> .git/hooks/payload` slip the guard.
|
|
269
|
+
return { ok: false, message: `cannot resolve symlink "${path}" (env has no readLink)`, unresolvedSymlink: true };
|
|
270
|
+
}
|
|
271
|
+
const link = await env.readLink(abs, signal);
|
|
272
|
+
if (!link.ok) {
|
|
273
|
+
return { ok: false, message: `cannot read symlink "${path}": ${link.error.message}`, unresolvedSymlink: true };
|
|
274
|
+
}
|
|
275
|
+
// Resolve the (possibly relative) link target against the symlink's own directory, then loop.
|
|
276
|
+
const linkTarget = isAbsolutePathForm(link.value) ? link.value : `${parentDir(abs)}${nativeSepOf(abs)}${link.value}`;
|
|
277
|
+
const reabs = await env.absolutePath(linkTarget, signal);
|
|
278
|
+
abs = reabs.ok ? reabs.value : linkTarget;
|
|
279
|
+
}
|
|
280
|
+
// Symlink-cycle/chain cap hit — we never reached a real target. Fail-closed (don't fall to the raw path).
|
|
281
|
+
return { ok: false, message: `symlink chain for "${path}" exceeded the hop cap; target unresolved`, unresolvedSymlink: true };
|
|
282
|
+
}
|
|
283
|
+
/** Directory of an absolute path (drop the last segment, either family); root stays root. */
|
|
284
|
+
function parentDir(abs) {
|
|
285
|
+
const i = lastSepIndex(abs);
|
|
286
|
+
if (i <= 0)
|
|
287
|
+
return SEP;
|
|
288
|
+
const head = abs.slice(0, i);
|
|
289
|
+
// `C:\x` → head `C:` is drive-RELATIVE on Windows; keep the separator so the drive root stays a root.
|
|
290
|
+
return /^[A-Za-z]:$/.test(head) ? head + abs[i] : head;
|
|
291
|
+
}
|
|
292
|
+
/** Canonicalize the deepest existing ancestor of a non-existent path, then rejoin the missing segments. */
|
|
293
|
+
async function canonicalizeNewPath(env, abs, signal) {
|
|
294
|
+
const sep = nativeSepOf(abs);
|
|
295
|
+
const parts = abs.split(/[\\/]/);
|
|
296
|
+
const tail = [];
|
|
297
|
+
while (parts.length > 1) {
|
|
298
|
+
const candidate = parts.join(sep) || sep;
|
|
299
|
+
const ex = await env.exists(candidate, signal);
|
|
300
|
+
if (ex.ok && ex.value) {
|
|
301
|
+
const canon = await env.canonicalPath(candidate, signal);
|
|
302
|
+
const baseCanon = canon.ok ? canon.value : candidate;
|
|
303
|
+
// Rejoin with the CANONICAL base's own family (realpath output) so the key stays consistent.
|
|
304
|
+
return [baseCanon, ...tail.reverse()].join(nativeSepOf(baseCanon));
|
|
305
|
+
}
|
|
306
|
+
tail.push(parts.pop());
|
|
307
|
+
}
|
|
308
|
+
return abs; // nothing on the chain exists (unusual) — fall back to the absolute path
|
|
309
|
+
}
|
|
310
|
+
/** Render a `FsViolation` as the model-facing tool error text (returned, never thrown — model retries). */
|
|
311
|
+
export function violationText(toolName, v) {
|
|
312
|
+
return `Error (${toolName}): ${v.message}`;
|
|
313
|
+
}
|
|
314
|
+
/** inv 1 (read-before-edit): a file must have been read this task before it can be edited/overwritten.
|
|
315
|
+
* Message is CC 2.1.198 live-verbatim (all-tools-live-probe 2026-07-08 §2.1/§3.1/§5.1 — one message for
|
|
316
|
+
* Edit/Write/NotebookEdit: "before writing to it", not the old sema "before editing"). */
|
|
317
|
+
export function requireRead(state, key) {
|
|
318
|
+
if (!state.has(key)) {
|
|
319
|
+
return { code: "not_read", message: "File has not been read yet. Read it first before writing to it." };
|
|
320
|
+
}
|
|
321
|
+
return undefined;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Edit "no-op" guard (design/64 §7.2(4), CC `FileEditTool:148-153`): refuse an edit whose `old_string`
|
|
325
|
+
* equals `new_string` — without it the edit passes the match check and writes the file back unchanged (a
|
|
326
|
+
* silent no-op that wastes a turn and dirties mtime). Verbatim CC message so a CC-trained model recognizes it.
|
|
327
|
+
*/
|
|
328
|
+
export function checkNoChange(oldString, newString) {
|
|
329
|
+
if (oldString === newString) {
|
|
330
|
+
return { code: "invalid", message: "No changes to make: old_string and new_string are exactly the same." };
|
|
331
|
+
}
|
|
332
|
+
return undefined;
|
|
333
|
+
}
|
|
334
|
+
/** inv 2 (staleness): the file's current content hash must match what was recorded at read time. */
|
|
335
|
+
export function checkStale(entry, currentHash) {
|
|
336
|
+
if (entry.hash !== currentHash) {
|
|
337
|
+
return { code: "stale", message: "File has been modified since it was read; read it again before editing." };
|
|
338
|
+
}
|
|
339
|
+
return undefined;
|
|
340
|
+
}
|
|
341
|
+
/** Count non-overlapping occurrences of `needle` in `haystack` (`needle` must be non-empty). */
|
|
342
|
+
export function countOccurrences(haystack, needle) {
|
|
343
|
+
if (needle === "")
|
|
344
|
+
return 0;
|
|
345
|
+
return haystack.split(needle).length - 1;
|
|
346
|
+
}
|
|
347
|
+
// ── 批④ CC-parity小件 #1: ENOENT "Did you mean" correction (CC 2.1.198 findSimilarFile + the
|
|
348
|
+
// case-variant class named by the sweep doc). Pure: the caller lists the parent directory.
|
|
349
|
+
/**
|
|
350
|
+
* Suggest a sibling filename for a missing path (CC `File does not exist… Did you mean X?` self-heal
|
|
351
|
+
* path, bundle :335883/:478419). Honest scope (1.253 双轨终审): this is the FALLBACK tier — an
|
|
352
|
+
* approximation of CC's Cxe same-directory scan plus a sema-added case-insensitive exact-name match
|
|
353
|
+
* (the case-typo class CC misses). CC's FIRST preference (aY: re-resolve the filename against cwd
|
|
354
|
+
* and suggest the cwd path on an exists hit) needs env probing and therefore lives at the call site
|
|
355
|
+
* (fs/index.ts enoentMessage) — this function stays pure over a listed sibling set. (a) CC's
|
|
356
|
+
* findSimilarFile rule — same stem, different extension/name in the same directory; (b) the
|
|
357
|
+
* case-insensitive exact-name match. Returns the suggested NAME (not a full path), or undefined.
|
|
358
|
+
*/
|
|
359
|
+
export function similarNameSuggestion(siblingNames, missingName) {
|
|
360
|
+
const stemOf = (n) => {
|
|
361
|
+
const dot = n.lastIndexOf(".");
|
|
362
|
+
return dot > 0 ? n.slice(0, dot) : n;
|
|
363
|
+
};
|
|
364
|
+
const missingLower = missingName.toLowerCase();
|
|
365
|
+
const missingStem = stemOf(missingName);
|
|
366
|
+
// Case-insensitive exact match wins (closest correction), then CC's same-stem-different-ext rule.
|
|
367
|
+
const caseHit = siblingNames.find((n) => n !== missingName && n.toLowerCase() === missingLower);
|
|
368
|
+
if (caseHit)
|
|
369
|
+
return caseHit;
|
|
370
|
+
return siblingNames.find((n) => n !== missingName && stemOf(n) === missingStem);
|
|
371
|
+
}
|
|
372
|
+
// ── 批④ CC-parity小件 #4: curly↔straight quote-normalized Edit matching (CC 2.1.198 bundle
|
|
373
|
+
// :290189-290307 — the forgiving match layer behind exact `includes`). The normalization is
|
|
374
|
+
// per-character (length-preserving), so a hit in the normalized coordinate maps back to the file's
|
|
375
|
+
// ACTUAL bytes at the same span — the edit always rewrites what is really in the file.
|
|
376
|
+
const CURLY_TO_STRAIGHT = { "‘": "'", "’": "'", "“": '"', "”": '"' };
|
|
377
|
+
/** Replace curly single/double quotes with their straight ASCII forms (CC qDa, 1:1 char mapping). */
|
|
378
|
+
export function normalizeQuotes(s) {
|
|
379
|
+
return s.replace(/[‘’“”]/g, (c) => CURLY_TO_STRAIGHT[c] ?? c);
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Resolve `oldString` against `content` with the CC quote-forgiveness layer: exact match first; on a
|
|
383
|
+
* miss, match in the curly→straight normalized coordinate and return the ACTUAL file substring at
|
|
384
|
+
* that span (CC kOe). Returns undefined when even the normalized form does not appear.
|
|
385
|
+
*/
|
|
386
|
+
export function resolveQuoteMatch(content, oldString) {
|
|
387
|
+
if (oldString === "")
|
|
388
|
+
return undefined;
|
|
389
|
+
if (content.includes(oldString))
|
|
390
|
+
return oldString;
|
|
391
|
+
const normOld = normalizeQuotes(oldString);
|
|
392
|
+
const idx = normalizeQuotes(content).indexOf(normOld);
|
|
393
|
+
if (idx === -1)
|
|
394
|
+
return undefined;
|
|
395
|
+
return content.substring(idx, idx + oldString.length);
|
|
396
|
+
}
|
|
397
|
+
/** True when the char before index `i` allows an OPENING quote (CC VDa: start, whitespace, brackets, dashes). */
|
|
398
|
+
function isQuoteOpenerPosition(chars, i) {
|
|
399
|
+
if (i === 0)
|
|
400
|
+
return true;
|
|
401
|
+
const p = chars[i - 1];
|
|
402
|
+
return p === " " || p === "\t" || p === "\n" || p === "\r" || p === "(" || p === "[" || p === "{" || p === "—" || p === "–";
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* When the quote-forgiving match resolved to a curly-quoted file span, convert the straight quotes in
|
|
406
|
+
* `newString` to the matching curly forms so the replacement stays style-consistent with the file
|
|
407
|
+
* (CC Dmt/yPp/TPp: openers vs closers by preceding char; a letter-adjacent single quote is an
|
|
408
|
+
* apostrophe U+2019). Call ONLY when the matched span differs from the model's old_string.
|
|
409
|
+
*/
|
|
410
|
+
export function adaptNewStringQuotes(matchedOld, newString) {
|
|
411
|
+
const wantsDouble = matchedOld.includes("“") || matchedOld.includes("”");
|
|
412
|
+
const wantsSingle = matchedOld.includes("‘") || matchedOld.includes("’");
|
|
413
|
+
if (!wantsDouble && !wantsSingle)
|
|
414
|
+
return newString;
|
|
415
|
+
const chars = [...newString];
|
|
416
|
+
const out = [];
|
|
417
|
+
for (let i = 0; i < chars.length; i++) {
|
|
418
|
+
const c = chars[i];
|
|
419
|
+
if (wantsDouble && c === '"')
|
|
420
|
+
out.push(isQuoteOpenerPosition(chars, i) ? "“" : "”");
|
|
421
|
+
else if (wantsSingle && c === "'") {
|
|
422
|
+
const prev = i > 0 ? chars[i - 1] : undefined;
|
|
423
|
+
const next = i < chars.length - 1 ? chars[i + 1] : undefined;
|
|
424
|
+
const letterBefore = prev !== undefined && /\p{L}/u.test(prev);
|
|
425
|
+
const letterAfter = next !== undefined && /\p{L}/u.test(next);
|
|
426
|
+
if (letterBefore && letterAfter)
|
|
427
|
+
out.push("’"); // apostrophe
|
|
428
|
+
else
|
|
429
|
+
out.push(isQuoteOpenerPosition(chars, i) ? "‘" : "’");
|
|
430
|
+
}
|
|
431
|
+
else
|
|
432
|
+
out.push(c);
|
|
433
|
+
}
|
|
434
|
+
return out.join("");
|
|
435
|
+
}
|
|
436
|
+
// ── 批④ CC-parity小件 #3: whole-line deletion swallows the trailing newline (CC 2.1.198 KDa,
|
|
437
|
+
// bundle :290312): deleting text (new_string === "") whose old_string does NOT end in `\n` but which
|
|
438
|
+
// IS followed by one in the file removes the newline too — no orphan blank line left behind.
|
|
439
|
+
/**
|
|
440
|
+
* The effective old_string a DELETION should replace: `oldString + "\n"` when new_string is empty,
|
|
441
|
+
* old_string doesn't already end with a newline, and the newline-suffixed form exists in the content;
|
|
442
|
+
* otherwise old_string unchanged (CC KDa parity). SINGLE (non-replace_all) edits only: a widened
|
|
443
|
+
* needle under replace_all would miss occurrences not followed by a newline and desync the
|
|
444
|
+
* replacement count — the Edit tool restricts the widening to single edits (1.253 双轨终审 MED).
|
|
445
|
+
*/
|
|
446
|
+
export function deletionOldString(content, oldString, newString) {
|
|
447
|
+
if (newString !== "")
|
|
448
|
+
return oldString;
|
|
449
|
+
if (!oldString.endsWith("\n") && content.includes(oldString + "\n"))
|
|
450
|
+
return oldString + "\n";
|
|
451
|
+
return oldString;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* inv 3 (edit uniqueness): `oldString` must match exactly once unless `replaceAll`. Zero → not found;
|
|
455
|
+
* >1 without replaceAll → ambiguous. `truncated` adds a hint that unseen content may hold more matches (S2).
|
|
456
|
+
* Messages are CC 2.1.198 live-verbatim (all-tools-live-probe 2026-07-08 §2.1): first sentence(s) byte-exact,
|
|
457
|
+
* then a `String: <needle>` echo line (CC form). The sema truncated-read hint survives as a parenthetical
|
|
458
|
+
* appended to the sentence (probe verdict: "truncated 提示可并入括注保留").
|
|
459
|
+
*/
|
|
460
|
+
export function checkEditMatch(content, oldString, replaceAll, truncated) {
|
|
461
|
+
if (oldString === "") {
|
|
462
|
+
return { code: "invalid", message: "old_string must not be empty." };
|
|
463
|
+
}
|
|
464
|
+
const n = countOccurrences(content, oldString);
|
|
465
|
+
if (n === 0) {
|
|
466
|
+
return {
|
|
467
|
+
code: "ambiguous_edit",
|
|
468
|
+
message: `String to replace not found in file.${truncated ? " (note: the read was truncated — it may be in the unshown portion)" : ""}\nString: ${oldString}`,
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
if (n > 1 && !replaceAll) {
|
|
472
|
+
return {
|
|
473
|
+
code: "ambiguous_edit",
|
|
474
|
+
message: `Found ${n} matches of the string to replace, but replace_all is false. To replace all occurrences, set replace_all to true. To replace only one occurrence, please provide more context to uniquely identify the instance.${truncated ? " (the read was truncated; some matches may be in the unshown portion)" : ""}\nString: ${oldString}`,
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
return undefined;
|
|
478
|
+
}
|
|
479
|
+
//# sourceMappingURL=safety.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety.js","sourceRoot":"","sources":["../../../src/tools/fs/safety.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { ExecutionEnv } from "../../internal/harness.js";
|
|
2
|
+
/** Directories never worth crawling (design/64 §10.3) — dependency/build/cache trees. */
|
|
3
|
+
export declare const DEFAULT_IGNORE_DIRS: ReadonlySet<string>;
|
|
4
|
+
export interface GrepParams {
|
|
5
|
+
pattern: string;
|
|
6
|
+
/** Treat `pattern` as a regex; default false = literal substring (CC's `-F`). */
|
|
7
|
+
regex?: boolean;
|
|
8
|
+
/** Restrict the search to this sub-path (relative to root, or absolute within root). */
|
|
9
|
+
path?: string;
|
|
10
|
+
/** Only search files matching this glob (e.g. `*.ts`, `*.{ts,tsx}`). 批④ #6 (CC parity): a
|
|
11
|
+
* comma/whitespace-separated list (`"*.ts,*.tsx"`) is split into multiple globs (brace globs kept whole). */
|
|
12
|
+
glob?: string;
|
|
13
|
+
/** 批④ #5 (CC 2.1.201 `-o`): print only the matched (non-empty) parts of each matching line, one match
|
|
14
|
+
* per output line (rg -o / --only-matching). content mode only; ignored otherwise (CC parity).
|
|
15
|
+
* 1.253: with `multiline` the JS fallback emits the matched SEGMENT's lines (rg -U -o shape). */
|
|
16
|
+
only_matching?: boolean;
|
|
17
|
+
/** content (default): `path:line:text`. files_with_matches: `path`. count: `path:count`. */
|
|
18
|
+
output_mode?: "content" | "files_with_matches" | "count";
|
|
19
|
+
/** Lines of context around a match (content mode only) — CC's `-C`. */
|
|
20
|
+
context?: number;
|
|
21
|
+
/** Lines of context BEFORE each match (content mode) — CC's `-B`. Wins over `context` for the before-window. */
|
|
22
|
+
context_before?: number;
|
|
23
|
+
/** Lines of context AFTER each match (content mode) — CC's `-A`. Wins over `context` for the after-window. */
|
|
24
|
+
context_after?: number;
|
|
25
|
+
/** File type filter — CC's `type` (rg `--type`): "js", "py", "rust", "go", "ts", … The rg path uses rg's
|
|
26
|
+
* built-in type table; the JS fallback maps common types to globs (unknown types are ignored with a note). */
|
|
27
|
+
type?: string;
|
|
28
|
+
/** Case-insensitive match — CC's `-i`. */
|
|
29
|
+
ignore_case?: boolean;
|
|
30
|
+
/** Match across line boundaries — CC's multiline `-U`. JS fallback approximates per-file. */
|
|
31
|
+
multiline?: boolean;
|
|
32
|
+
/** Cap the number of output items (default 250) — CC's `head_limit`. */
|
|
33
|
+
head_limit?: number;
|
|
34
|
+
/** Skip the first N output lines — CC's `offset` (pagination partner of head_limit). */
|
|
35
|
+
offset?: number;
|
|
36
|
+
}
|
|
37
|
+
/** 批④ #6 (CC 2.1.198 Grep call, bundle :333383-333390): split the `glob` param into individual glob
|
|
38
|
+
* tokens — whitespace-separated first; a token WITHOUT braces is further split on commas
|
|
39
|
+
* (`"*.ts,*.tsx"` → two globs), while a brace token (`*.{ts,tsx}`) is kept whole (its commas are
|
|
40
|
+
* alternation syntax, not separators). CC-verbatim splitting rules. */
|
|
41
|
+
export declare function splitGlobParam(glob: string): string[];
|
|
42
|
+
/** 批④ #8 (CC 2.1.198 RWp, bundle :332987): decompose an ABSOLUTE glob pattern into a base directory +
|
|
43
|
+
* relative pattern — cut at the last separator before the first glob metachar (`* ? [ {`); a pattern
|
|
44
|
+
* with no metachar splits dirname/basename. Returns undefined for a relative pattern (caller keeps it
|
|
45
|
+
* as-is) or when no usable base can be derived. */
|
|
46
|
+
export declare function splitAbsoluteGlobPattern(pattern: string): {
|
|
47
|
+
baseDir: string;
|
|
48
|
+
relativePattern: string;
|
|
49
|
+
} | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* POSIX-safe single-quote so an arbitrary model-supplied string can't break out of the shell command that
|
|
52
|
+
* runs ripgrep. Wraps in single quotes (inside which the shell expands nothing — no `$()`, backtick, `;`, or
|
|
53
|
+
* glob) and escapes any embedded single quote via the `'\''` idiom (close, escaped-quote, reopen). Exported
|
|
54
|
+
* for direct injection testing (council [R145]). Renamed from `shq` for legibility.
|
|
55
|
+
*/
|
|
56
|
+
export declare function shellQuote(s: string): string;
|
|
57
|
+
/** Lightweight `.gitignore` matcher (handles comments, negation, dir-only `/`, anchoring, `*`/`?`). */
|
|
58
|
+
export declare function gitignoreMatcher(content: string): (rel: string, isDir: boolean) => boolean;
|
|
59
|
+
/** Build the combined ignore predicate (ignore-set ∪ .gitignore) for a JS-fallback walk.
|
|
60
|
+
* Exported so repo-map (design/72 §1) walks with the SAME ignore semantics as grep/glob. */
|
|
61
|
+
export declare function buildIgnore(env: ExecutionEnv, root: string, signal?: AbortSignal): Promise<(rel: string, isDir: boolean) => boolean>;
|
|
62
|
+
/** What a bounded walk actually saw — so consumers can be HONEST about incompleteness (A-4 class sweep:
|
|
63
|
+
* silently bounded results must never read as exhaustive). */
|
|
64
|
+
export interface WalkResult {
|
|
65
|
+
/** Greppable text files (binary-extension and oversize files excluded). */
|
|
66
|
+
files: string[];
|
|
67
|
+
/** Name-only entries: binary-extension + over-{@link FILE_MAX_BYTES} files. Content search skips them
|
|
68
|
+
* (grep semantics / memory bound), but globbing matches NAMES — these must still be visible to it
|
|
69
|
+
* (previously `glob *.png` could never match anything). */
|
|
70
|
+
nameOnly: string[];
|
|
71
|
+
/** True when the walk hit its file-count or depth ceiling — results MAY be missing files. */
|
|
72
|
+
incomplete: boolean;
|
|
73
|
+
/** Non-binary files skipped by content search for being over {@link FILE_MAX_BYTES} (also in
|
|
74
|
+
* `nameOnly`). Surfaced by grep so "No matches." can't silently mean "didn't look". */
|
|
75
|
+
skippedLarge: number;
|
|
76
|
+
}
|
|
77
|
+
/** Bounded, ignore-aware recursive walk. Returns absolute file paths under `start`. Exported for
|
|
78
|
+
* repo-map (design/72 §1) — same bounded/ignore-aware traversal as grep/glob, one source of truth. */
|
|
79
|
+
export declare function walk(env: ExecutionEnv, root: string, start: string, ignore: (rel: string, isDir: boolean) => boolean, signal?: AbortSignal): Promise<WalkResult>;
|
|
80
|
+
/** JS-fallback grep: ignore-aware walk + per-line scan, honoring output_mode / context / head_limit. */
|
|
81
|
+
export declare function jsGrep(env: ExecutionEnv, root: string, p: GrepParams, signal?: AbortSignal): Promise<string>;
|
|
82
|
+
/** Detect ripgrep once per env (cached). */
|
|
83
|
+
export declare function detectRipgrep(env: ExecutionEnv): Promise<boolean>;
|
|
84
|
+
/** ripgrep grep: build flags from params, run, normalize to the same output as {@link jsGrep}. */
|
|
85
|
+
export declare function rgGrep(env: ExecutionEnv, root: string, p: GrepParams, signal?: AbortSignal): Promise<string>;
|
|
86
|
+
/** grep dispatch: ripgrep when the env has it, else the hardened JS fallback (design/64 §10.3). */
|
|
87
|
+
export declare function runGrep(env: ExecutionEnv, root: string, p: GrepParams, signal?: AbortSignal): Promise<string>;
|
|
88
|
+
/** glob: find files by name pattern, with optional sub-path scoping; returns RELATIVE paths (design/64 §10.4). */
|
|
89
|
+
export declare function runGlob(env: ExecutionEnv, root: string, pattern: string, opts?: {
|
|
90
|
+
path?: string;
|
|
91
|
+
max?: number;
|
|
92
|
+
}, signal?: AbortSignal): Promise<string>;
|
|
93
|
+
/** Structured sibling of {@link runGlob} (design/116 W3): same walk/match, plus the CC-shaped facts a
|
|
94
|
+
* shell renders (`filenames`/`numFiles`/`truncated`/`durationMs`/`totalMatches`/`countIsComplete`)
|
|
95
|
+
* without re-parsing the text.
|
|
96
|
+
*
|
|
97
|
+
* CC207 backlog P2-2 (CC 2.1.206:397761-398004 = 2.1.207:342454-342633, node-sliced verbatim):
|
|
98
|
+
* · `totalMatches` — "Total number of matching files before truncation. A lower bound when
|
|
99
|
+
* countIsComplete is false." (CC: `totalMatches: g.length`)
|
|
100
|
+
* · `countIsComplete` — "Whether totalMatches is the exact total (true) or a floor because the
|
|
101
|
+
* underlying search truncated its own output (false)." (CC: `countIsComplete: !m`, m = the rg
|
|
102
|
+
* enumeration cut its own output; sema equivalent = the bounded walk hit its file/depth ceiling)
|
|
103
|
+
* · `numFiles` — "Number of file paths returned (after any truncation)" (CC: `numFiles: u.length`
|
|
104
|
+
* post-slice; was matchedAll.length here — pre-truncation total — fixed to the CC contract)
|
|
105
|
+
* · `truncated` — CC: `y = m || g.length > n + r` (underlying-incomplete OR over the result cap). */
|
|
106
|
+
export declare function runGlobDetailed(env: ExecutionEnv, root: string, pattern: string, opts?: {
|
|
107
|
+
path?: string;
|
|
108
|
+
max?: number;
|
|
109
|
+
}, signal?: AbortSignal): Promise<{
|
|
110
|
+
text: string;
|
|
111
|
+
filenames: string[];
|
|
112
|
+
numFiles: number;
|
|
113
|
+
truncated: boolean;
|
|
114
|
+
durationMs: number;
|
|
115
|
+
totalMatches: number;
|
|
116
|
+
countIsComplete: boolean;
|
|
117
|
+
}>;
|
|
118
|
+
//# sourceMappingURL=search.d.ts.map
|