@joshuafolkken/kit 1.1455.0 → 1.1514.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/.claude/settings.json +6 -6
- package/.claude/skills/dependency-update/SKILL.md +26 -55
- package/.claude/skills/epic-commands/SKILL.md +83 -156
- package/.claude/skills/epic-commands/epic-bundle.md +51 -79
- package/.claude/skills/epic-commands/execution-waves.md +43 -81
- package/.claude/skills/verify-ui/SKILL.md +24 -50
- package/.claude/skills/workflow-commands/SKILL.md +7 -9
- package/.claude/skills/workflow-commands/background-commands.md +31 -46
- package/.claude/skills/workflow-commands/backlogrun-child.md +65 -85
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +86 -125
- package/.claude/skills/workflow-commands/backlogrun-park.md +68 -118
- package/.claude/skills/workflow-commands/backlogrun-progress.md +17 -28
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +17 -26
- package/.claude/skills/workflow-commands/backlogrun-steps.md +35 -52
- package/.claude/skills/workflow-commands/backlogrun.md +31 -50
- package/.claude/skills/workflow-commands/chain-rule.md +31 -40
- package/.claude/skills/workflow-commands/delegation.md +12 -8
- package/.claude/skills/workflow-commands/entry-sequence.md +1 -3
- package/.claude/skills/workflow-commands/followup.md +55 -77
- package/.claude/skills/workflow-commands/fullrun-steps.md +3 -5
- package/.claude/skills/workflow-commands/fullrun.md +4 -6
- package/.claude/skills/workflow-commands/halfrun.md +3 -7
- package/.claude/skills/workflow-commands/into-target.md +1 -2
- package/.claude/skills/workflow-commands/issue-comments.md +43 -60
- package/.claude/skills/workflow-commands/issue-scout.md +3 -2
- package/.claude/skills/workflow-commands/kickoff.md +65 -74
- package/.claude/skills/workflow-commands/latest-gate.md +2 -6
- package/.claude/skills/workflow-commands/needs-human-review.md +2 -5
- package/.claude/skills/workflow-commands/observation-filing.md +59 -118
- package/.claude/skills/workflow-commands/observation-ledger.md +52 -112
- package/.claude/skills/workflow-commands/pre-gate-cut.md +88 -142
- package/.claude/skills/workflow-commands/prerequisite.md +11 -17
- package/.claude/skills/workflow-commands/progress-watcher.md +23 -33
- package/.claude/skills/workflow-commands/prrun.md +3 -5
- package/.claude/skills/workflow-commands/retrospective.md +35 -54
- package/.claude/skills/workflow-commands/split-assessment.md +32 -58
- package/.claude/skills/workflow-commands/target-repository.md +1 -2
- package/.claude/skills/workflow-commands/working-tree-hold.md +54 -73
- package/.codex/hooks.json +6 -6
- package/.github/actions/setup-node/action.yml +1 -1
- package/.github/workflows/ci.yml +1 -1
- package/.github/workflows/publish.yml +2 -2
- package/CLAUDE.md +7 -6
- package/cspell/index.yaml +7 -0
- package/dist/CLAUDE.md +7 -6
- package/dist/commands/document-section-cli.js +67 -34
- package/dist/hooks/batch-guard.js +6 -6
- package/dist/hooks/chunk-4KKD2UTK.js +66 -0
- package/dist/hooks/{chunk-GPLGZ6IC.js → chunk-6TS2JD6D.js} +14 -3
- package/dist/hooks/chunk-7DSBJVFH.js +50 -0
- package/dist/hooks/{chunk-5H4SSDSD.js → chunk-A65Y4YOR.js} +3 -3
- package/dist/hooks/{chunk-3C4XRYG6.js → chunk-APUO6U4J.js} +102 -19
- package/dist/hooks/{chunk-IX6TTTI6.js → chunk-EFXE6C37.js} +8 -22
- package/dist/hooks/chunk-GP4IEC4O.js +20 -0
- package/dist/hooks/chunk-JP45SOCJ.js +56 -0
- package/dist/hooks/{chunk-OLMO72ON.js → chunk-LAOV7NLM.js} +1 -1
- package/dist/hooks/chunk-M4HGZV7U.js +83 -0
- package/dist/hooks/{chunk-TBJFTSUY.js → chunk-O6GDRNJB.js} +9 -7
- package/dist/hooks/{chunk-HFGWYGUV.js → chunk-PF2NZL2A.js} +5 -5
- package/dist/hooks/{chunk-WNLVGT7E.js → chunk-PTICX4OL.js} +4 -5
- package/dist/hooks/{chunk-HHI6FO3R.js → chunk-RT27QRJW.js} +763 -1515
- package/dist/hooks/{chunk-7WQBPLUN.js → chunk-SYOTDYCI.js} +1149 -1095
- package/dist/hooks/{chunk-LIAFCXL7.js → chunk-TNUMY6NL.js} +1519 -1332
- package/dist/hooks/chunk-UPUZF3AN.js +279 -0
- package/dist/hooks/{chunk-Z4XI7CZS.js → chunk-WK6SMBIC.js} +1932 -784
- package/dist/hooks/codex-hook-adapter.js +17 -14
- package/dist/hooks/duplicate-read-guard.js +7 -7
- package/dist/hooks/format-edited.js +5 -4
- package/dist/hooks/inputs.json +302 -247
- package/dist/hooks/investigation-guard.js +8 -11
- package/dist/hooks/pretool-guard.js +16 -13
- package/dist/hooks/session-lang.js +372 -26
- package/dist/hooks/stop-guard.js +2593 -189
- package/dist/josh.js +2128 -282
- package/dist/managed-marker/index.js +1 -2
- package/dist/version/index.js +15 -12
- package/eslint/base.js +2 -1
- package/eslint/rules/unicorn.js +16 -0
- package/lefthook/base.yml +5 -3
- package/package.json +14 -12
- package/prompts/coding-standards.md +12 -22
- package/prompts/collaboration-workflow/file-edits.md +25 -45
- package/prompts/collaboration-workflow/gh-rest.md +19 -36
- package/prompts/collaboration-workflow/glossary.md +5 -7
- package/prompts/collaboration-workflow/issue-citation.md +6 -14
- package/prompts/collaboration-workflow/issue-template.md +40 -32
- package/prompts/collaboration-workflow/lane-instructions.md +35 -0
- package/prompts/collaboration-workflow/operating-rules.md +33 -46
- package/prompts/collaboration-workflow/output-bounds.md +15 -15
- package/prompts/collaboration-workflow/overview.md +14 -19
- package/prompts/collaboration-workflow/plan-comment.md +13 -13
- package/prompts/collaboration-workflow/principles.md +57 -54
- package/prompts/collaboration-workflow/proposal-request.md +1 -9
- package/prompts/collaboration-workflow/report-format.md +41 -49
- package/prompts/collaboration-workflow/residency.md +15 -11
- package/prompts/collaboration-workflow/rule-delivery.md +7 -15
- package/prompts/collaboration-workflow/shell-body.md +10 -20
- package/prompts/collaboration-workflow/turn-batching.md +8 -14
- package/prompts/collaboration-workflow/upstream-interrupt.md +26 -34
- package/prompts/collaboration-workflow/wip-cap.md +26 -32
- package/prompts/collaboration-workflow.md +25 -25
- package/prompts/refactoring.md +33 -43
- package/prompts/review-rubric.md +84 -129
- package/prompts/review.md +110 -141
- package/prompts/sonar-hotspot-handling.md +22 -50
- package/prompts/testing-guide.md +48 -99
- package/scripts/adopt/adopt-toolkits.ts +2 -4
- package/scripts/agent/agent-argv.ts +20 -4
- package/scripts/agent/agent-exit-record.ts +23 -1
- package/scripts/agent/agent-role-profile.ts +101 -45
- package/scripts/agent/agent-safe-text.ts +60 -0
- package/scripts/agent/claude-agent-argv.ts +14 -0
- package/scripts/agent/codex-agent-argv.ts +9 -2
- package/scripts/agent/lane-instructions.ts +144 -0
- package/scripts/backlog/backlog-budget-cli.ts +1 -2
- package/scripts/backlog/backlog-budget.ts +4 -4
- package/scripts/backlog/backlog-drive-carried.ts +26 -0
- package/scripts/backlog/backlog-drive-cli.ts +10 -5
- package/scripts/backlog/backlog-drive-named.ts +3 -5
- package/scripts/backlog/backlog-drive-restore.ts +28 -2
- package/scripts/backlog/backlog-drive-seats.ts +27 -0
- package/scripts/backlog/backlog-drive.ts +11 -6
- package/scripts/backlog/backlog-occupied.ts +56 -0
- package/scripts/backlog/backlog-ready.ts +59 -15
- package/scripts/behavior/behavior-rules.ts +3 -2
- package/scripts/cost-runtime/codex-usage.ts +4 -2
- package/scripts/cost-runtime/cost-cli.ts +1 -2
- package/scripts/delegation/duplicate-read-guard.ts +2 -2
- package/scripts/delegation/investigation-guard.ts +15 -65
- package/scripts/delegation/investigation-reads.ts +1 -2
- package/scripts/discovery/repo-discovery.ts +4 -2
- package/scripts/discovery/repo-origin.ts +2 -4
- package/scripts/doctor/doctor-logic.ts +6 -3
- package/scripts/document/document-byte-budget.ts +28 -27
- package/scripts/document/document-byte-check.ts +1 -2
- package/scripts/document/document-section-cli.ts +17 -5
- package/scripts/document/entry-read-budget.ts +3 -3
- package/scripts/document/read-set-cli.ts +4 -1
- package/scripts/epic/epic-audit-orphans.ts +5 -8
- package/scripts/epic/epic-audit-rationale.ts +8 -2
- package/scripts/epic/epic-audit.ts +52 -1
- package/scripts/epic/epic-bundle-cli.ts +1 -2
- package/scripts/epic/epic-bundle-evidence.ts +49 -26
- package/scripts/epic/epic-bundle-referenced.ts +14 -3
- package/scripts/epic/epic-bundle.ts +17 -9
- package/scripts/epic/epic-chains.ts +6 -2
- package/scripts/epic/epic-close-comment.ts +1 -2
- package/scripts/followup/git-followup-workflow.ts +19 -1
- package/scripts/gate/check-inputs.ts +129 -0
- package/scripts/gate/check-reuse.ts +162 -0
- package/scripts/gate/core-budget.ts +93 -44
- package/scripts/gate/core-wait.ts +130 -0
- package/scripts/gate/free-cores.ts +49 -0
- package/scripts/gate/gate-ledger.ts +17 -3
- package/scripts/gate/gate-plan.ts +23 -1
- package/scripts/gate/gate-report.ts +15 -2
- package/scripts/gate/gate-run-steps.ts +150 -0
- package/scripts/gate/held-mark.ts +55 -0
- package/scripts/gate/machine-capacity.ts +70 -11
- package/scripts/gate/pre-commit-type-check.ts +14 -1
- package/scripts/gate/verification-gate.ts +65 -127
- package/scripts/gh/git-gh-issue-rest.ts +1 -0
- package/scripts/gh/git-gh-issue-write.ts +24 -2
- package/scripts/gh/git-pr.ts +19 -3
- package/scripts/git/git-common-directory.ts +3 -3
- package/scripts/git/git-diff-reads.ts +16 -9
- package/scripts/git/git-execa-error.ts +1 -2
- package/scripts/git/main-merge-regenerate.ts +78 -0
- package/scripts/git/main-merge.ts +14 -5
- package/scripts/hooks/batch-guard.ts +5 -8
- package/scripts/hooks/format-edited-file.ts +10 -4
- package/scripts/hooks/pre-commit-lint.ts +91 -0
- package/scripts/hooks/pre-push-unit.ts +15 -4
- package/scripts/hooks/pretool-guard.ts +48 -79
- package/scripts/hooks/reserved-run.ts +1 -0
- package/scripts/hooks/run-hook.sh +10 -12
- package/scripts/hooks/step-zero-notice.ts +3 -2
- package/scripts/hooks/stop-actions.ts +204 -0
- package/scripts/hooks/stop-guard.ts +62 -21
- package/scripts/init/hook-command-rewrite.ts +6 -2
- package/scripts/init/hook-launch.ts +12 -7
- package/scripts/init/init-logic-deploy-vps.ts +4 -2
- package/scripts/issue/behavior-change-lint.ts +12 -6
- package/scripts/issue/expected-effect-lint.ts +59 -0
- package/scripts/issue/issue-cite-cli.ts +35 -15
- package/scripts/issue/issue-classification.ts +1 -1
- package/scripts/issue/issue-lint-cli.ts +5 -3
- package/scripts/issue/issue-scout-cli.ts +22 -16
- package/scripts/issue/markdown-section.ts +19 -5
- package/scripts/josh/command-usage.ts +110 -0
- package/scripts/josh/file-map-stamp.ts +1 -3
- package/scripts/josh/hook-decision.ts +17 -2
- package/scripts/josh/josh-command-map.ts +2 -0
- package/scripts/josh/josh-command-types.ts +55 -9
- package/scripts/josh/josh-commands-ai.ts +13 -0
- package/scripts/josh/josh-commands-development.ts +1 -1
- package/scripts/josh/josh-commands-hooks.ts +6 -0
- package/scripts/josh/josh-commands-lane.ts +10 -1
- package/scripts/josh/josh-commands-workflow.ts +5 -0
- package/scripts/josh/josh-logic.ts +6 -15
- package/scripts/josh/josh-usage-automation.ts +121 -0
- package/scripts/josh/josh-usage-backlog.ts +180 -0
- package/scripts/josh/josh-usage-developer.ts +230 -0
- package/scripts/josh/josh-usage-hooks.ts +38 -0
- package/scripts/josh/josh-usage-issue.ts +205 -0
- package/scripts/josh/josh-usage-review.ts +101 -0
- package/scripts/josh/josh-usage-run.ts +252 -0
- package/scripts/josh/josh-usage-session.ts +238 -0
- package/scripts/josh/josh-usage-workflow.ts +212 -0
- package/scripts/josh/josh.ts +14 -5
- package/scripts/josh/package-directory.ts +20 -0
- package/scripts/lane/lane-await.ts +3 -2
- package/scripts/lane/lane-capacity.ts +8 -2
- package/scripts/lane/lane-check-stats.ts +56 -0
- package/scripts/lane/lane-child-invocation.ts +49 -5
- package/scripts/lane/lane-dispatch.ts +3 -3
- package/scripts/lane/lane-guard-policy.ts +5 -5
- package/scripts/lane/lane-handoff.ts +8 -1
- package/scripts/lane/lane-install.ts +12 -4
- package/scripts/lane/lane-ledger.ts +52 -1
- package/scripts/lane/lane-limit-cli.ts +8 -9
- package/scripts/lane/lane-load.ts +9 -2
- package/scripts/lane/lane-measure-cli.ts +4 -0
- package/scripts/lane/lane-parked.ts +18 -0
- package/scripts/lane/lane-preserve.ts +29 -1
- package/scripts/lane/lane-process-load.ts +125 -0
- package/scripts/lane/lane-process-stats.ts +93 -0
- package/scripts/lane/lane-registry.ts +17 -10
- package/scripts/lane/lane-restart.ts +5 -26
- package/scripts/lane/lane-session-action.ts +146 -0
- package/scripts/lane/lane-session-broker.ts +68 -125
- package/scripts/lane/lane-spent.ts +14 -3
- package/scripts/lane/lane-stats.ts +1 -0
- package/scripts/lane/lane-withdraw-cli.ts +71 -0
- package/scripts/lane/lane-withdraw.ts +182 -0
- package/scripts/lint/format.ts +4 -4
- package/scripts/lint/lint-parallel.ts +10 -3
- package/scripts/lint/lint-related-scope.ts +4 -1
- package/scripts/managed-marker/managed-marker-logic.ts +1 -2
- package/scripts/notify/telegram-test.ts +10 -5
- package/scripts/overrides/lockfile-overrides.ts +1 -3
- package/scripts/propagate/propagate.ts +1 -2
- package/scripts/release/release-progress.ts +3 -2
- package/scripts/report/report-format-reference.ts +2 -0
- package/scripts/report/report-lint.ts +7 -4
- package/scripts/review/acceptance-map-check.ts +61 -0
- package/scripts/review/acceptance-map.ts +205 -0
- package/scripts/review/review-brief-cli.ts +1 -1
- package/scripts/review/review-record-cli.ts +6 -2
- package/scripts/rules/agent-model.ts +59 -0
- package/scripts/rules/delivered-rules.ts +11 -2
- package/scripts/rules/destructive-command.ts +6 -9
- package/scripts/rules/direct-filing.ts +3 -7
- package/scripts/rules/early-heartbeat.ts +7 -18
- package/scripts/rules/file-body.ts +6 -13
- package/scripts/rules/filing-cap.ts +4 -6
- package/scripts/rules/firing-point.ts +6 -5
- package/scripts/rules/git-force.ts +5 -9
- package/scripts/rules/guard-remedy.ts +117 -0
- package/scripts/rules/implementation-cut.ts +37 -35
- package/scripts/rules/index-guard.ts +4 -7
- package/scripts/rules/issue-comments.ts +67 -16
- package/scripts/rules/josh-git-bare.ts +3 -6
- package/scripts/rules/lane-background.ts +10 -21
- package/scripts/rules/lane-carry-conflict.ts +7 -17
- package/scripts/rules/lane-interactive-ask.ts +6 -11
- package/scripts/rules/lane-park.ts +5 -13
- package/scripts/rules/lane-split-park.ts +2 -7
- package/scripts/rules/lane-switch-main.ts +9 -12
- package/scripts/rules/last-prompt.ts +50 -5
- package/scripts/rules/oracle-consulted.ts +4 -5
- package/scripts/rules/oracle-list-cli.ts +7 -0
- package/scripts/rules/piped-verification.ts +84 -32
- package/scripts/rules/poll-loop.ts +7 -17
- package/scripts/rules/pre-gate-cut.ts +7 -21
- package/scripts/rules/prior-comment-read.ts +7 -5
- package/scripts/rules/protected-files.ts +5 -9
- package/scripts/rules/raw-field-body.ts +3 -7
- package/scripts/rules/rule-body-guard.ts +4 -11
- package/scripts/rules/rule-list.ts +4 -1
- package/scripts/rules/rule-registry-rows.ts +10 -0
- package/scripts/rules/rule-registry.ts +7 -4
- package/scripts/rules/rule-rewrite.ts +114 -0
- package/scripts/rules/rule-value.ts +7 -1
- package/scripts/rules/run-tail-rule.ts +6 -22
- package/scripts/rules/shell-body-trigger.ts +4 -6
- package/scripts/rules/shell-segments.ts +22 -0
- package/scripts/rules/stop-decision.ts +77 -0
- package/scripts/rules/stop-rules.ts +164 -77
- package/scripts/rules/tail-commands.ts +15 -1
- package/scripts/rules/test-declared-commit.ts +4 -10
- package/scripts/rules/third-party-write.ts +5 -10
- package/scripts/rules/worktree-guard.ts +5 -12
- package/scripts/run/board/run-board-cli.ts +2 -0
- package/scripts/run/board/run-board-closed.ts +8 -2
- package/scripts/run/board/run-board-github.ts +19 -3
- package/scripts/run/board/run-board-header.ts +4 -1
- package/scripts/run/board/run-board-idle.ts +31 -0
- package/scripts/run/board/run-board-labels.ts +2 -0
- package/scripts/run/board/run-board-layout.ts +1 -1
- package/scripts/run/board/run-board-read.ts +25 -12
- package/scripts/run/board/run-board-reason.ts +17 -4
- package/scripts/run/board/run-board-render-legend.ts +1 -0
- package/scripts/run/board/run-board-render-slot.ts +1 -1
- package/scripts/run/board/run-board-render-waits.ts +41 -0
- package/scripts/run/board/run-board-render.ts +6 -1
- package/scripts/run/board/run-board-row-yield.ts +1 -0
- package/scripts/run/board/run-board-state.ts +9 -0
- package/scripts/run/board/run-board-status.ts +89 -23
- package/scripts/run/board/run-board-thanks.ts +7 -2
- package/scripts/run/board/run-board-tick.ts +37 -8
- package/scripts/run/carry/run-carry-args.ts +1 -3
- package/scripts/run/carry/run-carry-conversation.ts +7 -2
- package/scripts/run/cut/run-cut-cli.ts +18 -22
- package/scripts/run/cut/run-cut-decline.ts +72 -0
- package/scripts/run/cut/run-cut-ready.ts +74 -0
- package/scripts/run/cut/run-cut-report.ts +29 -0
- package/scripts/run/cut/run-cut.ts +10 -1
- package/scripts/run/detached-launch.ts +23 -4
- package/scripts/run/entry/run-entry-cli.ts +8 -1
- package/scripts/run/event/run-event-render.ts +1 -0
- package/scripts/run/event/run-event-scope.ts +19 -1
- package/scripts/run/event/run-event-stream-emit.ts +13 -6
- package/scripts/run/event/run-event-stream.ts +4 -0
- package/scripts/run/hold/run-hold-cli.ts +14 -3
- package/scripts/run/hold/run-hold-session.ts +46 -0
- package/scripts/run/hold/run-hold.ts +13 -4
- package/scripts/run/launch-priority.ts +32 -0
- package/scripts/run/merge/run-merge-cli.ts +16 -42
- package/scripts/run/merge/run-merge-ship.ts +59 -1
- package/scripts/run/merge/run-merge-signals.ts +99 -0
- package/scripts/run/merge/run-merge-steps.ts +11 -1
- package/scripts/run/merge/run-merge.ts +22 -9
- package/scripts/run/run-ending.ts +31 -3
- package/scripts/run/run-liveness.ts +1 -1
- package/scripts/run/run-parent-cut-hook.ts +5 -10
- package/scripts/run/run-poll-hook.ts +157 -0
- package/scripts/run/run-preflight.ts +1 -2
- package/scripts/run/run-step-cli.ts +22 -15
- package/scripts/run/run-step-section.ts +85 -0
- package/scripts/run/run-stop-notify.ts +1 -2
- package/scripts/run/run-watcher-guard.ts +6 -3
- package/scripts/run/ship/run-ship-cli.ts +5 -12
- package/scripts/run/ship/run-ship-detach.ts +9 -0
- package/scripts/run/ship/run-ship-next.ts +10 -2
- package/scripts/run/ship/run-ship-overlap.ts +195 -0
- package/scripts/run/ship/run-ship-pre-detach.ts +33 -15
- package/scripts/run/ship/run-ship-preflight.ts +28 -2
- package/scripts/run/ship/run-ship-return.ts +31 -7
- package/scripts/run/ship/run-ship-review-steps.ts +25 -14
- package/scripts/run/ship/run-ship-review.ts +15 -2
- package/scripts/run/ship/run-ship-steps.ts +1 -1
- package/scripts/run/ship/run-ship-stop-context.ts +206 -0
- package/scripts/run/ship/run-ship-sync.ts +14 -6
- package/scripts/run/tidy/run-tidy-cli.ts +3 -3
- package/scripts/run/tidy/run-tidy-lanes.ts +3 -2
- package/scripts/safe-chain/project-config.ts +7 -2
- package/scripts/sync/sync-hook-safety.ts +8 -2
- package/scripts/test/test-e2e-guard.ts +30 -5
- package/scripts/test/test-unit-guard.ts +16 -1
- package/scripts/test/unit-worker-share.ts +26 -3
- package/scripts/time-runtime/time-batch-guard.ts +3 -3
- package/scripts/time-runtime/time-hook-transcript.ts +3 -2
- package/scripts/time-runtime/time-shell.ts +39 -4
- package/scripts/time-runtime/time-spans.ts +1 -0
- package/scripts/time-runtime/time-tool-call.ts +7 -0
- package/scripts/version/effective-upstream.ts +3 -4
- package/scripts/version/kit-version-config.ts +8 -2
- package/scripts/version/latest-corepack.ts +1 -2
- package/scripts/version/release-hold.ts +11 -4
- package/scripts/version/version-commands.ts +12 -4
- package/templates/gitignore +6 -2
- package/dist/hooks/chunk-D5QBTOCZ.js +0 -68
- package/dist/hooks/chunk-UT7YC3N2.js +0 -56
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import {
|
|
2
|
+
agent_session_environment
|
|
3
|
+
} from "./chunk-APUO6U4J.js";
|
|
4
|
+
|
|
5
|
+
// scripts/agent/agent-role-profile.ts
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
|
|
8
|
+
// scripts/agent/agent-safe-text.ts
|
|
9
|
+
var FIRST_PRINTABLE_CODE = 32;
|
|
10
|
+
var DELETE_CODE = 127;
|
|
11
|
+
var FIRST_CODE_POINT = 0;
|
|
12
|
+
var EMPTY_LENGTH = 0;
|
|
13
|
+
var MAX_VALUE_LENGTH = 4096;
|
|
14
|
+
var LINE_FEED = "\n";
|
|
15
|
+
var SPACE = " ";
|
|
16
|
+
function is_control_character(character) {
|
|
17
|
+
const code = character.codePointAt(FIRST_CODE_POINT) ?? FIRST_PRINTABLE_CODE;
|
|
18
|
+
return code < FIRST_PRINTABLE_CODE || code === DELETE_CODE;
|
|
19
|
+
}
|
|
20
|
+
function is_line_feed(character) {
|
|
21
|
+
return character === LINE_FEED;
|
|
22
|
+
}
|
|
23
|
+
function is_never_allowed() {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
function is_refused(character, is_allowed) {
|
|
27
|
+
return is_control_character(character) && !is_allowed(character);
|
|
28
|
+
}
|
|
29
|
+
function is_safe_text(value, is_allowed) {
|
|
30
|
+
if (value.length === EMPTY_LENGTH || value.length > MAX_VALUE_LENGTH) return false;
|
|
31
|
+
for (const character of value) if (is_refused(character, is_allowed)) return false;
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
function is_safe_value(value) {
|
|
35
|
+
return is_safe_text(value, is_never_allowed);
|
|
36
|
+
}
|
|
37
|
+
function is_safe_prompt(value) {
|
|
38
|
+
return is_safe_text(value, is_line_feed);
|
|
39
|
+
}
|
|
40
|
+
function printable_character(character) {
|
|
41
|
+
return is_refused(character, is_line_feed) ? SPACE : character;
|
|
42
|
+
}
|
|
43
|
+
function printable(text) {
|
|
44
|
+
return Array.from(text, printable_character).join("");
|
|
45
|
+
}
|
|
46
|
+
var agent_safe_text = { MAX_VALUE_LENGTH, is_safe_prompt, is_safe_value, printable };
|
|
47
|
+
|
|
48
|
+
// scripts/agent/agent-role-profile.ts
|
|
49
|
+
var EMPTY_LENGTH2 = 0;
|
|
50
|
+
var ROLE_SCHEMA = z.enum(["scheduler", "worker", "reviewer"]);
|
|
51
|
+
var PROVIDER_SCHEMA = z.enum(["anthropic", "openai"]);
|
|
52
|
+
var EFFORT_SCHEMA = z.enum(["low", "medium", "high", "xhigh", "max"]);
|
|
53
|
+
var PHASE_SCHEMA = z.enum(["implementation", "pre-gate"]);
|
|
54
|
+
var PROFILE_SCHEMA = z.object({
|
|
55
|
+
provider: PROVIDER_SCHEMA.default("anthropic"),
|
|
56
|
+
role: ROLE_SCHEMA,
|
|
57
|
+
model: z.string(),
|
|
58
|
+
effort: EFFORT_SCHEMA
|
|
59
|
+
});
|
|
60
|
+
var SCHEDULER = "scheduler";
|
|
61
|
+
var WORKER = "worker";
|
|
62
|
+
var REVIEWER = "reviewer";
|
|
63
|
+
var IMPLEMENTATION_PHASE = "implementation";
|
|
64
|
+
var PRE_GATE_PHASE = "pre-gate";
|
|
65
|
+
var ANTHROPIC_PROVIDER = "anthropic";
|
|
66
|
+
var OPENAI_PROVIDER = "openai";
|
|
67
|
+
var OPENAI_MODEL = "gpt-6.1-sol";
|
|
68
|
+
var ANTHROPIC_MODEL = "claude-opus-5-5";
|
|
69
|
+
var CODEX_SESSION_KEY = "CODEX_THREAD_ID";
|
|
70
|
+
var DEFAULT_PROFILES = {
|
|
71
|
+
scheduler: {
|
|
72
|
+
provider: ANTHROPIC_PROVIDER,
|
|
73
|
+
role: SCHEDULER,
|
|
74
|
+
model: ANTHROPIC_MODEL,
|
|
75
|
+
effort: "medium"
|
|
76
|
+
},
|
|
77
|
+
worker: { provider: ANTHROPIC_PROVIDER, role: WORKER, model: ANTHROPIC_MODEL, effort: "medium" },
|
|
78
|
+
reviewer: {
|
|
79
|
+
provider: ANTHROPIC_PROVIDER,
|
|
80
|
+
role: REVIEWER,
|
|
81
|
+
model: ANTHROPIC_MODEL,
|
|
82
|
+
effort: "high"
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
var OPENAI_PROFILES = {
|
|
86
|
+
scheduler: { provider: OPENAI_PROVIDER, role: SCHEDULER, model: OPENAI_MODEL, effort: "medium" },
|
|
87
|
+
worker: { provider: OPENAI_PROVIDER, role: WORKER, model: OPENAI_MODEL, effort: "medium" },
|
|
88
|
+
reviewer: { provider: OPENAI_PROVIDER, role: REVIEWER, model: OPENAI_MODEL, effort: "high" }
|
|
89
|
+
};
|
|
90
|
+
var PROVIDER_PROFILES = { anthropic: DEFAULT_PROFILES, openai: OPENAI_PROFILES };
|
|
91
|
+
var FIRST_REVIEW_ROUND = 1;
|
|
92
|
+
var VERIFICATION_MODEL = "claude-sonnet-5-5";
|
|
93
|
+
var VERIFICATION_PROFILES = {
|
|
94
|
+
anthropic: { ...DEFAULT_PROFILES.reviewer, model: VERIFICATION_MODEL },
|
|
95
|
+
openai: OPENAI_PROFILES.reviewer
|
|
96
|
+
};
|
|
97
|
+
var VERIFICATION_KEYS = {
|
|
98
|
+
model: "JOSH_REVIEWER_VERIFICATION_MODEL",
|
|
99
|
+
effort: "JOSH_REVIEWER_VERIFICATION_EFFORT"
|
|
100
|
+
};
|
|
101
|
+
var SHIP_EFFORT = "low";
|
|
102
|
+
var PHASE_EFFORT = {
|
|
103
|
+
worker: { [PRE_GATE_PHASE]: SHIP_EFFORT }
|
|
104
|
+
};
|
|
105
|
+
var ENV_KEYS = {
|
|
106
|
+
scheduler: { model: "JOSH_SCHEDULER_MODEL", effort: "JOSH_SCHEDULER_EFFORT" },
|
|
107
|
+
worker: { model: "JOSH_WORKER_MODEL", effort: "JOSH_WORKER_EFFORT" },
|
|
108
|
+
reviewer: { model: "JOSH_REVIEWER_MODEL", effort: "JOSH_REVIEWER_EFFORT" }
|
|
109
|
+
};
|
|
110
|
+
var LEGACY_WORKER_KEYS = { model: "JOSH_LANE_MODEL", effort: "JOSH_LANE_EFFORT" };
|
|
111
|
+
var { MAX_VALUE_LENGTH: MAX_VALUE_LENGTH2, is_safe_prompt: is_safe_prompt2, is_safe_value: is_safe_value2, printable: printable2 } = agent_safe_text;
|
|
112
|
+
function trimmed(value) {
|
|
113
|
+
const result = value?.trim();
|
|
114
|
+
return result === void 0 || result.length === EMPTY_LENGTH2 ? void 0 : result;
|
|
115
|
+
}
|
|
116
|
+
function is_verification(role, round) {
|
|
117
|
+
return role === REVIEWER && round !== void 0 && round > FIRST_REVIEW_ROUND;
|
|
118
|
+
}
|
|
119
|
+
function override_keys(role, field, round) {
|
|
120
|
+
const key = ENV_KEYS[role][field];
|
|
121
|
+
if (role === WORKER) return [key, LEGACY_WORKER_KEYS[field]];
|
|
122
|
+
return is_verification(role, round) ? [VERIFICATION_KEYS[field], key] : [key];
|
|
123
|
+
}
|
|
124
|
+
function override_value(role, field, environment, round) {
|
|
125
|
+
const keys = override_keys(role, field, round);
|
|
126
|
+
const key = keys.find((candidate) => trimmed(environment[candidate]) !== void 0);
|
|
127
|
+
return key === void 0 ? { key: keys[0], value: void 0 } : { key, value: trimmed(environment[key]) };
|
|
128
|
+
}
|
|
129
|
+
function model_override(role, environment, provider, round) {
|
|
130
|
+
return provider === OPENAI_PROVIDER ? { key: ENV_KEYS[role].model, value: void 0 } : override_value(role, "model", environment, round);
|
|
131
|
+
}
|
|
132
|
+
function rejection(key, value, expected) {
|
|
133
|
+
return { kind: "rejected", note: `${key}=${value} ${expected}, so the agent was not started` };
|
|
134
|
+
}
|
|
135
|
+
function resolved_effort(override, fallback) {
|
|
136
|
+
const parsed = EFFORT_SCHEMA.safeParse(override.value ?? fallback);
|
|
137
|
+
return parsed.success ? { kind: "effort", effort: parsed.data } : rejection(override.key, override.value ?? "", "is not an allowed effort");
|
|
138
|
+
}
|
|
139
|
+
function has_session(environment, keys) {
|
|
140
|
+
return keys.some((key) => trimmed(environment[key]) !== void 0);
|
|
141
|
+
}
|
|
142
|
+
var CONFLICTING_SESSIONS = {
|
|
143
|
+
kind: "rejected",
|
|
144
|
+
note: "both Codex and Claude Code sessions were detected"
|
|
145
|
+
};
|
|
146
|
+
var HANDED_PROVIDER_KEY = "JOSH_AGENT_PROVIDER";
|
|
147
|
+
var DEFAULT_PROVIDER = {
|
|
148
|
+
kind: "provider",
|
|
149
|
+
provider: ANTHROPIC_PROVIDER,
|
|
150
|
+
is_default: true
|
|
151
|
+
};
|
|
152
|
+
var DEFAULT_NOTICE = ` No agent session or ${HANDED_PROVIDER_KEY} was found, so the provider defaulted to ${ANTHROPIC_PROVIDER} (Claude Code).`;
|
|
153
|
+
function handed_provider(environment) {
|
|
154
|
+
const value = trimmed(environment[HANDED_PROVIDER_KEY]);
|
|
155
|
+
if (value === void 0) return DEFAULT_PROVIDER;
|
|
156
|
+
const parsed = PROVIDER_SCHEMA.safeParse(value);
|
|
157
|
+
return parsed.success ? { kind: "provider", provider: parsed.data } : rejection(HANDED_PROVIDER_KEY, value, "is not an allowed provider");
|
|
158
|
+
}
|
|
159
|
+
function detected_provider(environment) {
|
|
160
|
+
const has_codex = has_session(environment, [CODEX_SESSION_KEY]);
|
|
161
|
+
const has_claude = has_session(environment, agent_session_environment.PARENT_SESSION_KEYS);
|
|
162
|
+
if (has_codex === has_claude) return has_codex ? CONFLICTING_SESSIONS : void 0;
|
|
163
|
+
return { kind: "provider", provider: has_codex ? OPENAI_PROVIDER : ANTHROPIC_PROVIDER };
|
|
164
|
+
}
|
|
165
|
+
function resolve_provider(environment = process.env) {
|
|
166
|
+
return detected_provider(environment) ?? handed_provider(environment);
|
|
167
|
+
}
|
|
168
|
+
function default_notice(environment = process.env) {
|
|
169
|
+
const selected = resolve_provider(environment);
|
|
170
|
+
return selected.kind === "provider" && selected.is_default === true ? DEFAULT_NOTICE : "";
|
|
171
|
+
}
|
|
172
|
+
function warn_of_default(environment = process.env) {
|
|
173
|
+
const notice = default_notice(environment).trim();
|
|
174
|
+
if (notice !== "") console.error(notice);
|
|
175
|
+
}
|
|
176
|
+
function has_completion_callback(environment = process.env) {
|
|
177
|
+
const selected = resolve_provider(environment);
|
|
178
|
+
return selected.kind !== "provider" || selected.provider !== OPENAI_PROVIDER;
|
|
179
|
+
}
|
|
180
|
+
function handoff_environment(environment = process.env) {
|
|
181
|
+
const selected = resolve_provider(environment);
|
|
182
|
+
return selected.kind === "provider" ? { [HANDED_PROVIDER_KEY]: selected.provider } : {};
|
|
183
|
+
}
|
|
184
|
+
function validate(profile, model_key) {
|
|
185
|
+
if (!is_safe_value2(profile.model)) {
|
|
186
|
+
return rejection(model_key, profile.model, "is not a safe model");
|
|
187
|
+
}
|
|
188
|
+
return { kind: "profile", profile };
|
|
189
|
+
}
|
|
190
|
+
function phase_effort(role, phase, fallback) {
|
|
191
|
+
const parsed = PHASE_SCHEMA.safeParse(phase);
|
|
192
|
+
if (!parsed.success) return fallback;
|
|
193
|
+
return PHASE_EFFORT[role]?.[parsed.data] ?? fallback;
|
|
194
|
+
}
|
|
195
|
+
function overridden_effort(profile, phase, environment) {
|
|
196
|
+
const parsed = EFFORT_SCHEMA.safeParse(override_value(profile.role, "effort", environment).value);
|
|
197
|
+
return parsed.success ? parsed.data : phase_effort(profile.role, phase, profile.effort);
|
|
198
|
+
}
|
|
199
|
+
function with_phase_effort(profile, phase, environment = process.env) {
|
|
200
|
+
return { ...profile, effort: overridden_effort(profile, phase, environment) };
|
|
201
|
+
}
|
|
202
|
+
function stage_defaults(provider, role, round) {
|
|
203
|
+
return is_verification(role, round) ? VERIFICATION_PROFILES[provider] : PROVIDER_PROFILES[provider][role];
|
|
204
|
+
}
|
|
205
|
+
function resolve_stage(role, environment, stage) {
|
|
206
|
+
const selected = resolve_provider(environment);
|
|
207
|
+
if (selected.kind === "rejected") return selected;
|
|
208
|
+
const defaults = stage_defaults(selected.provider, role, stage.round);
|
|
209
|
+
const model = model_override(role, environment, selected.provider, stage.round);
|
|
210
|
+
const effort = override_value(role, "effort", environment, stage.round);
|
|
211
|
+
const resolved = resolved_effort(effort, phase_effort(role, stage.phase, defaults.effort));
|
|
212
|
+
if (resolved.kind === "rejected") return resolved;
|
|
213
|
+
const profile = {
|
|
214
|
+
provider: selected.provider,
|
|
215
|
+
role,
|
|
216
|
+
model: model.value ?? defaults.model,
|
|
217
|
+
effort: resolved.effort
|
|
218
|
+
};
|
|
219
|
+
return validate(profile, model.key);
|
|
220
|
+
}
|
|
221
|
+
function resolve(role, environment = process.env, phase) {
|
|
222
|
+
return resolve_stage(role, environment, { phase });
|
|
223
|
+
}
|
|
224
|
+
function resolve_review(round, environment = process.env) {
|
|
225
|
+
return resolve_stage(REVIEWER, environment, { round });
|
|
226
|
+
}
|
|
227
|
+
function describe(profile) {
|
|
228
|
+
return `provider=${profile.provider} role=${profile.role} model=${profile.model} effort=${profile.effort}`;
|
|
229
|
+
}
|
|
230
|
+
function describe_review(round, profile) {
|
|
231
|
+
return `review round ${String(round)} \xB7 ${describe(profile)}`;
|
|
232
|
+
}
|
|
233
|
+
function parse(value) {
|
|
234
|
+
const parsed = PROFILE_SCHEMA.safeParse(value);
|
|
235
|
+
return parsed.success && is_safe_value2(parsed.data.model) ? parsed.data : void 0;
|
|
236
|
+
}
|
|
237
|
+
var agent_role_profile = {
|
|
238
|
+
CODEX_SESSION_KEY,
|
|
239
|
+
DEFAULT_PROFILES,
|
|
240
|
+
HANDED_PROVIDER_KEY,
|
|
241
|
+
IMPLEMENTATION_PHASE,
|
|
242
|
+
MAX_VALUE_LENGTH: MAX_VALUE_LENGTH2,
|
|
243
|
+
OPENAI_PROFILES,
|
|
244
|
+
PRE_GATE_PHASE,
|
|
245
|
+
PROFILE_SCHEMA,
|
|
246
|
+
REVIEWER,
|
|
247
|
+
SCHEDULER,
|
|
248
|
+
VERIFICATION_PROFILES,
|
|
249
|
+
WORKER,
|
|
250
|
+
default_notice,
|
|
251
|
+
describe,
|
|
252
|
+
describe_review,
|
|
253
|
+
handoff_environment,
|
|
254
|
+
has_completion_callback,
|
|
255
|
+
is_safe_prompt: is_safe_prompt2,
|
|
256
|
+
is_safe_value: is_safe_value2,
|
|
257
|
+
parse,
|
|
258
|
+
printable: printable2,
|
|
259
|
+
resolve,
|
|
260
|
+
resolve_provider,
|
|
261
|
+
resolve_review,
|
|
262
|
+
warn_of_default,
|
|
263
|
+
with_phase_effort
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
// scripts/agent/agent-session-role.ts
|
|
267
|
+
var KEY = "JOSH_AGENT_ROLE";
|
|
268
|
+
function environment_for(role) {
|
|
269
|
+
return { [KEY]: role };
|
|
270
|
+
}
|
|
271
|
+
function is_reviewer(source = process.env) {
|
|
272
|
+
return source[KEY] === agent_role_profile.REVIEWER;
|
|
273
|
+
}
|
|
274
|
+
var agent_session_role = { KEY, env_for: environment_for, is_reviewer };
|
|
275
|
+
|
|
276
|
+
export {
|
|
277
|
+
agent_role_profile,
|
|
278
|
+
agent_session_role
|
|
279
|
+
};
|