@winspan/claude-forge 8.54.4 → 9.2.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/DEVELOPMENT.md +649 -33
- package/README.md +154 -16
- package/dist/catalogs/agents.json +72 -0
- package/dist/catalogs/skills.json +194 -0
- package/dist/claudemd/claudemd-generator.d.ts +45 -45
- package/dist/claudemd/claudemd-generator.d.ts.map +1 -1
- package/dist/claudemd/claudemd-generator.js +128 -449
- package/dist/claudemd/claudemd-generator.js.map +1 -1
- package/dist/claudemd/index.d.ts +14 -4
- package/dist/claudemd/index.d.ts.map +1 -1
- package/dist/claudemd/index.js +15 -4
- package/dist/claudemd/index.js.map +1 -1
- package/dist/claudemd/resume-manager.d.ts.map +1 -1
- package/dist/claudemd/resume-manager.js +37 -9
- package/dist/claudemd/resume-manager.js.map +1 -1
- package/dist/claudemd/templates/swarm-protocol.md +35 -186
- package/dist/claudemd/violations-manager.d.ts +40 -0
- package/dist/claudemd/violations-manager.d.ts.map +1 -0
- package/dist/claudemd/violations-manager.js +106 -0
- package/dist/claudemd/violations-manager.js.map +1 -0
- package/dist/cli/commands/admin.d.ts +15 -0
- package/dist/cli/commands/admin.d.ts.map +1 -0
- package/dist/cli/commands/admin.js +177 -0
- package/dist/cli/commands/admin.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +18 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/agents.js +160 -0
- package/dist/cli/commands/agents.js.map +1 -0
- package/dist/cli/commands/bypass.d.ts +18 -0
- package/dist/cli/commands/bypass.d.ts.map +1 -0
- package/dist/cli/commands/bypass.js +87 -0
- package/dist/cli/commands/bypass.js.map +1 -0
- package/dist/cli/commands/claudemd.d.ts +60 -0
- package/dist/cli/commands/claudemd.d.ts.map +1 -1
- package/dist/cli/commands/claudemd.js +174 -37
- package/dist/cli/commands/claudemd.js.map +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +94 -1
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/daemon.d.ts +39 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/daemon.js +167 -20
- package/dist/cli/commands/daemon.js.map +1 -1
- package/dist/cli/commands/decisions.d.ts +129 -0
- package/dist/cli/commands/decisions.d.ts.map +1 -0
- package/dist/cli/commands/decisions.js +669 -0
- package/dist/cli/commands/decisions.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +29 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +124 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/entropy.d.ts +35 -0
- package/dist/cli/commands/entropy.d.ts.map +1 -0
- package/dist/cli/commands/entropy.js +121 -0
- package/dist/cli/commands/entropy.js.map +1 -0
- package/dist/cli/commands/executions.d.ts +1 -0
- package/dist/cli/commands/executions.d.ts.map +1 -1
- package/dist/cli/commands/executions.js +10 -1
- package/dist/cli/commands/executions.js.map +1 -1
- package/dist/cli/commands/fix.d.ts +31 -0
- package/dist/cli/commands/fix.d.ts.map +1 -0
- package/dist/cli/commands/fix.js +108 -0
- package/dist/cli/commands/fix.js.map +1 -0
- package/dist/cli/commands/governance.d.ts +21 -0
- package/dist/cli/commands/governance.d.ts.map +1 -0
- package/dist/cli/commands/governance.js +60 -0
- package/dist/cli/commands/governance.js.map +1 -0
- package/dist/cli/commands/init.d.ts +27 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +158 -146
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/insights-goal-check.d.ts +50 -0
- package/dist/cli/commands/insights-goal-check.d.ts.map +1 -0
- package/dist/cli/commands/insights-goal-check.js +318 -0
- package/dist/cli/commands/insights-goal-check.js.map +1 -0
- package/dist/cli/commands/insights.d.ts +15 -0
- package/dist/cli/commands/insights.d.ts.map +1 -0
- package/dist/cli/commands/insights.js +127 -0
- package/dist/cli/commands/insights.js.map +1 -0
- package/dist/cli/commands/knowledge.d.ts +66 -0
- package/dist/cli/commands/knowledge.d.ts.map +1 -0
- package/dist/cli/commands/knowledge.js +897 -0
- package/dist/cli/commands/knowledge.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +0 -12
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +11 -5
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/menu.d.ts.map +1 -1
- package/dist/cli/commands/menu.js +10 -184
- package/dist/cli/commands/menu.js.map +1 -1
- package/dist/cli/commands/project.d.ts +98 -0
- package/dist/cli/commands/project.d.ts.map +1 -0
- package/dist/cli/commands/project.js +382 -0
- package/dist/cli/commands/project.js.map +1 -0
- package/dist/cli/commands/skills.d.ts.map +1 -1
- package/dist/cli/commands/skills.js +14 -128
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/spec.d.ts +40 -0
- package/dist/cli/commands/spec.d.ts.map +1 -0
- package/dist/cli/commands/spec.js +49 -0
- package/dist/cli/commands/spec.js.map +1 -0
- package/dist/cli/commands/stats.d.ts.map +1 -1
- package/dist/cli/commands/stats.js +3 -2
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +17 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/trace.d.ts.map +1 -1
- package/dist/cli/commands/trace.js +4 -9
- package/dist/cli/commands/trace.js.map +1 -1
- package/dist/cli/commands/violations.d.ts +14 -0
- package/dist/cli/commands/violations.d.ts.map +1 -0
- package/dist/cli/commands/violations.js +43 -0
- package/dist/cli/commands/violations.js.map +1 -0
- package/dist/cli/index.js +26 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/hook-manager.d.ts +1 -1
- package/dist/cli/init/hook-manager.d.ts.map +1 -1
- package/dist/cli/init/hook-manager.js +6 -0
- package/dist/cli/init/hook-manager.js.map +1 -1
- package/dist/cli/utils/resolve-session.d.ts +32 -0
- package/dist/cli/utils/resolve-session.d.ts.map +1 -0
- package/dist/cli/utils/resolve-session.js +39 -0
- package/dist/cli/utils/resolve-session.js.map +1 -0
- package/dist/core/config.d.ts +4 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +11 -23
- package/dist/core/config.js.map +1 -1
- package/dist/core/constants.d.ts +14 -13
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +20 -13
- package/dist/core/constants.js.map +1 -1
- package/dist/core/diagnostics/checks.d.ts +151 -0
- package/dist/core/diagnostics/checks.d.ts.map +1 -0
- package/dist/core/diagnostics/checks.js +765 -0
- package/dist/core/diagnostics/checks.js.map +1 -0
- package/dist/core/diagnostics/daemon-status.d.ts +77 -0
- package/dist/core/diagnostics/daemon-status.d.ts.map +1 -0
- package/dist/core/diagnostics/daemon-status.js +113 -0
- package/dist/core/diagnostics/daemon-status.js.map +1 -0
- package/dist/core/diagnostics/entropy-checks.d.ts +82 -0
- package/dist/core/diagnostics/entropy-checks.d.ts.map +1 -0
- package/dist/core/diagnostics/entropy-checks.js +395 -0
- package/dist/core/diagnostics/entropy-checks.js.map +1 -0
- package/dist/core/diagnostics/fix-runner.d.ts +54 -0
- package/dist/core/diagnostics/fix-runner.d.ts.map +1 -0
- package/dist/core/diagnostics/fix-runner.js +90 -0
- package/dist/core/diagnostics/fix-runner.js.map +1 -0
- package/dist/core/diagnostics/knip-runner.d.ts +49 -0
- package/dist/core/diagnostics/knip-runner.d.ts.map +1 -0
- package/dist/core/diagnostics/knip-runner.js +100 -0
- package/dist/core/diagnostics/knip-runner.js.map +1 -0
- package/dist/core/diagnostics/markers.d.ts +96 -0
- package/dist/core/diagnostics/markers.d.ts.map +1 -0
- package/dist/core/diagnostics/markers.js +153 -0
- package/dist/core/diagnostics/markers.js.map +1 -0
- package/dist/core/governance/global-inject.d.ts +60 -0
- package/dist/core/governance/global-inject.d.ts.map +1 -0
- package/dist/core/governance/global-inject.js +129 -0
- package/dist/core/governance/global-inject.js.map +1 -0
- package/dist/core/queue/index.d.ts +16 -3
- package/dist/core/queue/index.d.ts.map +1 -1
- package/dist/core/queue/index.js +14 -3
- package/dist/core/queue/index.js.map +1 -1
- package/dist/core/storage/base.d.ts +158 -0
- package/dist/core/storage/base.d.ts.map +1 -1
- package/dist/core/storage/base.js +570 -0
- package/dist/core/storage/base.js.map +1 -1
- package/dist/core/storage/codec/tool-input-codec.d.ts +93 -0
- package/dist/core/storage/codec/tool-input-codec.d.ts.map +1 -0
- package/dist/core/storage/codec/tool-input-codec.js +159 -0
- package/dist/core/storage/codec/tool-input-codec.js.map +1 -0
- package/dist/core/storage/decisions.d.ts +362 -0
- package/dist/core/storage/decisions.d.ts.map +1 -0
- package/dist/core/storage/decisions.js +502 -0
- package/dist/core/storage/decisions.js.map +1 -0
- package/dist/core/storage/events.d.ts +112 -8
- package/dist/core/storage/events.d.ts.map +1 -1
- package/dist/core/storage/events.js +390 -39
- package/dist/core/storage/events.js.map +1 -1
- package/dist/core/storage/feedback.d.ts +131 -0
- package/dist/core/storage/feedback.d.ts.map +1 -0
- package/dist/core/storage/feedback.js +187 -0
- package/dist/core/storage/feedback.js.map +1 -0
- package/dist/core/storage/forge-config.d.ts +40 -0
- package/dist/core/storage/forge-config.d.ts.map +1 -0
- package/dist/core/storage/forge-config.js +65 -0
- package/dist/core/storage/forge-config.js.map +1 -0
- package/dist/core/storage/injections.d.ts +28 -0
- package/dist/core/storage/injections.d.ts.map +1 -1
- package/dist/core/storage/injections.js +62 -5
- package/dist/core/storage/injections.js.map +1 -1
- package/dist/core/storage/knowledge.d.ts +106 -0
- package/dist/core/storage/knowledge.d.ts.map +1 -0
- package/dist/core/storage/knowledge.js +202 -0
- package/dist/core/storage/knowledge.js.map +1 -0
- package/dist/core/storage/maintenance.d.ts +36 -9
- package/dist/core/storage/maintenance.d.ts.map +1 -1
- package/dist/core/storage/maintenance.js +56 -24
- package/dist/core/storage/maintenance.js.map +1 -1
- package/dist/core/storage/pipeline-rollup.d.ts +117 -0
- package/dist/core/storage/pipeline-rollup.d.ts.map +1 -0
- package/dist/core/storage/pipeline-rollup.js +471 -0
- package/dist/core/storage/pipeline-rollup.js.map +1 -0
- package/dist/core/storage/routing.d.ts +16 -3
- package/dist/core/storage/routing.d.ts.map +1 -1
- package/dist/core/storage/routing.js +39 -8
- package/dist/core/storage/routing.js.map +1 -1
- package/dist/core/storage/rows.d.ts +50 -7
- package/dist/core/storage/rows.d.ts.map +1 -1
- package/dist/core/storage/schema.sql +302 -23
- package/dist/core/storage/sessions.d.ts +136 -0
- package/dist/core/storage/sessions.d.ts.map +1 -1
- package/dist/core/storage/sessions.js +351 -15
- package/dist/core/storage/sessions.js.map +1 -1
- package/dist/core/storage/skills.d.ts +1 -0
- package/dist/core/storage/skills.d.ts.map +1 -1
- package/dist/core/storage/skills.js +21 -6
- package/dist/core/storage/skills.js.map +1 -1
- package/dist/core/storage/sqlite.d.ts +253 -20
- package/dist/core/storage/sqlite.d.ts.map +1 -1
- package/dist/core/storage/sqlite.js +425 -16
- package/dist/core/storage/sqlite.js.map +1 -1
- package/dist/core/storage/tasks.d.ts +474 -2
- package/dist/core/storage/tasks.d.ts.map +1 -1
- package/dist/core/storage/tasks.js +1213 -18
- package/dist/core/storage/tasks.js.map +1 -1
- package/dist/core/storage/tool-intercepts.d.ts +69 -0
- package/dist/core/storage/tool-intercepts.d.ts.map +1 -0
- package/dist/core/storage/tool-intercepts.js +116 -0
- package/dist/core/storage/tool-intercepts.js.map +1 -0
- package/dist/core/storage/workflow-recommendations.d.ts +124 -0
- package/dist/core/storage/workflow-recommendations.d.ts.map +1 -0
- package/dist/core/storage/workflow-recommendations.js +274 -0
- package/dist/core/storage/workflow-recommendations.js.map +1 -0
- package/dist/core/types.d.ts +112 -17
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +12 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils/backup.d.ts +81 -0
- package/dist/core/utils/backup.d.ts.map +1 -0
- package/dist/core/utils/backup.js +98 -0
- package/dist/core/utils/backup.js.map +1 -0
- package/dist/core/utils/binary-paths.d.ts +92 -0
- package/dist/core/utils/binary-paths.d.ts.map +1 -0
- package/dist/core/utils/binary-paths.js +166 -0
- package/dist/core/utils/binary-paths.js.map +1 -0
- package/dist/core/utils/bypass-token.d.ts +75 -0
- package/dist/core/utils/bypass-token.d.ts.map +1 -0
- package/dist/core/utils/bypass-token.js +133 -0
- package/dist/core/utils/bypass-token.js.map +1 -0
- package/dist/core/utils/cc-builtin-agents.d.ts +3 -0
- package/dist/core/utils/cc-builtin-agents.d.ts.map +1 -0
- package/dist/core/utils/cc-builtin-agents.js +29 -0
- package/dist/core/utils/cc-builtin-agents.js.map +1 -0
- package/dist/core/utils/claude-cli-spawn.d.ts +106 -0
- package/dist/core/utils/claude-cli-spawn.d.ts.map +1 -0
- package/dist/core/utils/claude-cli-spawn.js +219 -0
- package/dist/core/utils/claude-cli-spawn.js.map +1 -0
- package/dist/core/utils/forge-resume-block.d.ts.map +1 -1
- package/dist/core/utils/forge-resume-block.js +3 -2
- package/dist/core/utils/forge-resume-block.js.map +1 -1
- package/dist/core/utils/logger.d.ts +15 -3
- package/dist/core/utils/logger.d.ts.map +1 -1
- package/dist/core/utils/logger.js +20 -2
- package/dist/core/utils/logger.js.map +1 -1
- package/dist/core/utils/noise-prompt.d.ts +97 -0
- package/dist/core/utils/noise-prompt.d.ts.map +1 -0
- package/dist/core/utils/noise-prompt.js +127 -0
- package/dist/core/utils/noise-prompt.js.map +1 -0
- package/dist/core/utils/path.d.ts +0 -4
- package/dist/core/utils/path.d.ts.map +1 -1
- package/dist/core/utils/path.js +0 -7
- package/dist/core/utils/path.js.map +1 -1
- package/dist/core/utils/time.d.ts +41 -0
- package/dist/core/utils/time.d.ts.map +1 -1
- package/dist/core/utils/time.js +114 -0
- package/dist/core/utils/time.js.map +1 -1
- package/dist/daemon/agent-sync.d.ts +24 -0
- package/dist/daemon/agent-sync.d.ts.map +1 -0
- package/dist/daemon/agent-sync.js +114 -0
- package/dist/daemon/agent-sync.js.map +1 -0
- package/dist/daemon/config-store.d.ts +55 -0
- package/dist/daemon/config-store.d.ts.map +1 -0
- package/dist/daemon/config-store.js +137 -0
- package/dist/daemon/config-store.js.map +1 -0
- package/dist/daemon/event-parser.d.ts +22 -0
- package/dist/daemon/event-parser.d.ts.map +1 -1
- package/dist/daemon/event-parser.js +49 -3
- package/dist/daemon/event-parser.js.map +1 -1
- package/dist/daemon/handlers/history-exporter.d.ts.map +1 -1
- package/dist/daemon/handlers/history-exporter.js +9 -8
- package/dist/daemon/handlers/history-exporter.js.map +1 -1
- package/dist/daemon/handlers/post-tool-use.d.ts +58 -4
- package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
- package/dist/daemon/handlers/post-tool-use.js +261 -8
- package/dist/daemon/handlers/post-tool-use.js.map +1 -1
- package/dist/daemon/handlers/pre-tool-use.d.ts +156 -0
- package/dist/daemon/handlers/pre-tool-use.d.ts.map +1 -0
- package/dist/daemon/handlers/pre-tool-use.js +585 -0
- package/dist/daemon/handlers/pre-tool-use.js.map +1 -0
- package/dist/daemon/handlers/stop.d.ts +35 -7
- package/dist/daemon/handlers/stop.d.ts.map +1 -1
- package/dist/daemon/handlers/stop.js +157 -8
- package/dist/daemon/handlers/stop.js.map +1 -1
- package/dist/daemon/handlers/user-prompt.d.ts +36 -14
- package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.js +135 -48
- package/dist/daemon/handlers/user-prompt.js.map +1 -1
- package/dist/daemon/hook-sync.d.ts.map +1 -1
- package/dist/daemon/hook-sync.js +2 -1
- package/dist/daemon/hook-sync.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +471 -43
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/lifecycle.d.ts +48 -1
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +98 -2
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/router.d.ts +4 -1
- package/dist/daemon/router.d.ts.map +1 -1
- package/dist/daemon/router.js +4 -2
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/rules/defaults.d.ts +20 -0
- package/dist/daemon/rules/defaults.d.ts.map +1 -0
- package/dist/daemon/rules/defaults.js +692 -0
- package/dist/daemon/rules/defaults.js.map +1 -0
- package/dist/daemon/rules/registry.d.ts +47 -0
- package/dist/daemon/rules/registry.d.ts.map +1 -0
- package/dist/daemon/rules/registry.js +84 -0
- package/dist/daemon/rules/registry.js.map +1 -0
- package/dist/daemon/rules/types.d.ts +170 -0
- package/dist/daemon/rules/types.d.ts.map +1 -0
- package/dist/daemon/rules/types.js +15 -0
- package/dist/daemon/rules/types.js.map +1 -0
- package/dist/daemon/rules/whitelist.d.ts +101 -0
- package/dist/daemon/rules/whitelist.d.ts.map +1 -0
- package/dist/daemon/rules/whitelist.js +210 -0
- package/dist/daemon/rules/whitelist.js.map +1 -0
- package/dist/daemon/rules/workflow-defaults.d.ts +52 -0
- package/dist/daemon/rules/workflow-defaults.d.ts.map +1 -0
- package/dist/daemon/rules/workflow-defaults.js +521 -0
- package/dist/daemon/rules/workflow-defaults.js.map +1 -0
- package/dist/daemon/server.d.ts +11 -1
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +7 -1
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/services/context-injector.d.ts +34 -0
- package/dist/daemon/services/context-injector.d.ts.map +1 -0
- package/dist/daemon/services/context-injector.js +61 -0
- package/dist/daemon/services/context-injector.js.map +1 -0
- package/dist/daemon/services/decision-hint.d.ts +203 -0
- package/dist/daemon/services/decision-hint.d.ts.map +1 -0
- package/dist/daemon/services/decision-hint.js +487 -0
- package/dist/daemon/services/decision-hint.js.map +1 -0
- package/dist/daemon/services/event-ttl-sweep.d.ts +86 -0
- package/dist/daemon/services/event-ttl-sweep.d.ts.map +1 -0
- package/dist/daemon/services/event-ttl-sweep.js +123 -0
- package/dist/daemon/services/event-ttl-sweep.js.map +1 -0
- package/dist/daemon/services/experience-extractor.d.ts +67 -0
- package/dist/daemon/services/experience-extractor.d.ts.map +1 -0
- package/dist/daemon/services/experience-extractor.js +323 -0
- package/dist/daemon/services/experience-extractor.js.map +1 -0
- package/dist/daemon/services/feedback-aggregator.d.ts +179 -0
- package/dist/daemon/services/feedback-aggregator.d.ts.map +1 -0
- package/dist/daemon/services/feedback-aggregator.js +455 -0
- package/dist/daemon/services/feedback-aggregator.js.map +1 -0
- package/dist/daemon/services/heartbeat-writer.d.ts +55 -0
- package/dist/daemon/services/heartbeat-writer.d.ts.map +1 -0
- package/dist/daemon/services/heartbeat-writer.js +111 -0
- package/dist/daemon/services/heartbeat-writer.js.map +1 -0
- package/dist/daemon/services/idle-session-sweeper.d.ts +61 -0
- package/dist/daemon/services/idle-session-sweeper.d.ts.map +1 -0
- package/dist/daemon/services/idle-session-sweeper.js +94 -0
- package/dist/daemon/services/idle-session-sweeper.js.map +1 -0
- package/dist/daemon/services/idle-task-budget.d.ts +50 -0
- package/dist/daemon/services/idle-task-budget.d.ts.map +1 -0
- package/dist/daemon/services/idle-task-budget.js +72 -0
- package/dist/daemon/services/idle-task-budget.js.map +1 -0
- package/dist/daemon/services/intercept-revive.d.ts +60 -0
- package/dist/daemon/services/intercept-revive.d.ts.map +1 -0
- package/dist/daemon/services/intercept-revive.js +86 -0
- package/dist/daemon/services/intercept-revive.js.map +1 -0
- package/dist/daemon/services/intercept-rollback-guard.d.ts +105 -0
- package/dist/daemon/services/intercept-rollback-guard.d.ts.map +1 -0
- package/dist/daemon/services/intercept-rollback-guard.js +152 -0
- package/dist/daemon/services/intercept-rollback-guard.js.map +1 -0
- package/dist/daemon/services/intercept-timeout-sweeper.d.ts +58 -0
- package/dist/daemon/services/intercept-timeout-sweeper.d.ts.map +1 -0
- package/dist/daemon/services/intercept-timeout-sweeper.js +83 -0
- package/dist/daemon/services/intercept-timeout-sweeper.js.map +1 -0
- package/dist/daemon/services/kb-injector.d.ts +57 -0
- package/dist/daemon/services/kb-injector.d.ts.map +1 -0
- package/dist/daemon/services/kb-injector.js +140 -0
- package/dist/daemon/services/kb-injector.js.map +1 -0
- package/dist/daemon/services/outcome-classification-service.d.ts +49 -0
- package/dist/daemon/services/outcome-classification-service.d.ts.map +1 -0
- package/dist/daemon/services/outcome-classification-service.js +214 -0
- package/dist/daemon/services/outcome-classification-service.js.map +1 -0
- package/dist/daemon/services/outcome-classifier.d.ts +136 -0
- package/dist/daemon/services/outcome-classifier.d.ts.map +1 -0
- package/dist/daemon/services/outcome-classifier.js +178 -0
- package/dist/daemon/services/outcome-classifier.js.map +1 -0
- package/dist/daemon/services/outcome-nudge.d.ts +107 -0
- package/dist/daemon/services/outcome-nudge.d.ts.map +1 -0
- package/dist/daemon/services/outcome-nudge.js +242 -0
- package/dist/daemon/services/outcome-nudge.js.map +1 -0
- package/dist/daemon/services/spec-approval.d.ts +127 -0
- package/dist/daemon/services/spec-approval.d.ts.map +1 -0
- package/dist/daemon/services/spec-approval.js +216 -0
- package/dist/daemon/services/spec-approval.js.map +1 -0
- package/dist/daemon/services/spec-gate.d.ts +54 -0
- package/dist/daemon/services/spec-gate.d.ts.map +1 -0
- package/dist/daemon/services/spec-gate.js +113 -0
- package/dist/daemon/services/spec-gate.js.map +1 -0
- package/dist/daemon/services/task-boundary-classifier.d.ts +78 -0
- package/dist/daemon/services/task-boundary-classifier.d.ts.map +1 -0
- package/dist/daemon/services/task-boundary-classifier.js +202 -0
- package/dist/daemon/services/task-boundary-classifier.js.map +1 -0
- package/dist/daemon/services/task-segmenter.d.ts +219 -1
- package/dist/daemon/services/task-segmenter.d.ts.map +1 -1
- package/dist/daemon/services/task-segmenter.js +481 -17
- package/dist/daemon/services/task-segmenter.js.map +1 -1
- package/dist/daemon/services/violation-reporter.d.ts +130 -0
- package/dist/daemon/services/violation-reporter.d.ts.map +1 -0
- package/dist/daemon/services/violation-reporter.js +339 -0
- package/dist/daemon/services/violation-reporter.js.map +1 -0
- package/dist/daemon/skill-sync.d.ts +7 -2
- package/dist/daemon/skill-sync.d.ts.map +1 -1
- package/dist/daemon/skill-sync.js +114 -9
- package/dist/daemon/skill-sync.js.map +1 -1
- package/dist/daemon/templates/agents/claudemd-writer.md +101 -0
- package/dist/daemon/templates/agents/coder.md +105 -0
- package/dist/daemon/templates/agents/decision-maker.md +460 -0
- package/dist/daemon/templates/agents/doc-reviewer.md +115 -0
- package/dist/daemon/templates/agents/harness-debug-full.md +114 -0
- package/dist/daemon/templates/agents/harness-hotfix.md +99 -0
- package/dist/daemon/templates/agents/hybrid-feature-with-safety.md +104 -0
- package/dist/daemon/templates/agents/knowledge-builder.md +119 -0
- package/dist/daemon/templates/agents/patch-applier.md +144 -0
- package/dist/daemon/templates/agents/planner.md +165 -0
- package/dist/daemon/templates/agents/refactor-specialist.md +98 -0
- package/dist/daemon/templates/agents/skill-distiller.md +113 -0
- package/dist/daemon/templates/agents/task-boundary-classifier.md +64 -0
- package/dist/daemon/templates/agents/verify-agent.md +136 -0
- package/dist/daemon/utils/inject-block.d.ts +39 -0
- package/dist/daemon/utils/inject-block.d.ts.map +1 -0
- package/dist/daemon/utils/inject-block.js +25 -0
- package/dist/daemon/utils/inject-block.js.map +1 -0
- package/dist/hooks/hook-lib.sh +8 -0
- package/dist/hooks/notification.sh +19 -8
- package/dist/hooks/post-tool-use.sh +41 -23
- package/dist/hooks/pre-tool-use.sh +54 -23
- package/dist/hooks/session-start.sh +68 -0
- package/dist/hooks/stop.sh +24 -10
- package/dist/hooks/user-prompt-submit.sh +37 -21
- package/dist/knowledge/adapters/go-adapter.d.ts +65 -0
- package/dist/knowledge/adapters/go-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/go-adapter.js +294 -0
- package/dist/knowledge/adapters/go-adapter.js.map +1 -0
- package/dist/knowledge/adapters/index.d.ts +41 -0
- package/dist/knowledge/adapters/index.d.ts.map +1 -0
- package/dist/knowledge/adapters/index.js +71 -0
- package/dist/knowledge/adapters/index.js.map +1 -0
- package/dist/knowledge/adapters/java-adapter.d.ts +66 -0
- package/dist/knowledge/adapters/java-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/java-adapter.js +260 -0
- package/dist/knowledge/adapters/java-adapter.js.map +1 -0
- package/dist/knowledge/adapters/js-vue-adapter.d.ts +56 -0
- package/dist/knowledge/adapters/js-vue-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/js-vue-adapter.js +203 -0
- package/dist/knowledge/adapters/js-vue-adapter.js.map +1 -0
- package/dist/knowledge/adapters/kotlin-adapter.d.ts +55 -0
- package/dist/knowledge/adapters/kotlin-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/kotlin-adapter.js +209 -0
- package/dist/knowledge/adapters/kotlin-adapter.js.map +1 -0
- package/dist/knowledge/adapters/monorepo-adapter.d.ts +77 -0
- package/dist/knowledge/adapters/monorepo-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/monorepo-adapter.js +170 -0
- package/dist/knowledge/adapters/monorepo-adapter.js.map +1 -0
- package/dist/knowledge/adapters/python-adapter.d.ts +89 -0
- package/dist/knowledge/adapters/python-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/python-adapter.js +358 -0
- package/dist/knowledge/adapters/python-adapter.js.map +1 -0
- package/dist/knowledge/adapters/rust-adapter.d.ts +73 -0
- package/dist/knowledge/adapters/rust-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/rust-adapter.js +329 -0
- package/dist/knowledge/adapters/rust-adapter.js.map +1 -0
- package/dist/knowledge/adapters/types.d.ts +99 -0
- package/dist/knowledge/adapters/types.d.ts.map +1 -0
- package/dist/knowledge/adapters/types.js +17 -0
- package/dist/knowledge/adapters/types.js.map +1 -0
- package/dist/knowledge/adapters/typescript-adapter.d.ts +57 -0
- package/dist/knowledge/adapters/typescript-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/typescript-adapter.js +171 -0
- package/dist/knowledge/adapters/typescript-adapter.js.map +1 -0
- package/dist/knowledge/audit-applier.d.ts +70 -0
- package/dist/knowledge/audit-applier.d.ts.map +1 -0
- package/dist/knowledge/audit-applier.js +251 -0
- package/dist/knowledge/audit-applier.js.map +1 -0
- package/dist/knowledge/builder.d.ts +261 -0
- package/dist/knowledge/builder.d.ts.map +1 -0
- package/dist/knowledge/builder.js +937 -0
- package/dist/knowledge/builder.js.map +1 -0
- package/dist/knowledge/cli-provider.d.ts +151 -0
- package/dist/knowledge/cli-provider.d.ts.map +1 -0
- package/dist/knowledge/cli-provider.js +313 -0
- package/dist/knowledge/cli-provider.js.map +1 -0
- package/dist/knowledge/constants.d.ts +73 -0
- package/dist/knowledge/constants.d.ts.map +1 -0
- package/dist/knowledge/constants.js +93 -0
- package/dist/knowledge/constants.js.map +1 -0
- package/dist/knowledge/cross-module.d.ts +139 -0
- package/dist/knowledge/cross-module.d.ts.map +1 -0
- package/dist/knowledge/cross-module.js +370 -0
- package/dist/knowledge/cross-module.js.map +1 -0
- package/dist/knowledge/git-hooks.d.ts +67 -0
- package/dist/knowledge/git-hooks.d.ts.map +1 -0
- package/dist/knowledge/git-hooks.js +258 -0
- package/dist/knowledge/git-hooks.js.map +1 -0
- package/dist/knowledge/module-hash.d.ts +88 -0
- package/dist/knowledge/module-hash.d.ts.map +1 -0
- package/dist/knowledge/module-hash.js +162 -0
- package/dist/knowledge/module-hash.js.map +1 -0
- package/dist/knowledge/project-detector.d.ts +101 -0
- package/dist/knowledge/project-detector.d.ts.map +1 -0
- package/dist/knowledge/project-detector.js +223 -0
- package/dist/knowledge/project-detector.js.map +1 -0
- package/dist/knowledge/prompt.d.ts +228 -0
- package/dist/knowledge/prompt.d.ts.map +1 -0
- package/dist/knowledge/prompt.js +404 -0
- package/dist/knowledge/prompt.js.map +1 -0
- package/dist/knowledge/query.d.ts +105 -0
- package/dist/knowledge/query.d.ts.map +1 -0
- package/dist/knowledge/query.js +341 -0
- package/dist/knowledge/query.js.map +1 -0
- package/dist/knowledge/repo-map.d.ts +91 -0
- package/dist/knowledge/repo-map.d.ts.map +1 -0
- package/dist/knowledge/repo-map.js +408 -0
- package/dist/knowledge/repo-map.js.map +1 -0
- package/dist/knowledge/tools/index.d.ts +14 -0
- package/dist/knowledge/tools/index.d.ts.map +1 -0
- package/dist/knowledge/tools/index.js +11 -0
- package/dist/knowledge/tools/index.js.map +1 -0
- package/dist/knowledge/tools/knowledge-get-page.d.ts +46 -0
- package/dist/knowledge/tools/knowledge-get-page.d.ts.map +1 -0
- package/dist/knowledge/tools/knowledge-get-page.js +101 -0
- package/dist/knowledge/tools/knowledge-get-page.js.map +1 -0
- package/dist/knowledge/tools/knowledge-query.d.ts +77 -0
- package/dist/knowledge/tools/knowledge-query.d.ts.map +1 -0
- package/dist/knowledge/tools/knowledge-query.js +104 -0
- package/dist/knowledge/tools/knowledge-query.js.map +1 -0
- package/dist/knowledge/tools/repo-map-lookup.d.ts +45 -0
- package/dist/knowledge/tools/repo-map-lookup.d.ts.map +1 -0
- package/dist/knowledge/tools/repo-map-lookup.js +82 -0
- package/dist/knowledge/tools/repo-map-lookup.js.map +1 -0
- package/dist/knowledge/types.d.ts +269 -0
- package/dist/knowledge/types.d.ts.map +1 -0
- package/dist/knowledge/types.js +10 -0
- package/dist/knowledge/types.js.map +1 -0
- package/dist/knowledge/validator.d.ts +90 -0
- package/dist/knowledge/validator.d.ts.map +1 -0
- package/dist/knowledge/validator.js +288 -0
- package/dist/knowledge/validator.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +222 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/skills/builtin-skills.d.ts +35 -0
- package/dist/skills/builtin-skills.d.ts.map +1 -0
- package/dist/skills/builtin-skills.js +68 -0
- package/dist/skills/builtin-skills.js.map +1 -0
- package/dist/skills/distill/attribution.d.ts +59 -0
- package/dist/skills/distill/attribution.d.ts.map +1 -0
- package/dist/skills/distill/attribution.js +101 -0
- package/dist/skills/distill/attribution.js.map +1 -0
- package/dist/skills/distill/claude-cli-resolver.d.ts +26 -0
- package/dist/skills/distill/claude-cli-resolver.d.ts.map +1 -0
- package/dist/skills/distill/claude-cli-resolver.js +115 -0
- package/dist/skills/distill/claude-cli-resolver.js.map +1 -0
- package/dist/skills/distill/distiller.d.ts +161 -0
- package/dist/skills/distill/distiller.d.ts.map +1 -0
- package/dist/skills/distill/distiller.js +461 -0
- package/dist/skills/distill/distiller.js.map +1 -0
- package/dist/skills/distill/index.d.ts +223 -0
- package/dist/skills/distill/index.d.ts.map +1 -0
- package/dist/skills/distill/index.js +466 -0
- package/dist/skills/distill/index.js.map +1 -0
- package/dist/skills/distill/project-anchor-guard.d.ts +116 -0
- package/dist/skills/distill/project-anchor-guard.d.ts.map +1 -0
- package/dist/skills/distill/project-anchor-guard.js +334 -0
- package/dist/skills/distill/project-anchor-guard.js.map +1 -0
- package/dist/skills/distill/topic-deduper.d.ts +77 -0
- package/dist/skills/distill/topic-deduper.d.ts.map +1 -0
- package/dist/skills/distill/topic-deduper.js +119 -0
- package/dist/skills/distill/topic-deduper.js.map +1 -0
- package/dist/skills/distill/upstream-fetcher.d.ts +71 -0
- package/dist/skills/distill/upstream-fetcher.d.ts.map +1 -0
- package/dist/skills/distill/upstream-fetcher.js +202 -0
- package/dist/skills/distill/upstream-fetcher.js.map +1 -0
- package/dist/skills/distilled/distilled-api-design.md +491 -0
- package/dist/skills/distilled/distilled-architecture-decision.md +173 -0
- package/dist/skills/distilled/distilled-creator.md +178 -0
- package/dist/skills/distilled/distilled-db-schema-design.md +245 -0
- package/dist/skills/distilled/distilled-defi-amm-security.md +293 -0
- package/dist/skills/distilled/distilled-executing-plans.md +113 -0
- package/dist/skills/distilled/distilled-harness-engineering.md +242 -0
- package/dist/skills/distilled/distilled-karpathy-guidelines.md +104 -0
- package/dist/skills/distilled/distilled-performance-optimization.md +175 -0
- package/dist/skills/distilled/distilled-spec-driven-design.md +193 -0
- package/dist/skills/distilled/distilled-systematic-debugging.md +306 -0
- package/dist/skills/distilled/distilled-verification-before-completion.md +203 -0
- package/dist/skills/keyword-score.d.ts +29 -0
- package/dist/skills/keyword-score.d.ts.map +1 -0
- package/dist/skills/keyword-score.js +54 -0
- package/dist/skills/keyword-score.js.map +1 -0
- package/dist/skills/registry.d.ts +64 -20
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +102 -105
- package/dist/skills/registry.js.map +1 -1
- package/dist/skills/tools/pipeline-suggest.js +14 -14
- package/dist/skills/tools/skill-invoke.d.ts +1 -1
- package/dist/skills/tools/skill-invoke.js +1 -1
- package/dist/web/routes/agent-content.d.ts +30 -0
- package/dist/web/routes/agent-content.d.ts.map +1 -0
- package/dist/web/routes/agent-content.js +139 -0
- package/dist/web/routes/agent-content.js.map +1 -0
- package/dist/web/routes/decisions.d.ts +15 -0
- package/dist/web/routes/decisions.d.ts.map +1 -0
- package/dist/web/routes/decisions.js +181 -0
- package/dist/web/routes/decisions.js.map +1 -0
- package/dist/web/routes/diagnostics.d.ts +61 -0
- package/dist/web/routes/diagnostics.d.ts.map +1 -0
- package/dist/web/routes/diagnostics.js +203 -0
- package/dist/web/routes/diagnostics.js.map +1 -0
- package/dist/web/routes/events.d.ts.map +1 -1
- package/dist/web/routes/events.js +24 -0
- package/dist/web/routes/events.js.map +1 -1
- package/dist/web/routes/health.d.ts +33 -0
- package/dist/web/routes/health.d.ts.map +1 -0
- package/dist/web/routes/health.js +37 -0
- package/dist/web/routes/health.js.map +1 -0
- package/dist/web/routes/insights.d.ts +0 -5
- package/dist/web/routes/insights.d.ts.map +1 -1
- package/dist/web/routes/insights.js +783 -2
- package/dist/web/routes/insights.js.map +1 -1
- package/dist/web/routes/knowledge.d.ts +16 -0
- package/dist/web/routes/knowledge.d.ts.map +1 -0
- package/dist/web/routes/knowledge.js +661 -0
- package/dist/web/routes/knowledge.js.map +1 -0
- package/dist/web/routes/patch.d.ts +60 -1
- package/dist/web/routes/patch.d.ts.map +1 -1
- package/dist/web/routes/patch.js +170 -64
- package/dist/web/routes/patch.js.map +1 -1
- package/dist/web/routes/pipeline.d.ts +37 -0
- package/dist/web/routes/pipeline.d.ts.map +1 -0
- package/dist/web/routes/pipeline.js +149 -0
- package/dist/web/routes/pipeline.js.map +1 -0
- package/dist/web/routes/rules.d.ts.map +1 -1
- package/dist/web/routes/rules.js +6 -1
- package/dist/web/routes/rules.js.map +1 -1
- package/dist/web/routes/sessions.d.ts.map +1 -1
- package/dist/web/routes/sessions.js +9 -1
- package/dist/web/routes/sessions.js.map +1 -1
- package/dist/web/routes/skill-content.d.ts +30 -0
- package/dist/web/routes/skill-content.d.ts.map +1 -0
- package/dist/web/routes/skill-content.js +117 -0
- package/dist/web/routes/skill-content.js.map +1 -0
- package/dist/web/routes/skills-distill.d.ts +29 -0
- package/dist/web/routes/skills-distill.d.ts.map +1 -0
- package/dist/web/routes/skills-distill.js +552 -0
- package/dist/web/routes/skills-distill.js.map +1 -0
- package/dist/web/routes/skills.js +7 -7
- package/dist/web/routes/skills.js.map +1 -1
- package/dist/web/routes/task-timeline.d.ts +102 -0
- package/dist/web/routes/task-timeline.d.ts.map +1 -0
- package/dist/web/routes/task-timeline.js +274 -0
- package/dist/web/routes/task-timeline.js.map +1 -0
- package/dist/web/routes/tasks.d.ts.map +1 -1
- package/dist/web/routes/tasks.js +355 -8
- package/dist/web/routes/tasks.js.map +1 -1
- package/dist/web/routes/trace.d.ts.map +1 -1
- package/dist/web/routes/trace.js +3 -2
- package/dist/web/routes/trace.js.map +1 -1
- package/dist/web/routes/types.d.ts +0 -4
- package/dist/web/routes/types.d.ts.map +1 -1
- package/dist/web/routes/types.js +1 -1
- package/dist/web/routes/types.js.map +1 -1
- package/dist/web/routes/violations.d.ts +14 -0
- package/dist/web/routes/violations.d.ts.map +1 -0
- package/dist/web/routes/violations.js +111 -0
- package/dist/web/routes/violations.js.map +1 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +79 -19
- package/dist/web/server.js.map +1 -1
- package/dist/web/services/build-manager.d.ts +72 -0
- package/dist/web/services/build-manager.d.ts.map +1 -0
- package/dist/web/services/build-manager.js +189 -0
- package/dist/web/services/build-manager.js.map +1 -0
- package/dist/web/services/distill-manager.d.ts +125 -0
- package/dist/web/services/distill-manager.d.ts.map +1 -0
- package/dist/web/services/distill-manager.js +308 -0
- package/dist/web/services/distill-manager.js.map +1 -0
- package/dist/web/static/assets/AgentContentPage-DkeRNxok.js +2 -0
- package/dist/web/static/assets/AgentContentPage-DkeRNxok.js.map +1 -0
- package/dist/web/static/assets/AgentDelegationTable-ByBa0x1l.js +2 -0
- package/dist/web/static/assets/AgentDelegationTable-ByBa0x1l.js.map +1 -0
- package/dist/web/static/assets/ContextInsightsPage-oUk7_I8u.js +3 -0
- package/dist/web/static/assets/ContextInsightsPage-oUk7_I8u.js.map +1 -0
- package/dist/web/static/assets/DaemonHealthPage-DG2fyOP7.js +2 -0
- package/dist/web/static/assets/DaemonHealthPage-DG2fyOP7.js.map +1 -0
- package/dist/web/static/assets/DecisionsPage-CMAPEnKb.js +2 -0
- package/dist/web/static/assets/DecisionsPage-CMAPEnKb.js.map +1 -0
- package/dist/web/static/assets/DiagnosticsPage-DQd-Zm4r.js +2 -0
- package/dist/web/static/assets/DiagnosticsPage-DQd-Zm4r.js.map +1 -0
- package/dist/web/static/assets/DriftTab-DqpepOhI.js +2 -0
- package/dist/web/static/assets/DriftTab-DqpepOhI.js.map +1 -0
- package/dist/web/static/assets/HealthHomePage-CN6zNIie.js +3 -0
- package/dist/web/static/assets/HealthHomePage-CN6zNIie.js.map +1 -0
- package/dist/web/static/assets/KbHitRateTable-ByEIWujF.js +2 -0
- package/dist/web/static/assets/KbHitRateTable-ByEIWujF.js.map +1 -0
- package/dist/web/static/assets/MarkdownRenderer-DZmTl-8J.js +3 -0
- package/dist/web/static/assets/MarkdownRenderer-DZmTl-8J.js.map +1 -0
- package/dist/web/static/assets/NotFound-BQPh0vaF.js +2 -0
- package/dist/web/static/assets/NotFound-BQPh0vaF.js.map +1 -0
- package/dist/web/static/assets/ProjectSwitcher-D3lZMFd3.js +2 -0
- package/dist/web/static/assets/ProjectSwitcher-D3lZMFd3.js.map +1 -0
- package/dist/web/static/assets/SettingsPage-oLJBNzQj.js +2 -0
- package/dist/web/static/assets/SettingsPage-oLJBNzQj.js.map +1 -0
- package/dist/web/static/assets/SkillContentPage-DK5rgfgw.js +2 -0
- package/dist/web/static/assets/SkillContentPage-DK5rgfgw.js.map +1 -0
- package/dist/web/static/assets/SkillStatsTable-DYMzjEUV.js +2 -0
- package/dist/web/static/assets/SkillStatsTable-DYMzjEUV.js.map +1 -0
- package/dist/web/static/assets/SkillsDistillTab-C7qaG8q3.js +2 -0
- package/dist/web/static/assets/SkillsDistillTab-C7qaG8q3.js.map +1 -0
- package/dist/web/static/assets/TasksHubPage-03wsRRsJ.js +6 -0
- package/dist/web/static/assets/TasksHubPage-03wsRRsJ.js.map +1 -0
- package/dist/web/static/assets/ViolationsPage-DSiLr-9O.js +3 -0
- package/dist/web/static/assets/ViolationsPage-DSiLr-9O.js.map +1 -0
- package/dist/web/static/assets/arco-Bhi3a6Qp.js +14 -0
- package/dist/web/static/assets/arco-Bhi3a6Qp.js.map +1 -0
- package/dist/web/static/assets/arco-DFQA6dO_.css +1 -0
- package/dist/web/static/assets/charts-BuHQWDbQ.js +37 -0
- package/dist/web/static/assets/charts-BuHQWDbQ.js.map +1 -0
- package/dist/web/static/assets/date-fns-sbWH3_uq.js +2 -0
- package/dist/web/static/assets/date-fns-sbWH3_uq.js.map +1 -0
- package/dist/web/static/assets/index-7bl3kbcx.css +1 -0
- package/dist/web/static/assets/index-BIYnq1Dx.js +4 -0
- package/dist/web/static/assets/index-BIYnq1Dx.js.map +1 -0
- package/dist/web/static/assets/lucide-CnlPQoG8.js +72 -0
- package/dist/web/static/assets/lucide-CnlPQoG8.js.map +1 -0
- package/dist/web/static/assets/outcome-DUn1NjlC.js +2 -0
- package/dist/web/static/assets/outcome-DUn1NjlC.js.map +1 -0
- package/dist/web/static/assets/query-S6X1S7K9.js +2 -0
- package/dist/web/static/assets/{query-C99w429o.js.map → query-S6X1S7K9.js.map} +1 -1
- package/dist/web/static/assets/{react-router-r79dBVy4.js → react-router-JVUrkhdd.js} +3 -3
- package/dist/web/static/assets/{react-router-r79dBVy4.js.map → react-router-JVUrkhdd.js.map} +1 -1
- package/dist/web/static/assets/react-vendor-tkvCrao7.js +57 -0
- package/dist/web/static/assets/react-vendor-tkvCrao7.js.map +1 -0
- package/dist/web/static/assets/syntax-highlighter-BkZfCDsz.js +6 -0
- package/dist/web/static/assets/syntax-highlighter-BkZfCDsz.js.map +1 -0
- package/dist/web/static/assets/useTabsParam-k8qte_0C.js +2 -0
- package/dist/web/static/assets/useTabsParam-k8qte_0C.js.map +1 -0
- package/dist/web/static/assets/vendor-DWgdB1eY.js +65 -0
- package/dist/web/static/assets/vendor-DWgdB1eY.js.map +1 -0
- package/dist/web/static/index.html +12 -8
- package/package.json +14 -3
- package/dist/core/ai/provider.d.ts +0 -63
- package/dist/core/ai/provider.d.ts.map +0 -1
- package/dist/core/ai/provider.js +0 -241
- package/dist/core/ai/provider.js.map +0 -1
- package/dist/core/ai/types.d.ts +0 -43
- package/dist/core/ai/types.d.ts.map +0 -1
- package/dist/core/ai/types.js +0 -5
- package/dist/core/ai/types.js.map +0 -1
- package/dist/core/storage/token-usage.d.ts +0 -36
- package/dist/core/storage/token-usage.d.ts.map +0 -1
- package/dist/core/storage/token-usage.js +0 -59
- package/dist/core/storage/token-usage.js.map +0 -1
- package/dist/core/utils/token-tracker.d.ts +0 -39
- package/dist/core/utils/token-tracker.d.ts.map +0 -1
- package/dist/core/utils/token-tracker.js +0 -69
- package/dist/core/utils/token-tracker.js.map +0 -1
- package/dist/skills/index.d.ts +0 -3
- package/dist/skills/index.d.ts.map +0 -1
- package/dist/skills/index.js +0 -3
- package/dist/skills/index.js.map +0 -1
- package/dist/skills/matcher.d.ts +0 -26
- package/dist/skills/matcher.d.ts.map +0 -1
- package/dist/skills/matcher.js +0 -113
- package/dist/skills/matcher.js.map +0 -1
- package/dist/skills/official/code-simplifier.md +0 -52
- package/dist/skills/official/find-skills.md +0 -142
- package/dist/skills/official/official-api-design.md +0 -30
- package/dist/skills/official/official-architecture-decision.md +0 -41
- package/dist/skills/official/official-bmad.md +0 -118
- package/dist/skills/official/official-db-schema-design.md +0 -34
- package/dist/skills/official/official-debug.md +0 -25
- package/dist/skills/official/official-doc-driven.md +0 -31
- package/dist/skills/official/official-harness-engineering.md +0 -108
- package/dist/skills/official/official-openspec.md +0 -89
- package/dist/skills/official/official-performance-optimization.md +0 -30
- package/dist/skills/official/official-pr-review.md +0 -35
- package/dist/skills/official/official-release-checklist.md +0 -30
- package/dist/skills/official/official-security-hardening.md +0 -32
- package/dist/skills/official/official-spec-driven-design.md +0 -31
- package/dist/skills/official/planning-with-files.md +0 -241
- package/dist/skills/official/ui-ux-pro-max.md +0 -105
- package/dist/skills/official/webapp-testing.md +0 -96
- package/dist/skills/official-skills.d.ts +0 -26
- package/dist/skills/official-skills.d.ts.map +0 -1
- package/dist/skills/official-skills.js +0 -74
- package/dist/skills/official-skills.js.map +0 -1
- package/dist/skills/semantic-matcher.d.ts +0 -60
- package/dist/skills/semantic-matcher.d.ts.map +0 -1
- package/dist/skills/semantic-matcher.js +0 -192
- package/dist/skills/semantic-matcher.js.map +0 -1
- package/dist/skills/upgrade-engine.d.ts +0 -93
- package/dist/skills/upgrade-engine.d.ts.map +0 -1
- package/dist/skills/upgrade-engine.js +0 -447
- package/dist/skills/upgrade-engine.js.map +0 -1
- package/dist/skills/upgrade-prompt.d.ts +0 -20
- package/dist/skills/upgrade-prompt.d.ts.map +0 -1
- package/dist/skills/upgrade-prompt.js +0 -75
- package/dist/skills/upgrade-prompt.js.map +0 -1
- package/dist/web/routes/ai.d.ts +0 -10
- package/dist/web/routes/ai.d.ts.map +0 -1
- package/dist/web/routes/ai.js +0 -186
- package/dist/web/routes/ai.js.map +0 -1
- package/dist/web/routes/token-usage.d.ts +0 -7
- package/dist/web/routes/token-usage.d.ts.map +0 -1
- package/dist/web/routes/token-usage.js +0 -18
- package/dist/web/routes/token-usage.js.map +0 -1
- package/dist/web/ssrf-guard.d.ts +0 -35
- package/dist/web/ssrf-guard.d.ts.map +0 -1
- package/dist/web/ssrf-guard.js +0 -93
- package/dist/web/ssrf-guard.js.map +0 -1
- package/dist/web/static/assets/AIConfig-CdDWzJyO.js +0 -2
- package/dist/web/static/assets/AIConfig-CdDWzJyO.js.map +0 -1
- package/dist/web/static/assets/Dashboard-CoEmmIDt.js +0 -2
- package/dist/web/static/assets/Dashboard-CoEmmIDt.js.map +0 -1
- package/dist/web/static/assets/Drawer-DdRTzlLB.js +0 -2
- package/dist/web/static/assets/Drawer-DdRTzlLB.js.map +0 -1
- package/dist/web/static/assets/Events-DrIq1SUS.js +0 -2
- package/dist/web/static/assets/Events-DrIq1SUS.js.map +0 -1
- package/dist/web/static/assets/Reports-DFBM3MDK.js +0 -2
- package/dist/web/static/assets/Reports-DFBM3MDK.js.map +0 -1
- package/dist/web/static/assets/SearchInput-qCj_jAcf.js +0 -2
- package/dist/web/static/assets/SearchInput-qCj_jAcf.js.map +0 -1
- package/dist/web/static/assets/SessionDetail-CCzwdoT7.js +0 -2
- package/dist/web/static/assets/SessionDetail-CCzwdoT7.js.map +0 -1
- package/dist/web/static/assets/Sessions-FfLYkAw9.js +0 -2
- package/dist/web/static/assets/Sessions-FfLYkAw9.js.map +0 -1
- package/dist/web/static/assets/Skills-C8Gvs3Qa.js +0 -2
- package/dist/web/static/assets/Skills-C8Gvs3Qa.js.map +0 -1
- package/dist/web/static/assets/TaskDetail-BS8pYhaR.js +0 -2
- package/dist/web/static/assets/TaskDetail-BS8pYhaR.js.map +0 -1
- package/dist/web/static/assets/Tasks-CyuhizG8.js +0 -2
- package/dist/web/static/assets/Tasks-CyuhizG8.js.map +0 -1
- package/dist/web/static/assets/charts-CLrM0_uM.js +0 -37
- package/dist/web/static/assets/charts-CLrM0_uM.js.map +0 -1
- package/dist/web/static/assets/date-fns-CZ_bHujz.js +0 -2
- package/dist/web/static/assets/date-fns-CZ_bHujz.js.map +0 -1
- package/dist/web/static/assets/export-L_VBD2p1.js +0 -4
- package/dist/web/static/assets/export-L_VBD2p1.js.map +0 -1
- package/dist/web/static/assets/index-CBX47X8l.js +0 -3
- package/dist/web/static/assets/index-CBX47X8l.js.map +0 -1
- package/dist/web/static/assets/index-DjIoMdoR.css +0 -1
- package/dist/web/static/assets/lucide-Bs_edTLa.js +0 -232
- package/dist/web/static/assets/lucide-Bs_edTLa.js.map +0 -1
- package/dist/web/static/assets/query-C99w429o.js +0 -2
- package/dist/web/static/assets/react-vendor-CSp-GLFF.js +0 -49
- package/dist/web/static/assets/react-vendor-CSp-GLFF.js.map +0 -1
- package/dist/web/static/assets/syntax-highlighter-44FakypI.js +0 -9
- package/dist/web/static/assets/syntax-highlighter-44FakypI.js.map +0 -1
- package/dist/web/static/assets/task-title-BhOcemuR.js +0 -2
- package/dist/web/static/assets/task-title-BhOcemuR.js.map +0 -1
- package/dist/web/static/assets/time-Bxuk0M-C.js +0 -2
- package/dist/web/static/assets/time-Bxuk0M-C.js.map +0 -1
- package/dist/web/static/assets/vendor-CMMjVdZs.js +0 -64
- package/dist/web/static/assets/vendor-CMMjVdZs.js.map +0 -1
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* claude-cli-spawn.ts — Public helper for spawning the `claude` CLI,
|
|
3
|
+
* parsing the stream-json output across CLI versions, and returning the
|
|
4
|
+
* raw assistant text.
|
|
5
|
+
*
|
|
6
|
+
* Origin: extracted from `src/skills/distill/distiller.ts`
|
|
7
|
+
* (spec 1851 R-B commit `03fbda1d`) so multiple call-sites (claudemd,
|
|
8
|
+
* knowledge build, patch web, …) can share the same plumbing instead of
|
|
9
|
+
* each re-implementing spawn + JSON merge + timeout + cancel.
|
|
10
|
+
*
|
|
11
|
+
* Spec: docs/design/2026-05-29/0902-ai-config-removal-master-spec.md §2.6
|
|
12
|
+
* Decision: f5a5b030 (Option B — claude CLI shell-out everywhere)
|
|
13
|
+
*
|
|
14
|
+
* OAuth / `--bare` history (2026-05-29):
|
|
15
|
+
* - The CLI's `--bare` flag skips Keychain reads and forces auth via
|
|
16
|
+
* `ANTHROPIC_API_KEY` only. Subscription users (no API key) hit an
|
|
17
|
+
* immediate "Not logged in" failure under `--bare`. The distiller hit
|
|
18
|
+
* this first (fixed in commit `6b02f87b`); this shared helper hit the
|
|
19
|
+
* same bug for `cf claudemd`, `cf knowledge build`, `cf patch` etc.
|
|
20
|
+
* - Fix mirrors the distiller: default `bareMode` is now `false`, and
|
|
21
|
+
* daemon-recursion (spawned child's hooks firing back into the daemon)
|
|
22
|
+
* is broken by setting `CLAUDE_FORGE_INTERNAL_SPAWN=1` on the child
|
|
23
|
+
* env. Every entry-point hook short-circuits when EITHER
|
|
24
|
+
* `CLAUDE_FORGE_INTERNAL_SPAWN` or `CLAUDE_FORGE_DISTILL_SPAWN`
|
|
25
|
+
* (legacy) is non-empty. See src/hooks/*.sh.
|
|
26
|
+
*
|
|
27
|
+
* Design notes:
|
|
28
|
+
* - We do NOT couple to envelope parsing. Each caller defines its own
|
|
29
|
+
* `---X---...---END---` envelope (SKILL / SKIP / CLAUDEMD / PATCH …) and
|
|
30
|
+
* parses the returned string itself.
|
|
31
|
+
* - The CLI's stream-json schema differs between Claude Code versions; the
|
|
32
|
+
* merge accepts the union of common shapes (assistant_message /
|
|
33
|
+
* content_block_delta / message_delta / text_delta / result).
|
|
34
|
+
* - `findClaudeBin` is reused from `src/skills/distill/claude-cli-resolver.ts`
|
|
35
|
+
* (do not duplicate — both call sites must hit the same 5-min PATH cache).
|
|
36
|
+
*/
|
|
37
|
+
export interface ClaudeCliProgressEvent {
|
|
38
|
+
/** Event type as reported by the CLI (e.g. `content_block_delta`). */
|
|
39
|
+
type: string;
|
|
40
|
+
/** Running total of assistant text characters accumulated so far. */
|
|
41
|
+
charCount?: number;
|
|
42
|
+
/** Raw JSON event for callers that want to inspect everything. */
|
|
43
|
+
raw?: unknown;
|
|
44
|
+
}
|
|
45
|
+
export interface ClaudeCliSpawnOpts {
|
|
46
|
+
/** Sub-agent name passed to `--agent <name>`. */
|
|
47
|
+
agent: string;
|
|
48
|
+
/** Text sent to the spawned `claude` process via stdin. */
|
|
49
|
+
prompt: string;
|
|
50
|
+
/**
|
|
51
|
+
* Pass `--bare` (skip hooks/LSP/auto-memory/MCP). Default: `false`.
|
|
52
|
+
*
|
|
53
|
+
* IMPORTANT: `--bare` also forces auth via `ANTHROPIC_API_KEY` only and
|
|
54
|
+
* skips Keychain reads, so subscription users (no API key) get
|
|
55
|
+
* "Not logged in" instantly. Daemon-recursion is instead broken via the
|
|
56
|
+
* `CLAUDE_FORGE_INTERNAL_SPAWN=1` env we always set on the child — every
|
|
57
|
+
* entry-point hook short-circuits when this env is non-empty. Only set
|
|
58
|
+
* `bareMode: true` when you explicitly want a hermetic headless run AND
|
|
59
|
+
* have `ANTHROPIC_API_KEY` exported (CI / batch tooling).
|
|
60
|
+
*/
|
|
61
|
+
bareMode?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Allowed tool list forwarded as `--allowedTools "Tool1 Tool2"`. Default
|
|
64
|
+
* empty (CLI uses agent's own `tools:` frontmatter).
|
|
65
|
+
*/
|
|
66
|
+
allowedTools?: string[];
|
|
67
|
+
/** Aborts the subprocess on `signal.abort()` (sends SIGTERM). */
|
|
68
|
+
cancelSignal?: AbortSignal;
|
|
69
|
+
/** Hard timeout in ms. Default: 600 000 (10 min, same as distiller). */
|
|
70
|
+
timeoutMs?: number;
|
|
71
|
+
/** Streaming progress hook invoked for every parsed stream-json line. */
|
|
72
|
+
onProgress?: (event: ClaudeCliProgressEvent) => void;
|
|
73
|
+
/** Optional override for the `claude` binary path (else PATH probe). */
|
|
74
|
+
claudeBin?: string;
|
|
75
|
+
}
|
|
76
|
+
export declare class ClaudeCliMissingError extends Error {
|
|
77
|
+
constructor();
|
|
78
|
+
}
|
|
79
|
+
export declare class ClaudeCliExitError extends Error {
|
|
80
|
+
readonly exitCode: number;
|
|
81
|
+
readonly stderrSnippet: string;
|
|
82
|
+
constructor(exitCode: number, stderr: string);
|
|
83
|
+
}
|
|
84
|
+
export declare class ClaudeCliTimeoutError extends Error {
|
|
85
|
+
readonly timeoutMs: number;
|
|
86
|
+
constructor(timeoutMs: number);
|
|
87
|
+
}
|
|
88
|
+
export declare class ClaudeCliCancelledError extends Error {
|
|
89
|
+
constructor();
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Spawn `claude -p --agent <name> [--bare] --output-format stream-json
|
|
93
|
+
* --verbose --include-partial-messages --input-format text
|
|
94
|
+
* [--allowedTools "..."]`
|
|
95
|
+
* with the given prompt on stdin, then collect the assistant's text from
|
|
96
|
+
* the stream-json output.
|
|
97
|
+
*
|
|
98
|
+
* `--bare` is opt-in (`bareMode: true`); the default keeps OAuth Keychain
|
|
99
|
+
* reads working for subscription users. Recursion is broken via the
|
|
100
|
+
* `CLAUDE_FORGE_INTERNAL_SPAWN=1` env we set on the child.
|
|
101
|
+
*
|
|
102
|
+
* Returns the raw assistant text (the caller is responsible for envelope
|
|
103
|
+
* parsing, e.g. `parseSkillBlock` / `parseClaudeMdBlock`).
|
|
104
|
+
*/
|
|
105
|
+
export declare function spawnClaudeCli(opts: ClaudeCliSpawnOpts): Promise<string>;
|
|
106
|
+
//# sourceMappingURL=claude-cli-spawn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-cli-spawn.d.ts","sourceRoot":"","sources":["../../../src/core/utils/claude-cli-spawn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAOH,MAAM,WAAW,sBAAsB;IACrC,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,iEAAiE;IACjE,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACrD,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;;CAO/C;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBACnB,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAQ7C;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBACf,SAAS,EAAE,MAAM;CAK9B;AAED,qBAAa,uBAAwB,SAAQ,KAAK;;CAKjD;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgI9E"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* claude-cli-spawn.ts — Public helper for spawning the `claude` CLI,
|
|
3
|
+
* parsing the stream-json output across CLI versions, and returning the
|
|
4
|
+
* raw assistant text.
|
|
5
|
+
*
|
|
6
|
+
* Origin: extracted from `src/skills/distill/distiller.ts`
|
|
7
|
+
* (spec 1851 R-B commit `03fbda1d`) so multiple call-sites (claudemd,
|
|
8
|
+
* knowledge build, patch web, …) can share the same plumbing instead of
|
|
9
|
+
* each re-implementing spawn + JSON merge + timeout + cancel.
|
|
10
|
+
*
|
|
11
|
+
* Spec: docs/design/2026-05-29/0902-ai-config-removal-master-spec.md §2.6
|
|
12
|
+
* Decision: f5a5b030 (Option B — claude CLI shell-out everywhere)
|
|
13
|
+
*
|
|
14
|
+
* OAuth / `--bare` history (2026-05-29):
|
|
15
|
+
* - The CLI's `--bare` flag skips Keychain reads and forces auth via
|
|
16
|
+
* `ANTHROPIC_API_KEY` only. Subscription users (no API key) hit an
|
|
17
|
+
* immediate "Not logged in" failure under `--bare`. The distiller hit
|
|
18
|
+
* this first (fixed in commit `6b02f87b`); this shared helper hit the
|
|
19
|
+
* same bug for `cf claudemd`, `cf knowledge build`, `cf patch` etc.
|
|
20
|
+
* - Fix mirrors the distiller: default `bareMode` is now `false`, and
|
|
21
|
+
* daemon-recursion (spawned child's hooks firing back into the daemon)
|
|
22
|
+
* is broken by setting `CLAUDE_FORGE_INTERNAL_SPAWN=1` on the child
|
|
23
|
+
* env. Every entry-point hook short-circuits when EITHER
|
|
24
|
+
* `CLAUDE_FORGE_INTERNAL_SPAWN` or `CLAUDE_FORGE_DISTILL_SPAWN`
|
|
25
|
+
* (legacy) is non-empty. See src/hooks/*.sh.
|
|
26
|
+
*
|
|
27
|
+
* Design notes:
|
|
28
|
+
* - We do NOT couple to envelope parsing. Each caller defines its own
|
|
29
|
+
* `---X---...---END---` envelope (SKILL / SKIP / CLAUDEMD / PATCH …) and
|
|
30
|
+
* parses the returned string itself.
|
|
31
|
+
* - The CLI's stream-json schema differs between Claude Code versions; the
|
|
32
|
+
* merge accepts the union of common shapes (assistant_message /
|
|
33
|
+
* content_block_delta / message_delta / text_delta / result).
|
|
34
|
+
* - `findClaudeBin` is reused from `src/skills/distill/claude-cli-resolver.ts`
|
|
35
|
+
* (do not duplicate — both call sites must hit the same 5-min PATH cache).
|
|
36
|
+
*/
|
|
37
|
+
import { spawn } from 'node:child_process';
|
|
38
|
+
import { findClaudeBin } from '../../skills/distill/claude-cli-resolver.js';
|
|
39
|
+
export class ClaudeCliMissingError extends Error {
|
|
40
|
+
constructor() {
|
|
41
|
+
super('[claude-cli-spawn] claude CLI not found on PATH. Install via `brew install claude` or `npm i -g @anthropic-ai/claude-code`.');
|
|
42
|
+
this.name = 'ClaudeCliMissingError';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export class ClaudeCliExitError extends Error {
|
|
46
|
+
exitCode;
|
|
47
|
+
stderrSnippet;
|
|
48
|
+
constructor(exitCode, stderr) {
|
|
49
|
+
super(`[claude-cli-spawn] claude CLI exited ${exitCode}: ${stderr.slice(0, 500)}`);
|
|
50
|
+
this.name = 'ClaudeCliExitError';
|
|
51
|
+
this.exitCode = exitCode;
|
|
52
|
+
this.stderrSnippet = stderr.slice(0, 500);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export class ClaudeCliTimeoutError extends Error {
|
|
56
|
+
timeoutMs;
|
|
57
|
+
constructor(timeoutMs) {
|
|
58
|
+
super(`[claude-cli-spawn] claude CLI timeout after ${timeoutMs}ms`);
|
|
59
|
+
this.name = 'ClaudeCliTimeoutError';
|
|
60
|
+
this.timeoutMs = timeoutMs;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export class ClaudeCliCancelledError extends Error {
|
|
64
|
+
constructor() {
|
|
65
|
+
super('[claude-cli-spawn] cancelled by user');
|
|
66
|
+
this.name = 'ClaudeCliCancelledError';
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// ── Implementation ────────────────────────────────────────────────────────
|
|
70
|
+
const DEFAULT_TIMEOUT_MS = 600_000;
|
|
71
|
+
/**
|
|
72
|
+
* Spawn `claude -p --agent <name> [--bare] --output-format stream-json
|
|
73
|
+
* --verbose --include-partial-messages --input-format text
|
|
74
|
+
* [--allowedTools "..."]`
|
|
75
|
+
* with the given prompt on stdin, then collect the assistant's text from
|
|
76
|
+
* the stream-json output.
|
|
77
|
+
*
|
|
78
|
+
* `--bare` is opt-in (`bareMode: true`); the default keeps OAuth Keychain
|
|
79
|
+
* reads working for subscription users. Recursion is broken via the
|
|
80
|
+
* `CLAUDE_FORGE_INTERNAL_SPAWN=1` env we set on the child.
|
|
81
|
+
*
|
|
82
|
+
* Returns the raw assistant text (the caller is responsible for envelope
|
|
83
|
+
* parsing, e.g. `parseSkillBlock` / `parseClaudeMdBlock`).
|
|
84
|
+
*/
|
|
85
|
+
export async function spawnClaudeCli(opts) {
|
|
86
|
+
const claudeBin = opts.claudeBin ?? findClaudeBin();
|
|
87
|
+
if (!claudeBin)
|
|
88
|
+
throw new ClaudeCliMissingError();
|
|
89
|
+
const args = [
|
|
90
|
+
'-p',
|
|
91
|
+
'--agent', opts.agent,
|
|
92
|
+
];
|
|
93
|
+
if (opts.bareMode === true)
|
|
94
|
+
args.push('--bare');
|
|
95
|
+
args.push('--output-format', 'stream-json',
|
|
96
|
+
// claude CLI rejects `--print --output-format=stream-json` without --verbose:
|
|
97
|
+
// "When using --print, --output-format=stream-json requires --verbose".
|
|
98
|
+
// Same regression as spec 1443 (commit b2e87f45) for distiller.ts; the
|
|
99
|
+
// 2026-05-29 shared-helper extraction missed this flag.
|
|
100
|
+
'--verbose', '--include-partial-messages', '--input-format', 'text');
|
|
101
|
+
if (opts.allowedTools && opts.allowedTools.length > 0) {
|
|
102
|
+
args.push('--allowedTools', opts.allowedTools.join(' '));
|
|
103
|
+
}
|
|
104
|
+
return new Promise((resolve, reject) => {
|
|
105
|
+
const child = spawn(claudeBin, args, {
|
|
106
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
107
|
+
env: {
|
|
108
|
+
...process.env,
|
|
109
|
+
// Recursion guard: every entry-point hook in src/hooks/*.sh
|
|
110
|
+
// short-circuits when this env is non-empty, preventing the spawned
|
|
111
|
+
// claude subprocess from firing its hooks back into the daemon.
|
|
112
|
+
CLAUDE_FORGE_INTERNAL_SPAWN: '1',
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
let assistantText = '';
|
|
116
|
+
let stderr = '';
|
|
117
|
+
let buffer = '';
|
|
118
|
+
let settled = false;
|
|
119
|
+
const settle = (fn) => {
|
|
120
|
+
if (settled)
|
|
121
|
+
return;
|
|
122
|
+
settled = true;
|
|
123
|
+
fn();
|
|
124
|
+
};
|
|
125
|
+
const cancelHandler = () => {
|
|
126
|
+
try {
|
|
127
|
+
child.kill('SIGTERM');
|
|
128
|
+
}
|
|
129
|
+
catch { /* ignore */ }
|
|
130
|
+
settle(() => reject(new ClaudeCliCancelledError()));
|
|
131
|
+
};
|
|
132
|
+
opts.cancelSignal?.addEventListener('abort', cancelHandler);
|
|
133
|
+
const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
134
|
+
const timeoutId = setTimeout(() => {
|
|
135
|
+
try {
|
|
136
|
+
child.kill('SIGTERM');
|
|
137
|
+
}
|
|
138
|
+
catch { /* ignore */ }
|
|
139
|
+
settle(() => reject(new ClaudeCliTimeoutError(timeoutMs)));
|
|
140
|
+
}, timeoutMs);
|
|
141
|
+
child.stdout.on('data', (chunk) => {
|
|
142
|
+
buffer += chunk.toString('utf-8');
|
|
143
|
+
let nl;
|
|
144
|
+
while ((nl = buffer.indexOf('\n')) >= 0) {
|
|
145
|
+
const line = buffer.slice(0, nl).trim();
|
|
146
|
+
buffer = buffer.slice(nl + 1);
|
|
147
|
+
if (!line)
|
|
148
|
+
continue;
|
|
149
|
+
try {
|
|
150
|
+
const ev = JSON.parse(line);
|
|
151
|
+
const before = assistantText.length;
|
|
152
|
+
// CLI stream-json event shapes vary across versions; accept the
|
|
153
|
+
// union of common forms and extract any text we can find.
|
|
154
|
+
if (ev.type === 'assistant' || ev.type === 'assistant_message') {
|
|
155
|
+
const content = ev.content;
|
|
156
|
+
if (Array.isArray(content)) {
|
|
157
|
+
for (const c of content) {
|
|
158
|
+
if (c && typeof c === 'object' && typeof c.text === 'string') {
|
|
159
|
+
assistantText += c.text;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else if (typeof ev.text === 'string') {
|
|
164
|
+
assistantText += ev.text;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else if (ev.type === 'content_block_delta') {
|
|
168
|
+
const delta = ev.delta;
|
|
169
|
+
if (delta && typeof delta.text === 'string')
|
|
170
|
+
assistantText += delta.text;
|
|
171
|
+
}
|
|
172
|
+
else if (ev.type === 'message_delta' || ev.type === 'text_delta') {
|
|
173
|
+
const delta = ev.delta;
|
|
174
|
+
if (typeof delta === 'string')
|
|
175
|
+
assistantText += delta;
|
|
176
|
+
}
|
|
177
|
+
else if (ev.type === 'result') {
|
|
178
|
+
const result = ev.result;
|
|
179
|
+
if (typeof result === 'string' && !assistantText)
|
|
180
|
+
assistantText = result;
|
|
181
|
+
}
|
|
182
|
+
// Always notify caller, even when no text was extracted from this
|
|
183
|
+
// line (callers use the event types for spinner / SSE bridging).
|
|
184
|
+
void before;
|
|
185
|
+
opts.onProgress?.({
|
|
186
|
+
type: ev.type ?? 'unknown',
|
|
187
|
+
charCount: assistantText.length,
|
|
188
|
+
raw: ev,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Ignore non-JSON lines — stream-json normally never emits them,
|
|
193
|
+
// but defensive against partial buffering bugs in older CLI builds.
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
child.stderr.on('data', (chunk) => {
|
|
198
|
+
stderr += chunk.toString('utf-8');
|
|
199
|
+
});
|
|
200
|
+
child.on('close', (code) => {
|
|
201
|
+
clearTimeout(timeoutId);
|
|
202
|
+
opts.cancelSignal?.removeEventListener('abort', cancelHandler);
|
|
203
|
+
if (code === 0) {
|
|
204
|
+
settle(() => resolve(assistantText));
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
settle(() => reject(new ClaudeCliExitError(code ?? -1, stderr)));
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
child.on('error', (err) => {
|
|
211
|
+
clearTimeout(timeoutId);
|
|
212
|
+
opts.cancelSignal?.removeEventListener('abort', cancelHandler);
|
|
213
|
+
settle(() => reject(new Error(`[claude-cli-spawn] claude CLI spawn error: ${err.message}`)));
|
|
214
|
+
});
|
|
215
|
+
child.stdin.write(opts.prompt);
|
|
216
|
+
child.stdin.end();
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=claude-cli-spawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-cli-spawn.js","sourceRoot":"","sources":["../../../src/core/utils/claude-cli-spawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge-resume-block.d.ts","sourceRoot":"","sources":["../../../src/core/utils/forge-resume-block.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"forge-resume-block.d.ts","sourceRoot":"","sources":["../../../src/core/utils/forge-resume-block.ts"],"names":[],"mappings":"AAuBA;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAc1E;AAED,mBAAmB;AACnB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAK5D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAc1E"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* - 检测:`hasForgeResumeBlock`(含旧版 `<!-- forge:resume -->` 与新版 begin 标记)
|
|
7
7
|
*/
|
|
8
8
|
import { randomUUID } from 'crypto';
|
|
9
|
+
import { formatLocalDisplay } from './time.js';
|
|
9
10
|
/** 旧版续接块(正文裸放,易被 HTML 注释子串破坏) */
|
|
10
11
|
const LEGACY_RESUME_BLOCK_RE = /\n*<!-- forge:resume -->[\s\S]*?<!-- forge:end-resume -->\s*/g;
|
|
11
12
|
/** forge:resume-begin / end 之间的 UUID(randomUUID 小写) */
|
|
@@ -18,7 +19,7 @@ function scopedResumeBlockRe() {
|
|
|
18
19
|
*/
|
|
19
20
|
export function buildForgeResumeEnvelope(innerUtf8Markdown) {
|
|
20
21
|
const id = randomUUID();
|
|
21
|
-
const
|
|
22
|
+
const stamp = formatLocalDisplay(Date.now());
|
|
22
23
|
const body = innerUtf8Markdown.trim();
|
|
23
24
|
return [
|
|
24
25
|
`<!-- forge:resume-begin:${id} -->`,
|
|
@@ -26,7 +27,7 @@ export function buildForgeResumeEnvelope(innerUtf8Markdown) {
|
|
|
26
27
|
body,
|
|
27
28
|
'```',
|
|
28
29
|
'',
|
|
29
|
-
`_生成时间: ${
|
|
30
|
+
`_生成时间: ${stamp}_`,
|
|
30
31
|
`<!-- forge:resume-end:${id} -->`,
|
|
31
32
|
].join('\n');
|
|
32
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge-resume-block.js","sourceRoot":"","sources":["../../../src/core/utils/forge-resume-block.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"forge-resume-block.js","sourceRoot":"","sources":["../../../src/core/utils/forge-resume-block.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,iCAAiC;AACjC,MAAM,sBAAsB,GAAG,+DAA+D,CAAC;AAE/F,uDAAuD;AACvD,MAAM,WAAW,GAAG,8DAA8D,CAAC;AAEnF,SAAS,mBAAmB;IAC1B,OAAO,IAAI,MAAM,CACf,gCAAgC,WAAW,kDAAkD,EAC7F,IAAI,CACL,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,iBAAyB;IAChE,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAEtC,OAAO;QACL,2BAA2B,EAAE,MAAM;QACnC,sBAAsB;QACtB,IAAI;QACJ,KAAK;QACL,EAAE;QACF,UAAU,KAAK,GAAG;QAClB,yBAAyB,EAAE,MAAM;KAClC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,mBAAmB;AACnB,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACzC,IAAI,MAAM,CAAC,2BAA2B,WAAW,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CACvE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,OAAe;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3E,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAC/B,IAAI,MAAM,CAAC,2BAA2B,WAAW,oEAAoE,WAAW,MAAM,CAAC,CACxI,CAAC;IACF,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -15,8 +15,20 @@ export declare const logger: {
|
|
|
15
15
|
};
|
|
16
16
|
export declare function setLogLevel(level: LogLevel): void;
|
|
17
17
|
/**
|
|
18
|
-
* Enable file logging (for daemon mode)
|
|
19
|
-
*
|
|
18
|
+
* Enable file logging (for daemon mode).
|
|
19
|
+
*
|
|
20
|
+
* @param filePath Path to log file. Pass `null` to disable file logging and
|
|
21
|
+
* restore stderr-only output (used by tests / shutdown paths).
|
|
22
|
+
*
|
|
23
|
+
* Wiring contract (Stage D, 2026-05-27): the daemon entrypoint
|
|
24
|
+
* (`src/daemon/index.ts`) MUST call this once with `FORGE_PATHS.daemonLog()`
|
|
25
|
+
* before any `logger.info/debug/warn/error` call. Without the wire-call the
|
|
26
|
+
* logger silently writes to stderr only, which is redirected to `/dev/null`
|
|
27
|
+
* in detached production daemon mode — making all subsystem startup logs
|
|
28
|
+
* (ConfigStore.seedDefaults, InterceptRevive, Storage init, IntentEngine
|
|
29
|
+
* probe, etc.) disappear from disk. See
|
|
30
|
+
* `docs/implementation/2026-05-27/HHMM-stage-d-file-logging-wire-changelog.md`
|
|
31
|
+
* for the root-cause trace.
|
|
20
32
|
*/
|
|
21
|
-
export declare function enableFileLogging(filePath: string): void;
|
|
33
|
+
export declare function enableFileLogging(filePath: string | null): void;
|
|
22
34
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/core/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAyFD,eAAO,MAAM,MAAM;mBACF,MAAM,GAAG,IAAI;kBAId,MAAM,GAAG,IAAI;kBAIb,MAAM,GAAG,IAAI;mBAIZ,MAAM,GAAG,IAAI;CAG7B,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAEjD;AAED
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/core/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAyFD,eAAO,MAAM,MAAM;mBACF,MAAM,GAAG,IAAI;kBAId,MAAM,GAAG,IAAI;kBAIb,MAAM,GAAG,IAAI;mBAIZ,MAAM,GAAG,IAAI;CAG7B,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAEjD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAY/D"}
|
|
@@ -111,10 +111,28 @@ export function setLogLevel(level) {
|
|
|
111
111
|
currentLevel = level;
|
|
112
112
|
}
|
|
113
113
|
/**
|
|
114
|
-
* Enable file logging (for daemon mode)
|
|
115
|
-
*
|
|
114
|
+
* Enable file logging (for daemon mode).
|
|
115
|
+
*
|
|
116
|
+
* @param filePath Path to log file. Pass `null` to disable file logging and
|
|
117
|
+
* restore stderr-only output (used by tests / shutdown paths).
|
|
118
|
+
*
|
|
119
|
+
* Wiring contract (Stage D, 2026-05-27): the daemon entrypoint
|
|
120
|
+
* (`src/daemon/index.ts`) MUST call this once with `FORGE_PATHS.daemonLog()`
|
|
121
|
+
* before any `logger.info/debug/warn/error` call. Without the wire-call the
|
|
122
|
+
* logger silently writes to stderr only, which is redirected to `/dev/null`
|
|
123
|
+
* in detached production daemon mode — making all subsystem startup logs
|
|
124
|
+
* (ConfigStore.seedDefaults, InterceptRevive, Storage init, IntentEngine
|
|
125
|
+
* probe, etc.) disappear from disk. See
|
|
126
|
+
* `docs/implementation/2026-05-27/HHMM-stage-d-file-logging-wire-changelog.md`
|
|
127
|
+
* for the root-cause trace.
|
|
116
128
|
*/
|
|
117
129
|
export function enableFileLogging(filePath) {
|
|
130
|
+
if (filePath === null) {
|
|
131
|
+
logFilePath = null;
|
|
132
|
+
lastSizeCheck = 0;
|
|
133
|
+
cachedSize = 0;
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
118
136
|
logFilePath = filePath;
|
|
119
137
|
const dir = path.dirname(filePath);
|
|
120
138
|
if (!fs.existsSync(dir)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/utils/logger.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAED;;;GAGG;AACH,SAAS,kBAAkB;IACzB,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7D,MAAM,QAAQ,GAA6B;QACzC,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;KACtB,CAAC;IACF,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,IAAI,YAAY,GAAa,kBAAkB,EAAE,CAAC;AAClD,IAAI,WAAW,GAAkB,IAAI,CAAC;AACtC,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,IAAI,UAAU,GAAG,CAAC,CAAC;AAEnB,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAC1C,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,uBAAuB;AAE1D,SAAS,SAAS;IAChB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,MAAM,CAAC,KAAa,EAAE,OAAe;IAC5C,OAAO,IAAI,SAAS,EAAE,MAAM,KAAK,KAAK,OAAO,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO;IAExD,gDAAgD;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,GAAG,GAAG,aAAa,IAAI,mBAAmB,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,aAAa,GAAG,GAAG,CAAC;IACtB,CAAC;IAED,8BAA8B;IAC9B,IAAI,UAAU,GAAG,QAAQ;QAAE,OAAO;IAElC,6DAA6D;IAC7D,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,GAAG,WAAW,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,GAAG,WAAW,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,KAAK,SAAS,GAAG,CAAC,EAAE,CAAC;oBACxB,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB;gBAC1C,CAAC;qBAAM,CAAC;oBACN,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,WAAW,IAAI,CAAC,CAAC;QAC/C,UAAU,GAAG,CAAC,CAAC,CAAC,6BAA6B;QAC7C,aAAa,GAAG,CAAC,CAAC,CAAC,8BAA8B;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0DAA0D;QAC1D,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,KAAe,EAAE,SAAiB,EAAE,OAAe;IAChE,IAAI,KAAK,GAAG,YAAY;QAAE,OAAO;IACjC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE7C,IAAI,WAAW,EAAE,CAAC;QAChB,iBAAiB,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,EAAE,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC;YACjD,iCAAiC;YACjC,UAAU,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,yCAAyC;YACzC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,CAAC,OAAe;QACnB,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,KAAe;IACzC,YAAY,GAAG,KAAK,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAuB;IACvD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,WAAW,GAAG,IAAI,CAAC;QACnB,aAAa,GAAG,CAAC,CAAC;QAClB,UAAU,GAAG,CAAC,CAAC;QACf,OAAO;IACT,CAAC;IACD,WAAW,GAAG,QAAQ,CAAC;IACvB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Noise-prompt detection utility.
|
|
3
|
+
*
|
|
4
|
+
* Several daemon services need to detect when a `user_prompt` (or task title)
|
|
5
|
+
* is actually a tool-generated envelope rather than real human input:
|
|
6
|
+
* - `<task-notification>`, `<system-reminder>`, `<local-command-stdout>`,
|
|
7
|
+
* `<command-message>`, `<command-name>`, `[Image #N]`
|
|
8
|
+
*
|
|
9
|
+
* These envelopes ride the same UserPromptSubmit hook as real prompts because
|
|
10
|
+
* Claude Code pipes framework reminders through it. Each consumer's reaction
|
|
11
|
+
* to noise differs (skip auto-spec, skip task creation, filter resume render),
|
|
12
|
+
* so behavior decisions stay at the call site; this module just answers the
|
|
13
|
+
* question "is this prompt noise?".
|
|
14
|
+
*
|
|
15
|
+
* This file is the single source of truth for the prefix list — it is
|
|
16
|
+
* intentionally placed under `core/utils/` so non-daemon code (claudemd
|
|
17
|
+
* resume-manager etc.) can import without depending on `daemon/services/`.
|
|
18
|
+
*
|
|
19
|
+
* `daemon/services/violation-reporter.ts` re-exports {@link NOISE_PROMPT_PREFIXES}
|
|
20
|
+
* under its historical name `TOOL_MESSAGE_PREFIXES` for back-compat with
|
|
21
|
+
* existing tests and call sites.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Prompt-text prefixes that identify tool-generated or system messages
|
|
25
|
+
* masquerading as `user_prompt` rows. These must not be scanned for
|
|
26
|
+
* violation keywords / auto-spec triggers / task creation because they
|
|
27
|
+
* reflect agent reports / image attachments / framework reminders, not the
|
|
28
|
+
* human's actual prompt.
|
|
29
|
+
*
|
|
30
|
+
* Extending the list: add the new prefix here and add a unit test in
|
|
31
|
+
* `noise-prompt.test.ts`. Do NOT re-declare this list anywhere else.
|
|
32
|
+
*/
|
|
33
|
+
export declare const NOISE_PROMPT_PREFIXES: ReadonlyArray<string>;
|
|
34
|
+
/**
|
|
35
|
+
* True if `text` (trimStart'd) starts with any known tool/system envelope
|
|
36
|
+
* prefix. Returns false for empty/undefined input (callers that want to treat
|
|
37
|
+
* empty as noise should handle it themselves — see `resume-manager.ts`).
|
|
38
|
+
*
|
|
39
|
+
* Envelope-with-content rule: when the prefix is followed by a newline and
|
|
40
|
+
* substantive text (trimmed length >= 3), the prompt is NOT considered noise.
|
|
41
|
+
* Example: "[Image #2]\n这个任务为什么没有在管理后台显示?" → false.
|
|
42
|
+
* Pure envelopes (no newline, or only whitespace after newline) → true.
|
|
43
|
+
*
|
|
44
|
+
* @deprecated since 2026-06-01 (spec b1480935 Option A). Prefer
|
|
45
|
+
* {@link classifyPromptKind} which returns granular kind labels
|
|
46
|
+
* (`'agent-callback'` / `'image'` / `'system'` / `'user'`). Kept as a read-side
|
|
47
|
+
* fallback during migration; `task-segmenter` no longer short-circuits on
|
|
48
|
+
* noise — every prompt now flows through createTask with a kind tag.
|
|
49
|
+
*/
|
|
50
|
+
export declare function isNoisePrompt(text: string | undefined | null): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Possible task-kind classifications for a UserPromptSubmit payload (spec
|
|
53
|
+
* b1480935 Option A, 2026-06-01).
|
|
54
|
+
*
|
|
55
|
+
* - `user` : real human prompt (the default)
|
|
56
|
+
* - `agent-callback` : `<task-notification>` envelope emitted after a
|
|
57
|
+
* sub-agent finishes
|
|
58
|
+
* - `image` : `[Image #N]` attachment marker with no substantive
|
|
59
|
+
* caption (an envelope-only image; image-with-caption
|
|
60
|
+
* stays `user` per the substantive-content rule below)
|
|
61
|
+
* - `system` : framework envelopes (`<system-reminder>`,
|
|
62
|
+
* `<local-command-stdout>`, `<command-message>`,
|
|
63
|
+
* `<command-name>`)
|
|
64
|
+
*/
|
|
65
|
+
export type PromptKind = 'user' | 'agent-callback' | 'image' | 'system';
|
|
66
|
+
/**
|
|
67
|
+
* Single-prefix kind map. Used by {@link classifyPromptKind} and by the
|
|
68
|
+
* boot-time backfill (see `core/storage/base.ts`) so the same prefix → kind
|
|
69
|
+
* decision is made in TWO places without re-encoding the rule per consumer.
|
|
70
|
+
*
|
|
71
|
+
* Order matters only for backfill SQL readability — JS `for...of` iteration
|
|
72
|
+
* is stable.
|
|
73
|
+
*/
|
|
74
|
+
export declare const NOISE_PREFIX_TO_KIND: ReadonlyArray<{
|
|
75
|
+
prefix: string;
|
|
76
|
+
kind: PromptKind;
|
|
77
|
+
}>;
|
|
78
|
+
/**
|
|
79
|
+
* Classify a UserPromptSubmit payload into one of {@link PromptKind}.
|
|
80
|
+
*
|
|
81
|
+
* Decision rules (spec b1480935 Option A, 2026-06-01):
|
|
82
|
+
* 1. null / undefined / empty / whitespace-only → `'user'` (default; matches
|
|
83
|
+
* the historical TaskSegmenter behaviour which still created a task row
|
|
84
|
+
* for a fully-empty prompt — back-compat).
|
|
85
|
+
* 2. Match against {@link NOISE_PREFIX_TO_KIND}. If no prefix matches,
|
|
86
|
+
* return `'user'`.
|
|
87
|
+
* 3. **Substantive-content carve-out**: when the matched prefix is followed
|
|
88
|
+
* by a newline AND the remainder (trimmed) has length >= 3, the prompt
|
|
89
|
+
* is treated as a REAL user prompt (kind=`'user'`). This is the same
|
|
90
|
+
* "image-with-caption" rule that `isNoisePrompt` already implements;
|
|
91
|
+
* reused here so e.g. `"[Image #2]\n请帮忙看下"` keeps surfacing as
|
|
92
|
+
* a normal user task and not a muted `'image'` chip.
|
|
93
|
+
*
|
|
94
|
+
* Pure function — no side effects, no I/O, deterministic.
|
|
95
|
+
*/
|
|
96
|
+
export declare function classifyPromptKind(text: string | undefined | null): PromptKind;
|
|
97
|
+
//# sourceMappingURL=noise-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noise-prompt.d.ts","sourceRoot":"","sources":["../../../src/core/utils/noise-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,MAAM,CAOvD,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAWtE;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,gBAAgB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExE;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAOpF,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,UAAU,CAoB9E"}
|