@kilnai/cli 1.0.7 → 2.1.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/README.md +34 -8
- package/dist/application/__tests__/session-report.test.d.ts +2 -0
- package/dist/application/__tests__/session-report.test.d.ts.map +1 -0
- package/dist/application/__tests__/session-report.test.js +100 -0
- package/dist/application/__tests__/session-report.test.js.map +1 -0
- package/dist/application/agent-loader.d.ts +30 -2
- package/dist/application/agent-loader.d.ts.map +1 -1
- package/dist/application/agent-loader.js +99 -3
- package/dist/application/agent-loader.js.map +1 -1
- package/dist/application/agent-loader.test.js +112 -18
- package/dist/application/agent-loader.test.js.map +1 -1
- package/dist/application/agent-skill-context.d.ts +12 -0
- package/dist/application/agent-skill-context.d.ts.map +1 -0
- package/dist/application/agent-skill-context.js +32 -0
- package/dist/application/agent-skill-context.js.map +1 -0
- package/dist/application/agent-skill-context.test.d.ts +2 -0
- package/dist/application/agent-skill-context.test.d.ts.map +1 -0
- package/dist/application/agent-skill-context.test.js +156 -0
- package/dist/application/agent-skill-context.test.js.map +1 -0
- package/dist/application/benchmark-session-executor.d.ts +14 -0
- package/dist/application/benchmark-session-executor.d.ts.map +1 -0
- package/dist/application/benchmark-session-executor.js +210 -0
- package/dist/application/benchmark-session-executor.js.map +1 -0
- package/dist/application/config-apply-tool.d.ts +30 -0
- package/dist/application/config-apply-tool.d.ts.map +1 -0
- package/dist/application/config-apply-tool.js +68 -0
- package/dist/application/config-apply-tool.js.map +1 -0
- package/dist/application/config-apply.d.ts +9 -0
- package/dist/application/config-apply.d.ts.map +1 -0
- package/dist/application/config-apply.js +146 -0
- package/dist/application/config-apply.js.map +1 -0
- package/dist/application/config-approval.d.ts +10 -0
- package/dist/application/config-approval.d.ts.map +1 -0
- package/dist/application/config-approval.js +30 -0
- package/dist/application/config-approval.js.map +1 -0
- package/dist/application/config-mutation-store.d.ts +25 -0
- package/dist/application/config-mutation-store.d.ts.map +1 -0
- package/dist/application/config-mutation-store.js +59 -0
- package/dist/application/config-mutation-store.js.map +1 -0
- package/dist/application/config-proposal.d.ts +22 -0
- package/dist/application/config-proposal.d.ts.map +1 -0
- package/dist/application/config-proposal.js +395 -0
- package/dist/application/config-proposal.js.map +1 -0
- package/dist/application/config-propose-tool.d.ts +30 -0
- package/dist/application/config-propose-tool.d.ts.map +1 -0
- package/dist/application/config-propose-tool.js +63 -0
- package/dist/application/config-propose-tool.js.map +1 -0
- package/dist/application/config-read-tool.d.ts +26 -0
- package/dist/application/config-read-tool.d.ts.map +1 -0
- package/dist/application/config-read-tool.js +51 -0
- package/dist/application/config-read-tool.js.map +1 -0
- package/dist/application/config-status.d.ts +9 -0
- package/dist/application/config-status.d.ts.map +1 -0
- package/dist/application/config-status.js +361 -0
- package/dist/application/config-status.js.map +1 -0
- package/dist/application/config-tools.d.ts +3 -0
- package/dist/application/config-tools.d.ts.map +1 -0
- package/dist/application/config-tools.js +11 -0
- package/dist/application/config-tools.js.map +1 -0
- package/dist/application/context-types.d.ts +4 -17
- package/dist/application/context-types.d.ts.map +1 -1
- package/dist/application/context-types.js.map +1 -1
- package/dist/application/first-party-agent-defaults.d.ts +3 -0
- package/dist/application/first-party-agent-defaults.d.ts.map +1 -0
- package/dist/application/first-party-agent-defaults.js +135 -0
- package/dist/application/first-party-agent-defaults.js.map +1 -0
- package/dist/application/instruction-profile-context.d.ts +15 -0
- package/dist/application/instruction-profile-context.d.ts.map +1 -0
- package/dist/application/instruction-profile-context.js +80 -0
- package/dist/application/instruction-profile-context.js.map +1 -0
- package/dist/application/instruction-profile-loader.d.ts +20 -0
- package/dist/application/instruction-profile-loader.d.ts.map +1 -0
- package/dist/application/instruction-profile-loader.js +132 -0
- package/dist/application/instruction-profile-loader.js.map +1 -0
- package/dist/application/instruction-profile-loader.test.d.ts +2 -0
- package/dist/application/instruction-profile-loader.test.d.ts.map +1 -0
- package/dist/application/instruction-profile-loader.test.js +100 -0
- package/dist/application/instruction-profile-loader.test.js.map +1 -0
- package/dist/application/operator-theme-preferences.d.ts +11 -0
- package/dist/application/operator-theme-preferences.d.ts.map +1 -0
- package/dist/application/operator-theme-preferences.js +49 -0
- package/dist/application/operator-theme-preferences.js.map +1 -0
- package/dist/application/project-context.d.ts +22 -0
- package/dist/application/project-context.d.ts.map +1 -0
- package/dist/application/project-context.js +139 -0
- package/dist/application/project-context.js.map +1 -0
- package/dist/application/project-root-resolver.d.ts +14 -0
- package/dist/application/project-root-resolver.d.ts.map +1 -0
- package/dist/application/project-root-resolver.js +71 -0
- package/dist/application/project-root-resolver.js.map +1 -0
- package/dist/application/repo-shim-projection.d.ts +48 -0
- package/dist/application/repo-shim-projection.d.ts.map +1 -0
- package/dist/application/repo-shim-projection.js +536 -0
- package/dist/application/repo-shim-projection.js.map +1 -0
- package/dist/application/resume-sidebar-info.d.ts +9 -0
- package/dist/application/resume-sidebar-info.d.ts.map +1 -0
- package/dist/application/resume-sidebar-info.js +40 -0
- package/dist/application/resume-sidebar-info.js.map +1 -0
- package/dist/application/resume-strategy-feedback.d.ts.map +1 -1
- package/dist/application/resume-strategy-feedback.js +2 -1
- package/dist/application/resume-strategy-feedback.js.map +1 -1
- package/dist/application/run-session.d.ts +15 -0
- package/dist/application/run-session.d.ts.map +1 -1
- package/dist/application/run-session.js +110 -19
- package/dist/application/run-session.js.map +1 -1
- package/dist/application/runtime-session-rehydration.d.ts +9 -0
- package/dist/application/runtime-session-rehydration.d.ts.map +1 -0
- package/dist/application/runtime-session-rehydration.js +115 -0
- package/dist/application/runtime-session-rehydration.js.map +1 -0
- package/dist/application/session-context-artifacts.d.ts +19 -0
- package/dist/application/session-context-artifacts.d.ts.map +1 -0
- package/dist/application/session-context-artifacts.js +60 -0
- package/dist/application/session-context-artifacts.js.map +1 -0
- package/dist/application/session-metadata.d.ts +35 -0
- package/dist/application/session-metadata.d.ts.map +1 -0
- package/dist/application/session-metadata.js +157 -0
- package/dist/application/session-metadata.js.map +1 -0
- package/dist/application/session-report.d.ts.map +1 -1
- package/dist/application/session-report.js +8 -0
- package/dist/application/session-report.js.map +1 -1
- package/dist/application/session-resume.d.ts +1 -1
- package/dist/application/session-resume.d.ts.map +1 -1
- package/dist/application/session-resume.js +4 -4
- package/dist/application/session-resume.js.map +1 -1
- package/dist/application/work-governance-context.d.ts +7 -0
- package/dist/application/work-governance-context.d.ts.map +1 -0
- package/dist/application/work-governance-context.js +64 -0
- package/dist/application/work-governance-context.js.map +1 -0
- package/dist/application/work-governance-context.test.d.ts +2 -0
- package/dist/application/work-governance-context.test.d.ts.map +1 -0
- package/dist/application/work-governance-context.test.js +55 -0
- package/dist/application/work-governance-context.test.js.map +1 -0
- package/dist/application/work-governance-policy.d.ts +15 -0
- package/dist/application/work-governance-policy.d.ts.map +1 -0
- package/dist/application/work-governance-policy.js +53 -0
- package/dist/application/work-governance-policy.js.map +1 -0
- package/dist/application/work-governance-tool.d.ts +421 -0
- package/dist/application/work-governance-tool.d.ts.map +1 -0
- package/dist/application/work-governance-tool.js +937 -0
- package/dist/application/work-governance-tool.js.map +1 -0
- package/dist/application/work-governance-tool.test.d.ts +2 -0
- package/dist/application/work-governance-tool.test.d.ts.map +1 -0
- package/dist/application/work-governance-tool.test.js +935 -0
- package/dist/application/work-governance-tool.test.js.map +1 -0
- package/dist/application/work-governance-workflows.d.ts +23 -0
- package/dist/application/work-governance-workflows.d.ts.map +1 -0
- package/dist/application/work-governance-workflows.js +177 -0
- package/dist/application/work-governance-workflows.js.map +1 -0
- package/dist/application/workflow-snapshot-export.d.ts +81 -0
- package/dist/application/workflow-snapshot-export.d.ts.map +1 -0
- package/dist/application/workflow-snapshot-export.js +141 -0
- package/dist/application/workflow-snapshot-export.js.map +1 -0
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +242 -24
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/benchmark.d.ts +8 -0
- package/dist/commands/benchmark.d.ts.map +1 -0
- package/dist/commands/benchmark.js +287 -0
- package/dist/commands/benchmark.js.map +1 -0
- package/dist/commands/config.d.ts +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +369 -39
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/config.test.d.ts +2 -0
- package/dist/commands/config.test.d.ts.map +1 -0
- package/dist/commands/config.test.js +86 -0
- package/dist/commands/config.test.js.map +1 -0
- package/dist/commands/goal.d.ts +12 -0
- package/dist/commands/goal.d.ts.map +1 -0
- package/dist/commands/goal.js +469 -0
- package/dist/commands/goal.js.map +1 -0
- package/dist/commands/goal.test.d.ts +2 -0
- package/dist/commands/goal.test.d.ts.map +1 -0
- package/dist/commands/goal.test.js +317 -0
- package/dist/commands/goal.test.js.map +1 -0
- package/dist/commands/gui-options.d.ts +5 -0
- package/dist/commands/gui-options.d.ts.map +1 -0
- package/dist/commands/gui-options.js +18 -0
- package/dist/commands/gui-options.js.map +1 -0
- package/dist/commands/gui-session-detail.d.ts +4 -0
- package/dist/commands/gui-session-detail.d.ts.map +1 -0
- package/dist/commands/gui-session-detail.js +32 -0
- package/dist/commands/gui-session-detail.js.map +1 -0
- package/dist/commands/gui-session-summaries.d.ts +5 -0
- package/dist/commands/gui-session-summaries.d.ts.map +1 -0
- package/dist/commands/gui-session-summaries.js +62 -0
- package/dist/commands/gui-session-summaries.js.map +1 -0
- package/dist/commands/gui-shutdown-monitor.d.ts +8 -0
- package/dist/commands/gui-shutdown-monitor.d.ts.map +1 -0
- package/dist/commands/gui-shutdown-monitor.js +50 -0
- package/dist/commands/gui-shutdown-monitor.js.map +1 -0
- package/dist/commands/gui-window.d.ts +42 -0
- package/dist/commands/gui-window.d.ts.map +1 -0
- package/dist/commands/gui-window.js +287 -0
- package/dist/commands/gui-window.js.map +1 -0
- package/dist/commands/gui-workspace.d.ts +3 -0
- package/dist/commands/gui-workspace.d.ts.map +1 -0
- package/dist/commands/gui-workspace.js +297 -0
- package/dist/commands/gui-workspace.js.map +1 -0
- package/dist/commands/gui.d.ts +14 -0
- package/dist/commands/gui.d.ts.map +1 -0
- package/dist/commands/gui.js +391 -0
- package/dist/commands/gui.js.map +1 -0
- package/dist/commands/import-native.d.ts +34 -0
- package/dist/commands/import-native.d.ts.map +1 -0
- package/dist/commands/import-native.js +302 -0
- package/dist/commands/import-native.js.map +1 -0
- package/dist/commands/init-templates.d.ts.map +1 -1
- package/dist/commands/init-templates.js +13 -12
- package/dist/commands/init-templates.js.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp-config.d.ts.map +1 -1
- package/dist/commands/mcp-config.js +6 -3
- package/dist/commands/mcp-config.js.map +1 -1
- package/dist/commands/memory.d.ts +1 -1
- package/dist/commands/memory.d.ts.map +1 -1
- package/dist/commands/memory.js +188 -39
- package/dist/commands/memory.js.map +1 -1
- package/dist/commands/project.d.ts +3 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +64 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/route.d.ts +3 -0
- package/dist/commands/route.d.ts.map +1 -0
- package/dist/commands/route.js +19 -0
- package/dist/commands/route.js.map +1 -0
- package/dist/commands/run.d.ts +23 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +416 -81
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/skill-capture.js +34 -14
- package/dist/commands/skill-capture.js.map +1 -1
- package/dist/commands/skill.d.ts.map +1 -1
- package/dist/commands/skill.js +10 -9
- package/dist/commands/skill.js.map +1 -1
- package/dist/commands/status.d.ts +5 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +134 -5
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.d.ts +8 -6
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +173 -48
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/tools.d.ts +2 -0
- package/dist/commands/tools.d.ts.map +1 -1
- package/dist/commands/tools.js +34 -15
- package/dist/commands/tools.js.map +1 -1
- package/dist/commands/tui.d.ts +6 -4
- package/dist/commands/tui.d.ts.map +1 -1
- package/dist/commands/tui.js +594 -94
- package/dist/commands/tui.js.map +1 -1
- package/dist/commands/uninstall.d.ts +13 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +111 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/config/builtin-tool-surface-config.d.ts +6 -0
- package/dist/config/builtin-tool-surface-config.d.ts.map +1 -0
- package/dist/config/builtin-tool-surface-config.js +27 -0
- package/dist/config/builtin-tool-surface-config.js.map +1 -0
- package/dist/config/config-merger.d.ts +1 -1
- package/dist/config/config-merger.d.ts.map +1 -1
- package/dist/config/config-merger.js +21 -4
- package/dist/config/config-merger.js.map +1 -1
- package/dist/config/config-merger.test.js +202 -7
- package/dist/config/config-merger.test.js.map +1 -1
- package/dist/config/global-config.d.ts +59 -13
- package/dist/config/global-config.d.ts.map +1 -1
- package/dist/config/global-config.js +580 -5
- package/dist/config/global-config.js.map +1 -1
- package/dist/config/global-config.test.js +481 -8
- package/dist/config/global-config.test.js.map +1 -1
- package/dist/config/harness-integration-capabilities.d.ts +27 -0
- package/dist/config/harness-integration-capabilities.d.ts.map +1 -0
- package/dist/config/harness-integration-capabilities.js +64 -0
- package/dist/config/harness-integration-capabilities.js.map +1 -0
- package/dist/config/interactive-use-config.d.ts +25 -0
- package/dist/config/interactive-use-config.d.ts.map +1 -0
- package/dist/config/interactive-use-config.js +210 -0
- package/dist/config/interactive-use-config.js.map +1 -0
- package/dist/config/json-comments.d.ts +2 -0
- package/dist/config/json-comments.d.ts.map +1 -0
- package/dist/config/json-comments.js +21 -0
- package/dist/config/json-comments.js.map +1 -0
- package/dist/config/managed-agent-direct-adapters.d.ts +15 -0
- package/dist/config/managed-agent-direct-adapters.d.ts.map +1 -0
- package/dist/config/managed-agent-direct-adapters.js +54 -0
- package/dist/config/managed-agent-direct-adapters.js.map +1 -0
- package/dist/config/managed-agent-provider-models.d.ts +3 -0
- package/dist/config/managed-agent-provider-models.d.ts.map +1 -0
- package/dist/config/managed-agent-provider-models.js +12 -0
- package/dist/config/managed-agent-provider-models.js.map +1 -0
- package/dist/config/managed-agent-routes.d.ts +49 -0
- package/dist/config/managed-agent-routes.d.ts.map +1 -0
- package/dist/config/managed-agent-routes.js +578 -0
- package/dist/config/managed-agent-routes.js.map +1 -0
- package/dist/config/managed-invocation-context-resolver.d.ts +10 -0
- package/dist/config/managed-invocation-context-resolver.d.ts.map +1 -0
- package/dist/config/managed-invocation-context-resolver.js +98 -0
- package/dist/config/managed-invocation-context-resolver.js.map +1 -0
- package/dist/config/managed-invocation-context-resolver.test.d.ts +2 -0
- package/dist/config/managed-invocation-context-resolver.test.d.ts.map +1 -0
- package/dist/config/managed-invocation-context-resolver.test.js +133 -0
- package/dist/config/managed-invocation-context-resolver.test.js.map +1 -0
- package/dist/config/model-task-suitability.d.ts +9 -0
- package/dist/config/model-task-suitability.d.ts.map +1 -0
- package/dist/config/model-task-suitability.js +40 -0
- package/dist/config/model-task-suitability.js.map +1 -0
- package/dist/config/native-agent-projection.d.ts +16 -0
- package/dist/config/native-agent-projection.d.ts.map +1 -0
- package/dist/config/native-agent-projection.js +242 -0
- package/dist/config/native-agent-projection.js.map +1 -0
- package/dist/config/native-hook-projection.d.ts +11 -0
- package/dist/config/native-hook-projection.d.ts.map +1 -0
- package/dist/config/native-hook-projection.js +180 -0
- package/dist/config/native-hook-projection.js.map +1 -0
- package/dist/config/native-permission-projection.d.ts +12 -0
- package/dist/config/native-permission-projection.d.ts.map +1 -0
- package/dist/config/native-permission-projection.js +162 -0
- package/dist/config/native-permission-projection.js.map +1 -0
- package/dist/config/native-projection-backup.d.ts +8 -0
- package/dist/config/native-projection-backup.d.ts.map +1 -0
- package/dist/config/native-projection-backup.js +19 -0
- package/dist/config/native-projection-backup.js.map +1 -0
- package/dist/config/native-projection-policy.d.ts +10 -0
- package/dist/config/native-projection-policy.d.ts.map +1 -0
- package/dist/config/native-projection-policy.js +9 -0
- package/dist/config/native-projection-policy.js.map +1 -0
- package/dist/config/native-projection-state.d.ts +57 -0
- package/dist/config/native-projection-state.d.ts.map +1 -0
- package/dist/config/native-projection-state.js +199 -0
- package/dist/config/native-projection-state.js.map +1 -0
- package/dist/config/native-skill-projection.d.ts +24 -0
- package/dist/config/native-skill-projection.d.ts.map +1 -0
- package/dist/config/native-skill-projection.js +170 -0
- package/dist/config/native-skill-projection.js.map +1 -0
- package/dist/config/operator-identity-context.d.ts +7 -0
- package/dist/config/operator-identity-context.d.ts.map +1 -0
- package/dist/config/operator-identity-context.js +46 -0
- package/dist/config/operator-identity-context.js.map +1 -0
- package/dist/config/operator-identity-context.test.d.ts +2 -0
- package/dist/config/operator-identity-context.test.d.ts.map +1 -0
- package/dist/config/operator-identity-context.test.js +61 -0
- package/dist/config/operator-identity-context.test.js.map +1 -0
- package/dist/config/operator-voice.d.ts +10 -0
- package/dist/config/operator-voice.d.ts.map +1 -0
- package/dist/config/operator-voice.js +29 -0
- package/dist/config/operator-voice.js.map +1 -0
- package/dist/config/provider-route-candidates.d.ts +20 -0
- package/dist/config/provider-route-candidates.d.ts.map +1 -0
- package/dist/config/provider-route-candidates.js +211 -0
- package/dist/config/provider-route-candidates.js.map +1 -0
- package/dist/config/provider-route-candidates.test.d.ts +2 -0
- package/dist/config/provider-route-candidates.test.d.ts.map +1 -0
- package/dist/config/provider-route-candidates.test.js +150 -0
- package/dist/config/provider-route-candidates.test.js.map +1 -0
- package/dist/config/skill-registry.d.ts +9 -0
- package/dist/config/skill-registry.d.ts.map +1 -0
- package/dist/config/skill-registry.js +13 -0
- package/dist/config/skill-registry.js.map +1 -0
- package/dist/config/skill-registry.test.d.ts +2 -0
- package/dist/config/skill-registry.test.d.ts.map +1 -0
- package/dist/config/skill-registry.test.js +64 -0
- package/dist/config/skill-registry.test.js.map +1 -0
- package/dist/config/task-skill-selection.d.ts +24 -0
- package/dist/config/task-skill-selection.d.ts.map +1 -0
- package/dist/config/task-skill-selection.js +79 -0
- package/dist/config/task-skill-selection.js.map +1 -0
- package/dist/config/translators/claude-translator.d.ts +7 -0
- package/dist/config/translators/claude-translator.d.ts.map +1 -0
- package/dist/config/translators/claude-translator.js +30 -0
- package/dist/config/translators/claude-translator.js.map +1 -0
- package/dist/config/translators/codex-translator.d.ts +7 -0
- package/dist/config/translators/codex-translator.d.ts.map +1 -0
- package/dist/config/translators/codex-translator.js +20 -0
- package/dist/config/translators/codex-translator.js.map +1 -0
- package/dist/config/translators/opencode-translator.d.ts +7 -0
- package/dist/config/translators/opencode-translator.d.ts.map +1 -0
- package/dist/config/translators/opencode-translator.js +19 -0
- package/dist/config/translators/opencode-translator.js.map +1 -0
- package/dist/config/translators/permission-projection.d.ts +26 -0
- package/dist/config/translators/permission-projection.d.ts.map +1 -0
- package/dist/config/translators/permission-projection.js +22 -0
- package/dist/config/translators/permission-projection.js.map +1 -0
- package/dist/config/web-tools-config.d.ts +45 -0
- package/dist/config/web-tools-config.d.ts.map +1 -0
- package/dist/config/web-tools-config.js +846 -0
- package/dist/config/web-tools-config.js.map +1 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/engines/engine-registry.d.ts +45 -0
- package/dist/engines/engine-registry.d.ts.map +1 -0
- package/dist/engines/engine-registry.js +125 -0
- package/dist/engines/engine-registry.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +141 -18
- package/dist/index.js.map +1 -1
- package/dist/kiln-yaml-types.d.ts +207 -1
- package/dist/kiln-yaml-types.d.ts.map +1 -1
- package/dist/kiln-yaml-types.js +29 -0
- package/dist/kiln-yaml-types.js.map +1 -1
- package/dist/kiln-yaml.d.ts +1 -1
- package/dist/kiln-yaml.d.ts.map +1 -1
- package/dist/kiln-yaml.js +93 -0
- package/dist/kiln-yaml.js.map +1 -1
- package/dist/mcp/config-generator.d.ts.map +1 -1
- package/dist/mcp/config-generator.js +8 -7
- package/dist/mcp/config-generator.js.map +1 -1
- package/dist/mcp/index.d.ts +2 -25
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -103
- package/dist/mcp/index.js.map +1 -1
- package/dist/wrapper/__tests__/session-manager-context-governor.test.d.ts +2 -0
- package/dist/wrapper/__tests__/session-manager-context-governor.test.d.ts.map +1 -0
- package/dist/wrapper/__tests__/session-manager-context-governor.test.js +210 -0
- package/dist/wrapper/__tests__/session-manager-context-governor.test.js.map +1 -0
- package/dist/wrapper/claude-code-process.d.ts +1 -0
- package/dist/wrapper/claude-code-process.d.ts.map +1 -1
- package/dist/wrapper/claude-code-process.js +32 -19
- package/dist/wrapper/claude-code-process.js.map +1 -1
- package/dist/wrapper/cleanup-registry.d.ts.map +1 -1
- package/dist/wrapper/cleanup-registry.js +3 -1
- package/dist/wrapper/cleanup-registry.js.map +1 -1
- package/dist/wrapper/codex-session.d.ts +3 -0
- package/dist/wrapper/codex-session.d.ts.map +1 -1
- package/dist/wrapper/codex-session.js +193 -85
- package/dist/wrapper/codex-session.js.map +1 -1
- package/dist/wrapper/debug.d.ts.map +1 -1
- package/dist/wrapper/debug.js +2 -0
- package/dist/wrapper/debug.js.map +1 -1
- package/dist/wrapper/direct-provider-adapter-factory.d.ts +12 -0
- package/dist/wrapper/direct-provider-adapter-factory.d.ts.map +1 -0
- package/dist/wrapper/direct-provider-adapter-factory.js +99 -0
- package/dist/wrapper/direct-provider-adapter-factory.js.map +1 -0
- package/dist/wrapper/index.d.ts +0 -2
- package/dist/wrapper/index.d.ts.map +1 -1
- package/dist/wrapper/index.js +0 -1
- package/dist/wrapper/index.js.map +1 -1
- package/dist/wrapper/opencode-session.d.ts +4 -0
- package/dist/wrapper/opencode-session.d.ts.map +1 -1
- package/dist/wrapper/opencode-session.js +245 -38
- package/dist/wrapper/opencode-session.js.map +1 -1
- package/dist/wrapper/permission-evaluator.d.ts +2 -1
- package/dist/wrapper/permission-evaluator.d.ts.map +1 -1
- package/dist/wrapper/permission-evaluator.js +54 -0
- package/dist/wrapper/permission-evaluator.js.map +1 -1
- package/dist/wrapper/permission-normalizer.d.ts +5 -1
- package/dist/wrapper/permission-normalizer.d.ts.map +1 -1
- package/dist/wrapper/permission-normalizer.js +17 -0
- package/dist/wrapper/permission-normalizer.js.map +1 -1
- package/dist/wrapper/permission-policy-authorizer.d.ts +1 -1
- package/dist/wrapper/permission-policy-authorizer.js +1 -1
- package/dist/wrapper/pooled-harness-session.d.ts +24 -0
- package/dist/wrapper/pooled-harness-session.d.ts.map +1 -0
- package/dist/wrapper/pooled-harness-session.js +123 -0
- package/dist/wrapper/pooled-harness-session.js.map +1 -0
- package/dist/wrapper/preamble-builder.d.ts +4 -1
- package/dist/wrapper/preamble-builder.d.ts.map +1 -1
- package/dist/wrapper/preamble-builder.js +48 -20
- package/dist/wrapper/preamble-builder.js.map +1 -1
- package/dist/wrapper/provider-session.d.ts +25 -5
- package/dist/wrapper/provider-session.d.ts.map +1 -1
- package/dist/wrapper/provider-session.js +562 -138
- package/dist/wrapper/provider-session.js.map +1 -1
- package/dist/wrapper/session-manager.d.ts.map +1 -1
- package/dist/wrapper/session-manager.js +16 -5
- package/dist/wrapper/session-manager.js.map +1 -1
- package/dist/wrapper/session-registry.d.ts +11 -1
- package/dist/wrapper/session-registry.d.ts.map +1 -1
- package/dist/wrapper/session-registry.js +167 -259
- package/dist/wrapper/session-registry.js.map +1 -1
- package/dist/wrapper/session-store.d.ts +33 -10
- package/dist/wrapper/session-store.d.ts.map +1 -1
- package/dist/wrapper/session-store.js +327 -84
- package/dist/wrapper/session-store.js.map +1 -1
- package/dist/wrapper/session.d.ts +55 -2
- package/dist/wrapper/session.d.ts.map +1 -1
- package/dist/wrapper/session.js +11 -2
- package/dist/wrapper/session.js.map +1 -1
- package/package.json +8 -8
- package/dist/application/__tests__/plan-exit-tool.test.d.ts +0 -2
- package/dist/application/__tests__/plan-exit-tool.test.d.ts.map +0 -1
- package/dist/application/__tests__/plan-exit-tool.test.js +0 -12
- package/dist/application/__tests__/plan-exit-tool.test.js.map +0 -1
- package/dist/application/context-governor.d.ts +0 -26
- package/dist/application/context-governor.d.ts.map +0 -1
- package/dist/application/context-governor.js +0 -164
- package/dist/application/context-governor.js.map +0 -1
- package/dist/application/plan-exit-tool.d.ts +0 -19
- package/dist/application/plan-exit-tool.d.ts.map +0 -1
- package/dist/application/plan-exit-tool.js +0 -13
- package/dist/application/plan-exit-tool.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -7
- package/dist/commands/serve.d.ts.map +0 -1
- package/dist/commands/serve.js +0 -24
- package/dist/commands/serve.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -36
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -156
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/transports.d.ts +0 -28
- package/dist/mcp/transports.d.ts.map +0 -1
- package/dist/mcp/transports.js +0 -108
- package/dist/mcp/transports.js.map +0 -1
- package/dist/mcp-entry.d.ts +0 -3
- package/dist/mcp-entry.d.ts.map +0 -1
- package/dist/mcp-entry.js +0 -19
- package/dist/mcp-entry.js.map +0 -1
- package/dist/sync/agent-sync.d.ts +0 -13
- package/dist/sync/agent-sync.d.ts.map +0 -1
- package/dist/sync/agent-sync.js +0 -130
- package/dist/sync/agent-sync.js.map +0 -1
- package/dist/sync/agent-sync.test.d.ts +0 -2
- package/dist/sync/agent-sync.test.d.ts.map +0 -1
- package/dist/sync/agent-sync.test.js +0 -130
- package/dist/sync/agent-sync.test.js.map +0 -1
- package/dist/sync/agents-md-sync.d.ts +0 -7
- package/dist/sync/agents-md-sync.d.ts.map +0 -1
- package/dist/sync/agents-md-sync.js +0 -44
- package/dist/sync/agents-md-sync.js.map +0 -1
- package/dist/sync/agents-md-sync.test.d.ts +0 -2
- package/dist/sync/agents-md-sync.test.d.ts.map +0 -1
- package/dist/sync/agents-md-sync.test.js +0 -154
- package/dist/sync/agents-md-sync.test.js.map +0 -1
- package/dist/sync/hook-sync.d.ts +0 -8
- package/dist/sync/hook-sync.d.ts.map +0 -1
- package/dist/sync/hook-sync.js +0 -90
- package/dist/sync/hook-sync.js.map +0 -1
- package/dist/sync/security-sync.d.ts +0 -9
- package/dist/sync/security-sync.d.ts.map +0 -1
- package/dist/sync/security-sync.js +0 -161
- package/dist/sync/security-sync.js.map +0 -1
- package/dist/sync/skill-sync.d.ts +0 -10
- package/dist/sync/skill-sync.d.ts.map +0 -1
- package/dist/sync/skill-sync.js +0 -87
- package/dist/sync/skill-sync.js.map +0 -1
- package/dist/sync/skill-sync.test.d.ts +0 -2
- package/dist/sync/skill-sync.test.d.ts.map +0 -1
- package/dist/sync/skill-sync.test.js +0 -163
- package/dist/sync/skill-sync.test.js.map +0 -1
- package/dist/wrapper/executable-provider-session.d.ts +0 -26
- package/dist/wrapper/executable-provider-session.d.ts.map +0 -1
- package/dist/wrapper/executable-provider-session.js +0 -214
- package/dist/wrapper/executable-provider-session.js.map +0 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { findInstructionProfile, loadInstructionProfiles, } from "./instruction-profile-loader.js";
|
|
2
|
+
const INSTRUCTION_PROFILE_SCORE = 0.98;
|
|
3
|
+
export function resolveInstructionProfileContextCandidates(input) {
|
|
4
|
+
const requested = selectedInstructionProfileIds(input);
|
|
5
|
+
if (requested.length === 0) {
|
|
6
|
+
return [];
|
|
7
|
+
}
|
|
8
|
+
const available = loadInstructionProfiles(input.projectPath, input.userHome);
|
|
9
|
+
const candidates = [];
|
|
10
|
+
const missing = [];
|
|
11
|
+
for (const name of requested) {
|
|
12
|
+
const profile = findInstructionProfile(available, name);
|
|
13
|
+
if (!profile) {
|
|
14
|
+
missing.push(name);
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
candidates.push(instructionProfileToContextCandidate(profile));
|
|
18
|
+
}
|
|
19
|
+
if (missing.length > 0) {
|
|
20
|
+
const owner = input.agent ? `Agent "${input.agent.name}"` : "Configured session";
|
|
21
|
+
throw new Error(`${owner} references unavailable instruction profile(s): ${missing.join(", ")}`);
|
|
22
|
+
}
|
|
23
|
+
return candidates;
|
|
24
|
+
}
|
|
25
|
+
export function instructionProfileToContextCandidate(profile) {
|
|
26
|
+
return {
|
|
27
|
+
kind: "instruction",
|
|
28
|
+
source: `instruction-profile:${profile.filePath}`,
|
|
29
|
+
required: true,
|
|
30
|
+
score: INSTRUCTION_PROFILE_SCORE,
|
|
31
|
+
content: [
|
|
32
|
+
"Instruction Profile",
|
|
33
|
+
`name: ${profile.name}`,
|
|
34
|
+
profile.displayName ? `displayName: ${profile.displayName}` : undefined,
|
|
35
|
+
profile.description ? `description: ${profile.description}` : undefined,
|
|
36
|
+
`scope: ${profile.scope}`,
|
|
37
|
+
profile.tags && profile.tags.length > 0 ? `tags: ${profile.tags.join(", ")}` : undefined,
|
|
38
|
+
profile.doctrine ? formatDoctrine(profile.doctrine) : undefined,
|
|
39
|
+
"instructions:",
|
|
40
|
+
profile.instructions,
|
|
41
|
+
].filter((line) => line !== undefined).join("\n"),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function formatDoctrine(doctrine) {
|
|
45
|
+
return [
|
|
46
|
+
"doctrine:",
|
|
47
|
+
...formatDoctrineList("principles", doctrine.principles),
|
|
48
|
+
...formatDoctrineList("workflow", doctrine.workflow),
|
|
49
|
+
...formatDoctrineList("qualityGates", doctrine.qualityGates),
|
|
50
|
+
...formatDoctrineList("reviewPosture", doctrine.reviewPosture),
|
|
51
|
+
...formatDoctrineList("delegation", doctrine.delegation),
|
|
52
|
+
].join("\n");
|
|
53
|
+
}
|
|
54
|
+
function formatDoctrineList(label, values) {
|
|
55
|
+
if (!values || values.length === 0) {
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
return [
|
|
59
|
+
`${label}:`,
|
|
60
|
+
...values.map((value) => `- ${value}`),
|
|
61
|
+
];
|
|
62
|
+
}
|
|
63
|
+
function selectedInstructionProfileIds(input) {
|
|
64
|
+
return unique([
|
|
65
|
+
...(input.globalConfig?.activeInstructionProfiles ?? []),
|
|
66
|
+
...(input.projectConfig?.activeInstructionProfiles ?? []),
|
|
67
|
+
...(input.agent?.instructionProfiles ?? []),
|
|
68
|
+
]);
|
|
69
|
+
}
|
|
70
|
+
function unique(values) {
|
|
71
|
+
const seen = new Set();
|
|
72
|
+
for (const value of values) {
|
|
73
|
+
const normalized = value.trim();
|
|
74
|
+
if (normalized.length > 0) {
|
|
75
|
+
seen.add(normalized);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return [...seen];
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=instruction-profile-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruction-profile-context.js","sourceRoot":"","sources":["../../src/application/instruction-profile-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface KilnInstructionProfileDefinition {
|
|
2
|
+
readonly name: string;
|
|
3
|
+
readonly displayName?: string;
|
|
4
|
+
readonly description?: string;
|
|
5
|
+
readonly tags?: readonly string[];
|
|
6
|
+
readonly doctrine?: KilnInstructionDoctrineDefinition;
|
|
7
|
+
readonly instructions: string;
|
|
8
|
+
readonly filePath: string;
|
|
9
|
+
readonly scope: "global" | "project";
|
|
10
|
+
}
|
|
11
|
+
export interface KilnInstructionDoctrineDefinition {
|
|
12
|
+
readonly principles?: readonly string[];
|
|
13
|
+
readonly workflow?: readonly string[];
|
|
14
|
+
readonly qualityGates?: readonly string[];
|
|
15
|
+
readonly reviewPosture?: readonly string[];
|
|
16
|
+
readonly delegation?: readonly string[];
|
|
17
|
+
}
|
|
18
|
+
export declare function loadInstructionProfiles(projectPath: string, userHome?: string): readonly KilnInstructionProfileDefinition[];
|
|
19
|
+
export declare function findInstructionProfile(profiles: readonly KilnInstructionProfileDefinition[], name: string): KilnInstructionProfileDefinition | undefined;
|
|
20
|
+
//# sourceMappingURL=instruction-profile-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruction-profile-loader.d.ts","sourceRoot":"","sources":["../../src/application/instruction-profile-loader.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,iCAAiC,CAAC;IACtD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAqID,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,SAAY,GACnB,SAAS,gCAAgC,EAAE,CAa7C;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,gCAAgC,EAAE,EACrD,IAAI,EAAE,MAAM,GACX,gCAAgC,GAAG,SAAS,CAM9C"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { readdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { parse } from "yaml";
|
|
5
|
+
function parseFrontmatter(raw) {
|
|
6
|
+
const content = raw.replace(/^\uFEFF/, "");
|
|
7
|
+
const match = /^---\s*\r?\n([\s\S]*?)\r?\n---\s*([\s\S]*)$/u.exec(content);
|
|
8
|
+
if (!match) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
frontmatter: match[1] ?? "",
|
|
13
|
+
body: (match[2] ?? "").trim(),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function asNonEmptyString(value) {
|
|
17
|
+
if (typeof value !== "string") {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const trimmed = value.trim();
|
|
21
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
22
|
+
}
|
|
23
|
+
function asStringArray(value) {
|
|
24
|
+
if (!Array.isArray(value)) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
const values = value
|
|
28
|
+
.filter((entry) => typeof entry === "string")
|
|
29
|
+
.map((entry) => entry.trim())
|
|
30
|
+
.filter((entry) => entry.length > 0);
|
|
31
|
+
return values.length > 0 ? [...new Set(values)] : undefined;
|
|
32
|
+
}
|
|
33
|
+
function asDoctrine(value) {
|
|
34
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
const record = value;
|
|
38
|
+
const principles = asStringArray(record.principles);
|
|
39
|
+
const workflow = asStringArray(record.workflow);
|
|
40
|
+
const qualityGates = asStringArray(record.qualityGates);
|
|
41
|
+
const reviewPosture = asStringArray(record.reviewPosture);
|
|
42
|
+
const delegation = asStringArray(record.delegation);
|
|
43
|
+
const doctrine = {
|
|
44
|
+
...(principles ? { principles } : {}),
|
|
45
|
+
...(workflow ? { workflow } : {}),
|
|
46
|
+
...(qualityGates ? { qualityGates } : {}),
|
|
47
|
+
...(reviewPosture ? { reviewPosture } : {}),
|
|
48
|
+
...(delegation ? { delegation } : {}),
|
|
49
|
+
};
|
|
50
|
+
return Object.keys(doctrine).length > 0 ? doctrine : undefined;
|
|
51
|
+
}
|
|
52
|
+
function parseInstructionProfile(raw, filePath, scope) {
|
|
53
|
+
const parsed = parseFrontmatter(raw);
|
|
54
|
+
if (!parsed) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
let frontmatter;
|
|
58
|
+
try {
|
|
59
|
+
frontmatter = parse(parsed.frontmatter);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
if (!frontmatter || typeof frontmatter !== "object") {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
const record = frontmatter;
|
|
68
|
+
const name = asNonEmptyString(record.name);
|
|
69
|
+
if (!name || parsed.body.length === 0) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
const displayName = asNonEmptyString(record.displayName);
|
|
73
|
+
const description = asNonEmptyString(record.description);
|
|
74
|
+
const tags = asStringArray(record.tags);
|
|
75
|
+
const doctrine = asDoctrine(record.doctrine);
|
|
76
|
+
return {
|
|
77
|
+
name,
|
|
78
|
+
...(displayName ? { displayName } : {}),
|
|
79
|
+
...(description ? { description } : {}),
|
|
80
|
+
...(tags ? { tags } : {}),
|
|
81
|
+
...(doctrine ? { doctrine } : {}),
|
|
82
|
+
instructions: parsed.body,
|
|
83
|
+
filePath,
|
|
84
|
+
scope,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function readProfilesFromDirectory(directory, scope) {
|
|
88
|
+
let entries;
|
|
89
|
+
try {
|
|
90
|
+
entries = readdirSync(directory);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
const profiles = [];
|
|
96
|
+
for (const entry of entries) {
|
|
97
|
+
if (!entry.toLowerCase().endsWith(".md")) {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const filePath = join(directory, entry);
|
|
101
|
+
try {
|
|
102
|
+
const profile = parseInstructionProfile(readFileSync(filePath, "utf-8"), filePath, scope);
|
|
103
|
+
if (profile) {
|
|
104
|
+
profiles.push(profile);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// Skip unreadable profiles. Missing selected profiles fail closed later.
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return profiles;
|
|
112
|
+
}
|
|
113
|
+
export function loadInstructionProfiles(projectPath, userHome = homedir()) {
|
|
114
|
+
const globalDirectory = join(userHome, ".kiln", "instructions");
|
|
115
|
+
const projectDirectory = join(projectPath, ".kiln", "instructions");
|
|
116
|
+
const merged = new Map();
|
|
117
|
+
for (const profile of readProfilesFromDirectory(globalDirectory, "global")) {
|
|
118
|
+
merged.set(profile.name.toLowerCase(), profile);
|
|
119
|
+
}
|
|
120
|
+
for (const profile of readProfilesFromDirectory(projectDirectory, "project")) {
|
|
121
|
+
merged.set(profile.name.toLowerCase(), profile);
|
|
122
|
+
}
|
|
123
|
+
return [...merged.values()];
|
|
124
|
+
}
|
|
125
|
+
export function findInstructionProfile(profiles, name) {
|
|
126
|
+
const target = name.trim().toLowerCase();
|
|
127
|
+
if (!target) {
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
return profiles.find((profile) => profile.name.toLowerCase() === target);
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=instruction-profile-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruction-profile-loader.js","sourceRoot":"","sources":["../../src/application/instruction-profile-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruction-profile-loader.test.d.ts","sourceRoot":"","sources":["../../src/application/instruction-profile-loader.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
5
|
+
import { findInstructionProfile, loadInstructionProfiles, } from "./instruction-profile-loader.js";
|
|
6
|
+
import { resolveInstructionProfileContextCandidates } from "./instruction-profile-context.js";
|
|
7
|
+
let root;
|
|
8
|
+
function profile(frontmatter, body) {
|
|
9
|
+
return `---\n${frontmatter}\n---\n${body}`;
|
|
10
|
+
}
|
|
11
|
+
function writeProfile(base, name, content) {
|
|
12
|
+
const dir = join(base, ".kiln", "instructions");
|
|
13
|
+
mkdirSync(dir, { recursive: true });
|
|
14
|
+
writeFileSync(join(dir, `${name}.md`), content, "utf-8");
|
|
15
|
+
}
|
|
16
|
+
describe("instruction profile loader", () => {
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
root = mkdtempSync(join(tmpdir(), "kiln-instructions-"));
|
|
19
|
+
});
|
|
20
|
+
afterEach(() => {
|
|
21
|
+
rmSync(root, { recursive: true, force: true });
|
|
22
|
+
});
|
|
23
|
+
it("loads global and project profiles with project overrides", () => {
|
|
24
|
+
const userHome = join(root, "home");
|
|
25
|
+
const projectPath = join(root, "project");
|
|
26
|
+
writeProfile(userHome, "sequel", profile([
|
|
27
|
+
"name: sequel-engineering",
|
|
28
|
+
"displayName: Sequel Engineering",
|
|
29
|
+
"description: Global engineering doctrine",
|
|
30
|
+
"tags:",
|
|
31
|
+
" - engineering",
|
|
32
|
+
"doctrine:",
|
|
33
|
+
" principles:",
|
|
34
|
+
" - No dead code.",
|
|
35
|
+
" - No redundancy.",
|
|
36
|
+
" workflow:",
|
|
37
|
+
" - Scout before broad changes.",
|
|
38
|
+
" qualityGates:",
|
|
39
|
+
" - Verify before claiming complete.",
|
|
40
|
+
" reviewPosture:",
|
|
41
|
+
" - Findings before summaries.",
|
|
42
|
+
" delegation:",
|
|
43
|
+
" - Delegate architecture-sensitive work to specialist profiles.",
|
|
44
|
+
].join("\n"), "\nNo dead code.\n"));
|
|
45
|
+
writeProfile(projectPath, "sequel", profile([
|
|
46
|
+
"name: sequel-engineering",
|
|
47
|
+
"description: Project override",
|
|
48
|
+
].join("\n"), "\nDDD first.\n"));
|
|
49
|
+
const loaded = loadInstructionProfiles(projectPath, userHome);
|
|
50
|
+
expect(loaded).toHaveLength(1);
|
|
51
|
+
expect(findInstructionProfile(loaded, "SEQUEL-ENGINEERING")).toMatchObject({
|
|
52
|
+
name: "sequel-engineering",
|
|
53
|
+
description: "Project override",
|
|
54
|
+
instructions: "DDD first.",
|
|
55
|
+
scope: "project",
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
it("resolves selected profiles as required governed instruction context with structured doctrine", () => {
|
|
59
|
+
const userHome = join(root, "home");
|
|
60
|
+
const projectPath = join(root, "project");
|
|
61
|
+
writeProfile(userHome, "sequel", profile([
|
|
62
|
+
"name: sequel-engineering",
|
|
63
|
+
"doctrine:",
|
|
64
|
+
" principles:",
|
|
65
|
+
" - No dead code.",
|
|
66
|
+
" workflow:",
|
|
67
|
+
" - Use TDD for behavior changes.",
|
|
68
|
+
" qualityGates:",
|
|
69
|
+
" - Run focused tests before broad gates.",
|
|
70
|
+
].join("\n"), "\nTDD before implementation.\n"));
|
|
71
|
+
const candidates = resolveInstructionProfileContextCandidates({
|
|
72
|
+
projectPath,
|
|
73
|
+
userHome,
|
|
74
|
+
globalConfig: {
|
|
75
|
+
version: "1",
|
|
76
|
+
activeInstructionProfiles: ["sequel-engineering"],
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
expect(candidates).toHaveLength(1);
|
|
80
|
+
expect(candidates[0]?.kind).toBe("instruction");
|
|
81
|
+
expect(candidates[0]?.required).toBe(true);
|
|
82
|
+
expect(candidates[0]?.source).toContain("sequel.md");
|
|
83
|
+
expect(candidates[0]?.content).toContain("Instruction Profile\nname: sequel-engineering");
|
|
84
|
+
expect(candidates[0]?.content).toContain("doctrine:\nprinciples:\n- No dead code.");
|
|
85
|
+
expect(candidates[0]?.content).toContain("workflow:\n- Use TDD for behavior changes.");
|
|
86
|
+
expect(candidates[0]?.content).toContain("qualityGates:\n- Run focused tests before broad gates.");
|
|
87
|
+
expect(String(candidates[0]?.content)).toContain("TDD before implementation.");
|
|
88
|
+
});
|
|
89
|
+
it("fails closed when selected profiles are unavailable", () => {
|
|
90
|
+
expect(() => resolveInstructionProfileContextCandidates({
|
|
91
|
+
projectPath: join(root, "project"),
|
|
92
|
+
userHome: join(root, "home"),
|
|
93
|
+
globalConfig: {
|
|
94
|
+
version: "1",
|
|
95
|
+
activeInstructionProfiles: ["missing"],
|
|
96
|
+
},
|
|
97
|
+
})).toThrow("Configured session references unavailable instruction profile(s): missing");
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=instruction-profile-loader.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruction-profile-loader.test.js","sourceRoot":"","sources":["../../src/application/instruction-profile-loader.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type OperatorThemeName } from "@kilnai/gateway-contracts";
|
|
2
|
+
import { type KilnGlobalConfig } from "../config/global-config.js";
|
|
3
|
+
import type { OperatorSurfaceThemeController } from "@kilnai/runtime";
|
|
4
|
+
export type OperatorThemePreference = OperatorThemeName;
|
|
5
|
+
export declare function parseOperatorThemePreference(theme: string | undefined): OperatorThemePreference | undefined;
|
|
6
|
+
export declare function resolveGuiThemePreference(requestedTheme: string | undefined, globalConfig: KilnGlobalConfig | null): OperatorThemePreference;
|
|
7
|
+
export declare function persistGuiThemePreference(theme: string, configOverride?: KilnGlobalConfig | null): void;
|
|
8
|
+
export declare function persistTuiThemePreference(theme: string, configOverride?: KilnGlobalConfig | null): void;
|
|
9
|
+
export declare function persistOperatorThemePreference(theme: string, configOverride?: KilnGlobalConfig | null): void;
|
|
10
|
+
export declare function createCliOperatorThemeController(): OperatorSurfaceThemeController;
|
|
11
|
+
//# sourceMappingURL=operator-theme-preferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operator-theme-preferences.d.ts","sourceRoot":"","sources":["../../src/application/operator-theme-preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,iBAAiB,EAA2B,MAAM,2BAA2B,CAAC;AACjH,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAEtE,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAExD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,uBAAuB,GAAG,SAAS,CAE3G;AAED,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,EAAE,gBAAgB,GAAG,IAAI,GACpC,uBAAuB,CAMzB;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,gBAAgB,GAAG,IAAI,GACvC,IAAI,CAEN;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,gBAAgB,GAAG,IAAI,GACvC,IAAI,CAEN;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,gBAAgB,GAAG,IAAI,GACvC,IAAI,CAaN;AAED,wBAAgB,gCAAgC,IAAI,8BAA8B,CAqBjF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { isOperatorThemeName } from "@kilnai/gateway-contracts";
|
|
2
|
+
import { defaultGlobalConfig, readGlobalConfig, resolveGlobalUiTheme, writeGlobalConfig, } from "../config/global-config.js";
|
|
3
|
+
export function parseOperatorThemePreference(theme) {
|
|
4
|
+
return isOperatorThemeName(theme) ? theme : undefined;
|
|
5
|
+
}
|
|
6
|
+
export function resolveGuiThemePreference(requestedTheme, globalConfig) {
|
|
7
|
+
return (parseOperatorThemePreference(requestedTheme)
|
|
8
|
+
?? parseOperatorThemePreference(resolveGlobalUiTheme(globalConfig))
|
|
9
|
+
?? "kiln-dark");
|
|
10
|
+
}
|
|
11
|
+
export function persistGuiThemePreference(theme, configOverride) {
|
|
12
|
+
persistOperatorThemePreference(theme, configOverride);
|
|
13
|
+
}
|
|
14
|
+
export function persistTuiThemePreference(theme, configOverride) {
|
|
15
|
+
persistOperatorThemePreference(theme, configOverride);
|
|
16
|
+
}
|
|
17
|
+
export function persistOperatorThemePreference(theme, configOverride) {
|
|
18
|
+
const resolvedTheme = parseOperatorThemePreference(theme);
|
|
19
|
+
if (!resolvedTheme) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const current = configOverride ?? readGlobalConfig() ?? defaultGlobalConfig();
|
|
23
|
+
writeGlobalConfig({
|
|
24
|
+
...current,
|
|
25
|
+
ui: {
|
|
26
|
+
...current.ui,
|
|
27
|
+
theme: resolvedTheme,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export function createCliOperatorThemeController() {
|
|
32
|
+
return {
|
|
33
|
+
async setTheme(input) {
|
|
34
|
+
const resolvedTheme = parseOperatorThemePreference(input.theme);
|
|
35
|
+
if (!resolvedTheme) {
|
|
36
|
+
return { ok: false, error: `Unknown operator theme '${input.theme}'.` };
|
|
37
|
+
}
|
|
38
|
+
if (input.scope !== "persisted") {
|
|
39
|
+
return {
|
|
40
|
+
ok: false,
|
|
41
|
+
error: "The CLI has no live visual theme surface. Use scope='persisted' to update GUI and TUI defaults.",
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
persistOperatorThemePreference(resolvedTheme);
|
|
45
|
+
return { ok: true, appliedTheme: resolvedTheme };
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=operator-theme-preferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operator-theme-preferences.js","sourceRoot":"","sources":["../../src/application/operator-theme-preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAmD,MAAM,2BAA2B,CAAC;AACjH,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAElB,MAAM,4BAA4B,CAAC;AAKpC,MAAM,UAAU,4BAA4B,CAAC,KAAyB;IACpE,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,cAAkC,EAClC,YAAqC;IAErC,OAAO,CACL,4BAA4B,CAAC,cAAc,CAAC;WACzC,4BAA4B,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;WAChE,WAAW,CACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAAa,EACb,cAAwC;IAExC,8BAA8B,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAAa,EACb,cAAwC;IAExC,8BAA8B,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,KAAa,EACb,cAAwC;IAExC,MAAM,aAAa,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,IAAI,gBAAgB,EAAE,IAAI,mBAAmB,EAAE,CAAC;IAC9E,iBAAiB,CAAC;QAChB,GAAG,OAAO;QACV,EAAE,EAAE;YACF,GAAG,OAAO,CAAC,EAAE;YACb,KAAK,EAAE,aAAa;SACrB;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,KAId;YACC,MAAM,aAAa,GAAG,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1E,CAAC;YACD,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,iGAAiG;iBACzG,CAAC;YACJ,CAAC;YACD,8BAA8B,CAAC,aAAa,CAAC,CAAC;YAC9C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;QACnD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface ProjectContextEvidence {
|
|
2
|
+
readonly projectName: string;
|
|
3
|
+
readonly packageManager: string | null;
|
|
4
|
+
readonly scripts: readonly [string, string][];
|
|
5
|
+
readonly workspacePackages: readonly string[];
|
|
6
|
+
readonly docs: readonly string[];
|
|
7
|
+
}
|
|
8
|
+
export interface ProjectContextAdoptionResult {
|
|
9
|
+
readonly written: boolean;
|
|
10
|
+
readonly path: string;
|
|
11
|
+
readonly status: "written" | "blocked" | "unchanged";
|
|
12
|
+
readonly errors: readonly string[];
|
|
13
|
+
}
|
|
14
|
+
export interface ProjectContextAdoptionOptions {
|
|
15
|
+
readonly force?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function projectContextPath(projectPath: string): string;
|
|
18
|
+
export declare function collectProjectContextEvidence(projectPath: string): ProjectContextEvidence;
|
|
19
|
+
export declare function renderProjectContextMarkdown(evidence: ProjectContextEvidence): string;
|
|
20
|
+
export declare function readProjectContextMarkdown(projectPath: string): string | null;
|
|
21
|
+
export declare function writeProjectContextAdoption(projectPath: string, options?: ProjectContextAdoptionOptions): ProjectContextAdoptionResult;
|
|
22
|
+
//# sourceMappingURL=project-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-context.d.ts","sourceRoot":"","sources":["../../src/application/project-context.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC9C,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAcD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,MAAM,GAAG,sBAAsB,CAezF;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,sBAAsB,GAAG,MAAM,CAyDrF;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM7E;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,6BAAkC,GAC1C,4BAA4B,CA0B9B"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { basename, join } from "node:path";
|
|
3
|
+
import { stringify } from "yaml";
|
|
4
|
+
const PROJECT_CONTEXT_PATH = ".kiln/project-context.md";
|
|
5
|
+
export function projectContextPath(projectPath) {
|
|
6
|
+
return join(projectPath, PROJECT_CONTEXT_PATH);
|
|
7
|
+
}
|
|
8
|
+
export function collectProjectContextEvidence(projectPath) {
|
|
9
|
+
const packageJson = readPackageJson(projectPath);
|
|
10
|
+
return {
|
|
11
|
+
projectName: packageJson?.name ?? basename(projectPath),
|
|
12
|
+
packageManager: detectPackageManager(projectPath),
|
|
13
|
+
scripts: Object.entries(packageJson?.scripts ?? {}).sort(([left], [right]) => left.localeCompare(right)),
|
|
14
|
+
workspacePackages: readWorkspacePackages(packageJson),
|
|
15
|
+
docs: [
|
|
16
|
+
"README.md",
|
|
17
|
+
"docs/architecture/README.md",
|
|
18
|
+
"docs/architecture/engineering-standards.md",
|
|
19
|
+
"docs/research/README.md",
|
|
20
|
+
"docs/roadmap/README.md",
|
|
21
|
+
].filter((relativePath) => existsSync(join(projectPath, relativePath))),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export function renderProjectContextMarkdown(evidence) {
|
|
25
|
+
const frontmatter = {
|
|
26
|
+
version: "1",
|
|
27
|
+
source: "deterministic-repo-scout",
|
|
28
|
+
projectName: evidence.projectName,
|
|
29
|
+
...(evidence.packageManager ? { packageManager: evidence.packageManager } : {}),
|
|
30
|
+
...(evidence.scripts.length > 0 ? { scripts: Object.fromEntries(evidence.scripts) } : {}),
|
|
31
|
+
...(evidence.workspacePackages.length > 0 ? { workspacePackages: evidence.workspacePackages } : {}),
|
|
32
|
+
...(evidence.docs.length > 0 ? { canonicalDocs: evidence.docs } : {}),
|
|
33
|
+
};
|
|
34
|
+
const lines = [
|
|
35
|
+
"---",
|
|
36
|
+
stringify(frontmatter).trim(),
|
|
37
|
+
"---",
|
|
38
|
+
"",
|
|
39
|
+
"# Project Context",
|
|
40
|
+
"",
|
|
41
|
+
"This file is canonical Kiln project context. Edit this file or regenerate it",
|
|
42
|
+
"through `kiln project adopt`; do not put durable repo guidance directly in",
|
|
43
|
+
"`AGENTS.md` or `CLAUDE.md`.",
|
|
44
|
+
"",
|
|
45
|
+
"## Project",
|
|
46
|
+
"",
|
|
47
|
+
`- Name: ${evidence.projectName}`,
|
|
48
|
+
];
|
|
49
|
+
if (evidence.packageManager) {
|
|
50
|
+
lines.push(`- Package manager: ${evidence.packageManager}`);
|
|
51
|
+
}
|
|
52
|
+
if (evidence.workspacePackages.length > 0) {
|
|
53
|
+
lines.push(...evidence.workspacePackages.map((workspacePackage) => `- Workspace package: \`${workspacePackage}\``));
|
|
54
|
+
}
|
|
55
|
+
if (evidence.scripts.length > 0) {
|
|
56
|
+
lines.push("", "## Commands", "");
|
|
57
|
+
for (const [name, command] of evidence.scripts) {
|
|
58
|
+
lines.push(`- \`${name}\`: \`${command}\``);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (evidence.docs.length > 0) {
|
|
62
|
+
lines.push("", "## Canonical References", "");
|
|
63
|
+
lines.push(...evidence.docs.map((doc) => `- ${doc}`));
|
|
64
|
+
}
|
|
65
|
+
lines.push("", "## Agent Review Notes", "", "Add governed repo-specific notes here after review. Keep them factual,", "durable, and backed by repository evidence.", "");
|
|
66
|
+
return lines.join("\n");
|
|
67
|
+
}
|
|
68
|
+
export function readProjectContextMarkdown(projectPath) {
|
|
69
|
+
const path = projectContextPath(projectPath);
|
|
70
|
+
if (!existsSync(path)) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return readFileSync(path, "utf-8");
|
|
74
|
+
}
|
|
75
|
+
export function writeProjectContextAdoption(projectPath, options = {}) {
|
|
76
|
+
const path = projectContextPath(projectPath);
|
|
77
|
+
const evidence = collectProjectContextEvidence(projectPath);
|
|
78
|
+
const content = renderProjectContextMarkdown(evidence);
|
|
79
|
+
const existing = existsSync(path) ? readFileSync(path, "utf-8") : null;
|
|
80
|
+
if (existing === content) {
|
|
81
|
+
return { written: false, path, status: "unchanged", errors: [] };
|
|
82
|
+
}
|
|
83
|
+
if (existing && !options.force) {
|
|
84
|
+
return {
|
|
85
|
+
written: false,
|
|
86
|
+
path,
|
|
87
|
+
status: "blocked",
|
|
88
|
+
errors: [`${PROJECT_CONTEXT_PATH}: existing project context differs; review it or rerun with --force`],
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (existing && options.force) {
|
|
92
|
+
backupProjectContext(projectPath, existing);
|
|
93
|
+
}
|
|
94
|
+
mkdirSync(join(projectPath, ".kiln"), { recursive: true });
|
|
95
|
+
writeFileSync(path, content, "utf-8");
|
|
96
|
+
return { written: true, path, status: "written", errors: [] };
|
|
97
|
+
}
|
|
98
|
+
function readPackageJson(projectPath) {
|
|
99
|
+
const path = join(projectPath, "package.json");
|
|
100
|
+
if (!existsSync(path)) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
return JSON.parse(readFileSync(path, "utf-8"));
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function readWorkspacePackages(packageJson) {
|
|
111
|
+
const workspaces = packageJson?.workspaces;
|
|
112
|
+
if (Array.isArray(workspaces)) {
|
|
113
|
+
return workspaces.filter((entry) => typeof entry === "string").sort();
|
|
114
|
+
}
|
|
115
|
+
if (typeof workspaces === "object" && workspaces !== null && Array.isArray(workspaces.packages)) {
|
|
116
|
+
return workspaces.packages
|
|
117
|
+
.filter((entry) => typeof entry === "string")
|
|
118
|
+
.sort();
|
|
119
|
+
}
|
|
120
|
+
return [];
|
|
121
|
+
}
|
|
122
|
+
function detectPackageManager(projectPath) {
|
|
123
|
+
if (existsSync(join(projectPath, "bun.lock")) || existsSync(join(projectPath, "bun.lockb")))
|
|
124
|
+
return "bun";
|
|
125
|
+
if (existsSync(join(projectPath, "pnpm-lock.yaml")))
|
|
126
|
+
return "pnpm";
|
|
127
|
+
if (existsSync(join(projectPath, "yarn.lock")))
|
|
128
|
+
return "yarn";
|
|
129
|
+
if (existsSync(join(projectPath, "package-lock.json")))
|
|
130
|
+
return "npm";
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
function backupProjectContext(projectPath, content) {
|
|
134
|
+
const backupDir = join(projectPath, ".kiln", "backups", "project-context");
|
|
135
|
+
mkdirSync(backupDir, { recursive: true });
|
|
136
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
137
|
+
writeFileSync(join(backupDir, `project-context.md.${timestamp}.bak`), content, "utf-8");
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=project-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-context.js","sourceRoot":"","sources":["../../src/application/project-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type ProjectRootSource = "kiln-yaml" | "git" | "explicit" | "cwd";
|
|
2
|
+
export interface ProjectRootResolution {
|
|
3
|
+
readonly rootPath: string;
|
|
4
|
+
readonly source: ProjectRootSource;
|
|
5
|
+
readonly hasKilnYaml: boolean;
|
|
6
|
+
readonly hasGitRoot: boolean;
|
|
7
|
+
readonly projectName: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ResolveProjectRootOptions {
|
|
10
|
+
readonly cwd?: string;
|
|
11
|
+
readonly explicitPath?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function resolveProjectRoot(options?: ResolveProjectRootOptions): ProjectRootResolution;
|
|
14
|
+
//# sourceMappingURL=project-root-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-root-resolver.d.ts","sourceRoot":"","sources":["../../src/application/project-root-resolver.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;AAEzE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,qBAAqB,CAiCjG"}
|