safeword 0.78.0 → 0.78.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/codex-plugin/.codex-plugin/plugin.json +1 -1
- package/codex-plugin/hooks.json +5 -5
- package/dist/{architecture-4EIJWLZ2.js → architecture-ETYFQUVX.js} +2 -2
- package/dist/{architecture-document-Z3GLUOE3.js → architecture-document-OJYNUG42.js} +2 -2
- package/dist/{architecture-monorepo-EIF3E3L3.js → architecture-monorepo-QVTZ6COC.js} +2 -2
- package/dist/{boundary-U5U2PSX2.js → boundary-7LNKC6GG.js} +2 -2
- package/dist/{chunk-VUWQD4AG.js → chunk-3SOJBMM6.js} +2 -2
- package/dist/{chunk-JZFZWY3K.js → chunk-4CKCRZDO.js} +2 -2
- package/dist/{chunk-7KMQ3QPX.js → chunk-5ITCCDTH.js} +2 -2
- package/dist/{chunk-3ETWYWGQ.js → chunk-A2IG7JPA.js} +4 -4
- package/dist/{chunk-SLRSGK2C.js → chunk-DS3IXWDV.js} +3 -3
- package/dist/{chunk-AQU52TJM.js → chunk-F5353NJG.js} +2 -2
- package/dist/chunk-FV2S4LAR.js +122 -0
- package/dist/chunk-FV2S4LAR.js.map +1 -0
- package/dist/{chunk-C377VEWH.js → chunk-GZ36UZJG.js} +3 -3
- package/dist/{chunk-4AIRSIOH.js → chunk-H5IFRCB6.js} +2 -2
- package/dist/{chunk-E4UMSKEX.js → chunk-NSZGI7HK.js} +2 -2
- package/dist/{chunk-E4UMSKEX.js.map → chunk-NSZGI7HK.js.map} +1 -1
- package/dist/{chunk-FASTWBPY.js → chunk-PGLSVXYF.js} +3 -3
- package/dist/{chunk-RXQJH4LM.js → chunk-S7PWPVQB.js} +4 -4
- package/dist/{chunk-BAYWBZ32.js → chunk-WC5TS2S6.js} +2 -2
- package/dist/{chunk-BAYWBZ32.js.map → chunk-WC5TS2S6.js.map} +1 -1
- package/dist/{cleanup-QV2EBF6M.js → cleanup-YTWIGG6Y.js} +5 -5
- package/dist/{cleanup-command-DTE64KTN.js → cleanup-command-A6TNHIGM.js} +6 -6
- package/dist/cli.js +86 -139
- package/dist/cli.js.map +1 -1
- package/dist/{clients-N4UXDPCN.js → clients-IP2Q34UF.js} +2 -2
- package/dist/{codex-bootstrap-7OUYHP4G.js → codex-bootstrap-4WFWXI6O.js} +6 -6
- package/dist/{codex-hook-VHGSPJN3.js → codex-hook-ETLEIIPX.js} +5 -5
- package/dist/{codify-DJELEKJ6.js → codify-FKJ2RJGS.js} +2 -2
- package/dist/{commands-4NIKNAST.js → commands-477D5ZD5.js} +14 -14
- package/dist/{config-5A4LJ62T.js → config-IP5WQRYO.js} +2 -2
- package/dist/{configured-paths-ZY2GRPYU.js → configured-paths-47VDJKHN.js} +2 -2
- package/dist/{contract-ZRRRAQWZ.js → contract-ZLV6PYDI.js} +2 -2
- package/dist/{coordinator-ZPEXUBXT.js → coordinator-Z2S7FSMS.js} +126 -44
- package/dist/coordinator-Z2S7FSMS.js.map +1 -0
- package/dist/{corpus-ZJQNIU4R.js → corpus-PKNLZ7GC.js} +2 -2
- package/dist/{doctor-HUUE7QWE.js → doctor-KTJUJQ53.js} +8 -8
- package/dist/{feature-directories-7ACGMPS4.js → feature-directories-7PFGK7KC.js} +2 -2
- package/dist/{finalization-5D5N64R7.js → finalization-HHMXBNF7.js} +2 -2
- package/dist/{gh-cli-46VSKW2O.js → gh-cli-KN36UK43.js} +2 -2
- package/dist/{github-rest-SXLBFCQP.js → github-rest-GKK6Z37R.js} +2 -2
- package/dist/index.js +1 -1
- package/dist/{job-EW5LWBHH.js → job-SACUWGSO.js} +257 -87
- package/dist/job-SACUWGSO.js.map +1 -0
- package/dist/{learning-sync-DRQM2JF6.js → learning-sync-7DDQNFQP.js} +2 -2
- package/dist/{legacy-global-guidance-DWGAGL44.js → legacy-global-guidance-J4WABP77.js} +2 -2
- package/dist/{lint-gherkin-5LJX6BBU.js → lint-gherkin-CE2XPYYZ.js} +2 -2
- package/dist/{operations-5CJI6U6T.js → operations-LIPXS36Q.js} +6 -6
- package/dist/{output-5TOP54O5.js → output-DIYV2DNH.js} +2 -2
- package/dist/{packet-IHZNYM3G.js → packet-EQCYVUAR.js} +2 -2
- package/dist/presets/typescript/index.js +1 -1
- package/dist/{profile-ZZGSSTSJ.js → profile-W37PC6XF.js} +2 -2
- package/dist/{prompt-C3MNQKAT.js → prompt-BVYBTS27.js} +2 -2
- package/dist/{remove-PRBJCO6G.js → remove-JYE44XLE.js} +6 -6
- package/dist/{retro-Z2DREW77.js → retro-QWZRWEQ3.js} +8 -8
- package/dist/{retro-draft-spool-YVNO4VSB.js → retro-draft-spool-5FE34GCI.js} +2 -2
- package/dist/{retro-extract-NBSIY4ZY.js → retro-extract-3NAABYBR.js} +2 -2
- package/dist/{review-pr-TTJKQC4H.js → review-pr-B5UNG7VK.js} +2 -2
- package/dist/{review-pr-publication-DR75RPF4.js → review-pr-publication-QLZARNY7.js} +2 -2
- package/dist/{run-5JWZAFET.js → run-OUM433SE.js} +2 -2
- package/dist/{self-report-3KBA5TG7.js → self-report-SATNMY6R.js} +2 -2
- package/dist/{status-OFXGT5ZO.js → status-HINDYZMQ.js} +5 -5
- package/dist/{status-K62NWMZ6.js → status-W4CN6RBQ.js} +8 -8
- package/dist/{sync-config-B62CJ5OS.js → sync-config-KDQCXYM7.js} +2 -2
- package/dist/{sync-tracker-QMPXXLJ4.js → sync-tracker-DIVSOQIT.js} +2 -2
- package/dist/{test-execution-MCMXLV5O.js → test-execution-O4FHAJRK.js} +2 -2
- package/dist/{test-plan-RJTKHEYA.js → test-plan-RFRDI6IA.js} +2 -2
- package/dist/{ticket-new-RPLN56XK.js → ticket-new-IXLYLQMF.js} +2 -2
- package/dist/{ticket-sync-VHTAPISH.js → ticket-sync-HVJJS2AB.js} +2 -2
- package/dist/{tracker-map-WFRDFSKN.js → tracker-map-BGA4U7NY.js} +2 -2
- package/dist/{tracker-sync-5D4XNQHS.js → tracker-sync-4MKDLRJ7.js} +2 -2
- package/package.json +1 -1
- package/templates/hooks/codex/pre-tool-quality.ts +8 -1
- package/templates/hooks/cursor/before-shell-execution.ts +2 -1
- package/templates/hooks/lib/closeout-binding.ts +130 -31
- package/templates/hooks/pre-tool-quality.ts +1 -1
- package/templates/hooks/run-review.ts +94 -5
- package/templates/hooks/session-codex-start.ts +4 -1
- package/templates/scripts/closeout-cleanup.ts +33 -55
- package/dist/coordinator-ZPEXUBXT.js.map +0 -1
- package/dist/job-EW5LWBHH.js.map +0 -1
- /package/dist/{architecture-4EIJWLZ2.js.map → architecture-ETYFQUVX.js.map} +0 -0
- /package/dist/{architecture-document-Z3GLUOE3.js.map → architecture-document-OJYNUG42.js.map} +0 -0
- /package/dist/{architecture-monorepo-EIF3E3L3.js.map → architecture-monorepo-QVTZ6COC.js.map} +0 -0
- /package/dist/{boundary-U5U2PSX2.js.map → boundary-7LNKC6GG.js.map} +0 -0
- /package/dist/{chunk-VUWQD4AG.js.map → chunk-3SOJBMM6.js.map} +0 -0
- /package/dist/{chunk-JZFZWY3K.js.map → chunk-4CKCRZDO.js.map} +0 -0
- /package/dist/{chunk-7KMQ3QPX.js.map → chunk-5ITCCDTH.js.map} +0 -0
- /package/dist/{chunk-3ETWYWGQ.js.map → chunk-A2IG7JPA.js.map} +0 -0
- /package/dist/{chunk-SLRSGK2C.js.map → chunk-DS3IXWDV.js.map} +0 -0
- /package/dist/{chunk-AQU52TJM.js.map → chunk-F5353NJG.js.map} +0 -0
- /package/dist/{chunk-C377VEWH.js.map → chunk-GZ36UZJG.js.map} +0 -0
- /package/dist/{chunk-4AIRSIOH.js.map → chunk-H5IFRCB6.js.map} +0 -0
- /package/dist/{chunk-FASTWBPY.js.map → chunk-PGLSVXYF.js.map} +0 -0
- /package/dist/{chunk-RXQJH4LM.js.map → chunk-S7PWPVQB.js.map} +0 -0
- /package/dist/{cleanup-QV2EBF6M.js.map → cleanup-YTWIGG6Y.js.map} +0 -0
- /package/dist/{cleanup-command-DTE64KTN.js.map → cleanup-command-A6TNHIGM.js.map} +0 -0
- /package/dist/{clients-N4UXDPCN.js.map → clients-IP2Q34UF.js.map} +0 -0
- /package/dist/{codex-bootstrap-7OUYHP4G.js.map → codex-bootstrap-4WFWXI6O.js.map} +0 -0
- /package/dist/{codex-hook-VHGSPJN3.js.map → codex-hook-ETLEIIPX.js.map} +0 -0
- /package/dist/{codify-DJELEKJ6.js.map → codify-FKJ2RJGS.js.map} +0 -0
- /package/dist/{commands-4NIKNAST.js.map → commands-477D5ZD5.js.map} +0 -0
- /package/dist/{config-5A4LJ62T.js.map → config-IP5WQRYO.js.map} +0 -0
- /package/dist/{configured-paths-ZY2GRPYU.js.map → configured-paths-47VDJKHN.js.map} +0 -0
- /package/dist/{contract-ZRRRAQWZ.js.map → contract-ZLV6PYDI.js.map} +0 -0
- /package/dist/{corpus-ZJQNIU4R.js.map → corpus-PKNLZ7GC.js.map} +0 -0
- /package/dist/{doctor-HUUE7QWE.js.map → doctor-KTJUJQ53.js.map} +0 -0
- /package/dist/{feature-directories-7ACGMPS4.js.map → feature-directories-7PFGK7KC.js.map} +0 -0
- /package/dist/{finalization-5D5N64R7.js.map → finalization-HHMXBNF7.js.map} +0 -0
- /package/dist/{gh-cli-46VSKW2O.js.map → gh-cli-KN36UK43.js.map} +0 -0
- /package/dist/{github-rest-SXLBFCQP.js.map → github-rest-GKK6Z37R.js.map} +0 -0
- /package/dist/{learning-sync-DRQM2JF6.js.map → learning-sync-7DDQNFQP.js.map} +0 -0
- /package/dist/{legacy-global-guidance-DWGAGL44.js.map → legacy-global-guidance-J4WABP77.js.map} +0 -0
- /package/dist/{lint-gherkin-5LJX6BBU.js.map → lint-gherkin-CE2XPYYZ.js.map} +0 -0
- /package/dist/{operations-5CJI6U6T.js.map → operations-LIPXS36Q.js.map} +0 -0
- /package/dist/{output-5TOP54O5.js.map → output-DIYV2DNH.js.map} +0 -0
- /package/dist/{packet-IHZNYM3G.js.map → packet-EQCYVUAR.js.map} +0 -0
- /package/dist/{profile-ZZGSSTSJ.js.map → profile-W37PC6XF.js.map} +0 -0
- /package/dist/{prompt-C3MNQKAT.js.map → prompt-BVYBTS27.js.map} +0 -0
- /package/dist/{remove-PRBJCO6G.js.map → remove-JYE44XLE.js.map} +0 -0
- /package/dist/{retro-Z2DREW77.js.map → retro-QWZRWEQ3.js.map} +0 -0
- /package/dist/{retro-draft-spool-YVNO4VSB.js.map → retro-draft-spool-5FE34GCI.js.map} +0 -0
- /package/dist/{retro-extract-NBSIY4ZY.js.map → retro-extract-3NAABYBR.js.map} +0 -0
- /package/dist/{review-pr-TTJKQC4H.js.map → review-pr-B5UNG7VK.js.map} +0 -0
- /package/dist/{review-pr-publication-DR75RPF4.js.map → review-pr-publication-QLZARNY7.js.map} +0 -0
- /package/dist/{run-5JWZAFET.js.map → run-OUM433SE.js.map} +0 -0
- /package/dist/{self-report-3KBA5TG7.js.map → self-report-SATNMY6R.js.map} +0 -0
- /package/dist/{status-K62NWMZ6.js.map → status-HINDYZMQ.js.map} +0 -0
- /package/dist/{status-OFXGT5ZO.js.map → status-W4CN6RBQ.js.map} +0 -0
- /package/dist/{sync-config-B62CJ5OS.js.map → sync-config-KDQCXYM7.js.map} +0 -0
- /package/dist/{sync-tracker-QMPXXLJ4.js.map → sync-tracker-DIVSOQIT.js.map} +0 -0
- /package/dist/{test-execution-MCMXLV5O.js.map → test-execution-O4FHAJRK.js.map} +0 -0
- /package/dist/{test-plan-RJTKHEYA.js.map → test-plan-RFRDI6IA.js.map} +0 -0
- /package/dist/{ticket-new-RPLN56XK.js.map → ticket-new-IXLYLQMF.js.map} +0 -0
- /package/dist/{ticket-sync-VHTAPISH.js.map → ticket-sync-HVJJS2AB.js.map} +0 -0
- /package/dist/{tracker-map-WFRDFSKN.js.map → tracker-map-BGA4U7NY.js.map} +0 -0
- /package/dist/{tracker-sync-5D4XNQHS.js.map → tracker-sync-4MKDLRJ7.js.map} +0 -0
package/codex-plugin/hooks.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"hooks": [
|
|
7
7
|
{
|
|
8
8
|
"type": "command",
|
|
9
|
-
"command": "bunx --bun safeword@0.78.
|
|
9
|
+
"command": "bunx --bun safeword@0.78.1 hook codex session-start --plugin-hook",
|
|
10
10
|
"timeout": 120,
|
|
11
11
|
"statusMessage": "Loading Safeword standing instructions"
|
|
12
12
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"hooks": [
|
|
20
20
|
{
|
|
21
21
|
"type": "command",
|
|
22
|
-
"command": "bunx --bun safeword@0.78.
|
|
22
|
+
"command": "bunx --bun safeword@0.78.1 hook codex pre-tool-use --plugin-hook",
|
|
23
23
|
"timeout": 30,
|
|
24
24
|
"statusMessage": "Checking Safeword edit gates"
|
|
25
25
|
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"hooks": [
|
|
33
33
|
{
|
|
34
34
|
"type": "command",
|
|
35
|
-
"command": "bunx --bun safeword@0.78.
|
|
35
|
+
"command": "bunx --bun safeword@0.78.1 hook codex post-tool-use --plugin-hook",
|
|
36
36
|
"timeout": 30,
|
|
37
37
|
"statusMessage": "Surfacing Safeword post-tool context"
|
|
38
38
|
}
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"hooks": [
|
|
46
46
|
{
|
|
47
47
|
"type": "command",
|
|
48
|
-
"command": "bunx --bun safeword@0.78.
|
|
48
|
+
"command": "bunx --bun safeword@0.78.1 hook codex user-prompt-submit --plugin-hook",
|
|
49
49
|
"timeout": 30,
|
|
50
50
|
"statusMessage": "Checking queued Safeword prompt context"
|
|
51
51
|
}
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"hooks": [
|
|
59
59
|
{
|
|
60
60
|
"type": "command",
|
|
61
|
-
"command": "bunx --bun safeword@0.78.
|
|
61
|
+
"command": "bunx --bun safeword@0.78.1 hook codex stop --plugin-hook",
|
|
62
62
|
"timeout": 600,
|
|
63
63
|
"statusMessage": "Checking Safeword stop continuation"
|
|
64
64
|
}
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
readJson,
|
|
26
26
|
writeJson
|
|
27
27
|
} from "./chunk-S2T356DA.js";
|
|
28
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-WC5TS2S6.js";
|
|
29
29
|
|
|
30
30
|
// src/commands/architecture.ts
|
|
31
31
|
import { execFileSync } from "child_process";
|
|
@@ -650,4 +650,4 @@ export {
|
|
|
650
650
|
architectureStage,
|
|
651
651
|
architectureStaged
|
|
652
652
|
};
|
|
653
|
-
//# sourceMappingURL=architecture-
|
|
653
|
+
//# sourceMappingURL=architecture-ETYFQUVX.js.map
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import "./chunk-3EJNDIAO.js";
|
|
12
12
|
import "./chunk-GKR44BCH.js";
|
|
13
13
|
import "./chunk-S2T356DA.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-WC5TS2S6.js";
|
|
15
15
|
export {
|
|
16
16
|
isSafewordOwned,
|
|
17
17
|
isWouldChangeAction,
|
|
@@ -22,4 +22,4 @@ export {
|
|
|
22
22
|
selfHealProject,
|
|
23
23
|
selfHealProjectPreservingProse
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=architecture-document-
|
|
25
|
+
//# sourceMappingURL=architecture-document-OJYNUG42.js.map
|
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
monorepoFingerprintOf
|
|
6
6
|
} from "./chunk-3EJNDIAO.js";
|
|
7
7
|
import "./chunk-S2T356DA.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-WC5TS2S6.js";
|
|
9
9
|
export {
|
|
10
10
|
discoverUnreadableWorkspaces,
|
|
11
11
|
discoverWorkspaces,
|
|
12
12
|
extractMonorepoArchitectureSnapshot,
|
|
13
13
|
monorepoFingerprintOf
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=architecture-monorepo-
|
|
15
|
+
//# sourceMappingURL=architecture-monorepo-QVTZ6COC.js.map
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
import {
|
|
26
26
|
readFileSafe
|
|
27
27
|
} from "./chunk-S2T356DA.js";
|
|
28
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-WC5TS2S6.js";
|
|
29
29
|
|
|
30
30
|
// src/commands/boundary.ts
|
|
31
31
|
import { execFileSync as execFileSync2 } from "child_process";
|
|
@@ -630,4 +630,4 @@ function boundary(options) {
|
|
|
630
630
|
export {
|
|
631
631
|
boundary
|
|
632
632
|
};
|
|
633
|
-
//# sourceMappingURL=boundary-
|
|
633
|
+
//# sourceMappingURL=boundary-7LNKC6GG.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
legacyObservationIsEmpty,
|
|
3
3
|
observeClaudeLegacy
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-4CKCRZDO.js";
|
|
5
5
|
import {
|
|
6
6
|
observeApplicableClaudePlugins
|
|
7
7
|
} from "./chunk-664YNAMR.js";
|
|
@@ -306,4 +306,4 @@ export {
|
|
|
306
306
|
equivalentClaudeInstallations,
|
|
307
307
|
observeClaudeStatus
|
|
308
308
|
};
|
|
309
|
-
//# sourceMappingURL=chunk-
|
|
309
|
+
//# sourceMappingURL=chunk-3SOJBMM6.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
cataloguedClaudeLegacyPaths,
|
|
3
3
|
isAcceptedHistoricalFile,
|
|
4
4
|
isAcceptedHistoricalHook
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-NSZGI7HK.js";
|
|
6
6
|
|
|
7
7
|
// src/claude-plugin/cleanup-target.ts
|
|
8
8
|
import { existsSync, lstatSync } from "fs";
|
|
@@ -119,4 +119,4 @@ export {
|
|
|
119
119
|
observeClaudeLegacy,
|
|
120
120
|
legacyObservationIsEmpty
|
|
121
121
|
};
|
|
122
|
-
//# sourceMappingURL=chunk-
|
|
122
|
+
//# sourceMappingURL=chunk-4CKCRZDO.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SAFEWORD_SCHEMA
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-H5IFRCB6.js";
|
|
4
4
|
import {
|
|
5
5
|
CODEX_MIGRATION_SCHEMA
|
|
6
6
|
} from "./chunk-AVAUUIDB.js";
|
|
@@ -562,4 +562,4 @@ export {
|
|
|
562
562
|
codexSessionProofIsCurrent,
|
|
563
563
|
observeCodexHookProof
|
|
564
564
|
};
|
|
565
|
-
//# sourceMappingURL=chunk-
|
|
565
|
+
//# sourceMappingURL=chunk-5ITCCDTH.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
observeCursorProject,
|
|
4
4
|
projectLifecycleSchema,
|
|
5
5
|
unselectedCursorFinding
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-S7PWPVQB.js";
|
|
7
7
|
import {
|
|
8
8
|
detectPackageManager
|
|
9
9
|
} from "./chunk-6S7CTKGC.js";
|
|
@@ -78,11 +78,11 @@ async function observeLifecycleSurfaces(cwd, agents, environment = process.env)
|
|
|
78
78
|
const project = await observeStatus(cwd, agents, environment);
|
|
79
79
|
const surfaces = [{ name: "project", result: project }];
|
|
80
80
|
if (agents.includes("claude")) {
|
|
81
|
-
const { observeClaudeStatus } = await import("./status-
|
|
81
|
+
const { observeClaudeStatus } = await import("./status-HINDYZMQ.js");
|
|
82
82
|
surfaces.push({ name: "claude", result: observeClaudeStatus(cwd) });
|
|
83
83
|
}
|
|
84
84
|
if (agents.includes("codex")) {
|
|
85
|
-
const { observeCodexMigration } = await import("./operations-
|
|
85
|
+
const { observeCodexMigration } = await import("./operations-LIPXS36Q.js");
|
|
86
86
|
surfaces.push({ name: "codex", result: observeCodexMigration(cwd, environment) });
|
|
87
87
|
}
|
|
88
88
|
if (agents.includes("cursor")) {
|
|
@@ -238,4 +238,4 @@ export {
|
|
|
238
238
|
summarizeLifecycleStatus,
|
|
239
239
|
observeLifecycleStatus
|
|
240
240
|
};
|
|
241
|
-
//# sourceMappingURL=chunk-
|
|
241
|
+
//# sourceMappingURL=chunk-A2IG7JPA.js.map
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
legacyCommandIdentity,
|
|
5
5
|
observeCodexHookProof,
|
|
6
6
|
writeCodexActivationMarker
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-5ITCCDTH.js";
|
|
8
8
|
import {
|
|
9
9
|
SAFEWORD_SCHEMA
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-H5IFRCB6.js";
|
|
11
11
|
import {
|
|
12
12
|
legacyGlobalGuidanceDiagnostic,
|
|
13
13
|
observeLegacyGlobalGuidance
|
|
@@ -1344,4 +1344,4 @@ export {
|
|
|
1344
1344
|
migrateCodexPlugin,
|
|
1345
1345
|
recoverCodexMigration
|
|
1346
1346
|
};
|
|
1347
|
-
//# sourceMappingURL=chunk-
|
|
1347
|
+
//# sourceMappingURL=chunk-DS3IXWDV.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-Q5KLE6ZF.js";
|
|
5
5
|
import {
|
|
6
6
|
setupPythonTooling
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-H5IFRCB6.js";
|
|
8
8
|
import {
|
|
9
9
|
SAFEWORD_PRIMARY_LINT_SCRIPT,
|
|
10
10
|
detect
|
|
@@ -1646,4 +1646,4 @@ export {
|
|
|
1646
1646
|
LEFTHOOK_CONFIGS,
|
|
1647
1647
|
createProjectContext
|
|
1648
1648
|
};
|
|
1649
|
-
//# sourceMappingURL=chunk-
|
|
1649
|
+
//# sourceMappingURL=chunk-F5353NJG.js.map
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// src/cli-protocol/policy.ts
|
|
2
|
+
var EFFECT_NOUNS = {
|
|
3
|
+
files: "file",
|
|
4
|
+
packages: "package",
|
|
5
|
+
configuration: "configuration",
|
|
6
|
+
network: "network",
|
|
7
|
+
destructive: "destructive"
|
|
8
|
+
};
|
|
9
|
+
function firstNonEmptyEffect(effects) {
|
|
10
|
+
return Object.keys(effects).find(
|
|
11
|
+
(effectClass) => effects[effectClass].length > 0
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
function assertNetworkPolicy(definition, result, offline) {
|
|
15
|
+
if (offline && result.effects.network.length > 0) {
|
|
16
|
+
throw new Error(`Command ${definition.name} reported network effects while running offline`);
|
|
17
|
+
}
|
|
18
|
+
if (definition.networkPolicy === "never" && result.effects.network.length > 0) {
|
|
19
|
+
throw new Error(`Command ${definition.name} reported undeclared network effects`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function assertEffectPolicy(definition, result, options) {
|
|
23
|
+
assertNetworkPolicy(definition, result, options.offline);
|
|
24
|
+
if (definition.effectClass === "observe" || definition.effectClass === "plan") {
|
|
25
|
+
const effectClass = firstNonEmptyEffect(result.effects);
|
|
26
|
+
if (effectClass !== void 0) {
|
|
27
|
+
throw new Error(
|
|
28
|
+
`The ${definition.effectClass} command ${definition.name} reported ${EFFECT_NOUNS[effectClass]} effects`
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (definition.effectClass === "hook" && (result.effects.packages.length > 0 || result.effects.network.length > 0 || result.effects.destructive.length > 0)) {
|
|
33
|
+
throw new Error(`Hook command ${definition.name} reported forbidden lifecycle effects`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
var MANAGED_PROGRESS_SIGNAL = "SAFEWORD_REVIEW_PROGRESS";
|
|
37
|
+
function consumeManagedProgressSignal(environment) {
|
|
38
|
+
const enabled = environment[MANAGED_PROGRESS_SIGNAL] === "1";
|
|
39
|
+
Reflect.deleteProperty(environment, MANAGED_PROGRESS_SIGNAL);
|
|
40
|
+
return enabled;
|
|
41
|
+
}
|
|
42
|
+
function shouldReportProgress(options) {
|
|
43
|
+
return !options.quiet && (!options.json || options.managedReview);
|
|
44
|
+
}
|
|
45
|
+
function createBestEffortByteSink(write) {
|
|
46
|
+
return (buffer) => {
|
|
47
|
+
let offset = 0;
|
|
48
|
+
try {
|
|
49
|
+
while (offset < buffer.length) {
|
|
50
|
+
const written = write(buffer, offset, buffer.length - offset);
|
|
51
|
+
if (!Number.isSafeInteger(written) || written <= 0 || written > buffer.length - offset) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
offset += written;
|
|
55
|
+
}
|
|
56
|
+
} catch {
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function createBestEffortProgressSink(write) {
|
|
61
|
+
const writeBytes = createBestEffortByteSink(write);
|
|
62
|
+
return (message) => {
|
|
63
|
+
writeBytes(Buffer.from(`${message}
|
|
64
|
+
`));
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function createManagedReviewProgress(progress) {
|
|
68
|
+
return { ...progress, managed: true };
|
|
69
|
+
}
|
|
70
|
+
var PROGRESS_ANNOUNCE_DELAY_MS = 100;
|
|
71
|
+
var PROGRESS_HEARTBEAT_INTERVAL_MS = 3e4;
|
|
72
|
+
function resolveHeartbeatIntervalMs(environment = process.env) {
|
|
73
|
+
if (environment.NODE_ENV !== "test") return PROGRESS_HEARTBEAT_INTERVAL_MS;
|
|
74
|
+
const override = Number(environment.SAFEWORD_PROGRESS_HEARTBEAT_MS);
|
|
75
|
+
if (!Number.isSafeInteger(override) || override < 1 || override > PROGRESS_HEARTBEAT_INTERVAL_MS) {
|
|
76
|
+
return PROGRESS_HEARTBEAT_INTERVAL_MS;
|
|
77
|
+
}
|
|
78
|
+
return override;
|
|
79
|
+
}
|
|
80
|
+
function createProgressReporter(adapters) {
|
|
81
|
+
let announcementHandle;
|
|
82
|
+
let heartbeatHandle;
|
|
83
|
+
const heartbeatIntervalMs = resolveHeartbeatIntervalMs();
|
|
84
|
+
function scheduleHeartbeat(message) {
|
|
85
|
+
heartbeatHandle = adapters.schedule(() => {
|
|
86
|
+
adapters.emit(message);
|
|
87
|
+
scheduleHeartbeat(message);
|
|
88
|
+
}, heartbeatIntervalMs);
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
start(message) {
|
|
92
|
+
if (announcementHandle !== void 0) adapters.cancel(announcementHandle);
|
|
93
|
+
if (heartbeatHandle !== void 0) adapters.cancel(heartbeatHandle);
|
|
94
|
+
heartbeatHandle = void 0;
|
|
95
|
+
announcementHandle = adapters.schedule(() => {
|
|
96
|
+
adapters.emit(message);
|
|
97
|
+
announcementHandle = void 0;
|
|
98
|
+
}, PROGRESS_ANNOUNCE_DELAY_MS);
|
|
99
|
+
},
|
|
100
|
+
heartbeat(message) {
|
|
101
|
+
if (heartbeatHandle !== void 0) adapters.cancel(heartbeatHandle);
|
|
102
|
+
scheduleHeartbeat(message);
|
|
103
|
+
},
|
|
104
|
+
stop() {
|
|
105
|
+
if (announcementHandle !== void 0) adapters.cancel(announcementHandle);
|
|
106
|
+
if (heartbeatHandle !== void 0) adapters.cancel(heartbeatHandle);
|
|
107
|
+
announcementHandle = void 0;
|
|
108
|
+
heartbeatHandle = void 0;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export {
|
|
114
|
+
assertEffectPolicy,
|
|
115
|
+
consumeManagedProgressSignal,
|
|
116
|
+
shouldReportProgress,
|
|
117
|
+
createBestEffortByteSink,
|
|
118
|
+
createBestEffortProgressSink,
|
|
119
|
+
createManagedReviewProgress,
|
|
120
|
+
createProgressReporter
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=chunk-FV2S4LAR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli-protocol/policy.ts"],"sourcesContent":["import type { CommandDefinition } from './catalog.js';\nimport type { ProgressReporter } from './handler.js';\nimport type { CliResult, Effects } from './result.js';\n\nconst EFFECT_NOUNS: Readonly<Record<keyof Effects, string>> = {\n files: 'file',\n packages: 'package',\n configuration: 'configuration',\n network: 'network',\n destructive: 'destructive',\n};\n\nfunction firstNonEmptyEffect(effects: Effects): keyof Effects | undefined {\n return (Object.keys(effects) as (keyof Effects)[]).find(\n effectClass => effects[effectClass].length > 0,\n );\n}\n\nfunction assertNetworkPolicy(\n definition: CommandDefinition,\n result: CliResult,\n offline: boolean,\n): void {\n if (offline && result.effects.network.length > 0) {\n throw new Error(`Command ${definition.name} reported network effects while running offline`);\n }\n if (definition.networkPolicy === 'never' && result.effects.network.length > 0) {\n throw new Error(`Command ${definition.name} reported undeclared network effects`);\n }\n}\n\nexport function assertEffectPolicy(\n definition: CommandDefinition,\n result: CliResult,\n options: { offline: boolean },\n): void {\n assertNetworkPolicy(definition, result, options.offline);\n\n if (definition.effectClass === 'observe' || definition.effectClass === 'plan') {\n const effectClass = firstNonEmptyEffect(result.effects);\n if (effectClass !== undefined) {\n throw new Error(\n `The ${definition.effectClass} command ${definition.name} reported ${EFFECT_NOUNS[effectClass]} effects`,\n );\n }\n }\n\n if (\n definition.effectClass === 'hook' &&\n (result.effects.packages.length > 0 ||\n result.effects.network.length > 0 ||\n result.effects.destructive.length > 0)\n ) {\n throw new Error(`Hook command ${definition.name} reported forbidden lifecycle effects`);\n }\n}\n\ninterface ProgressAdapters {\n readonly schedule: (callback: () => void, delayMilliseconds: number) => unknown;\n readonly cancel: (handle: unknown) => void;\n readonly emit: (message: string) => void;\n}\n\nconst MANAGED_PROGRESS_SIGNAL = 'SAFEWORD_REVIEW_PROGRESS';\n\nexport function consumeManagedProgressSignal(environment: NodeJS.ProcessEnv): boolean {\n const enabled = environment[MANAGED_PROGRESS_SIGNAL] === '1';\n Reflect.deleteProperty(environment, MANAGED_PROGRESS_SIGNAL);\n return enabled;\n}\n\nexport function shouldReportProgress(options: {\n readonly json: boolean;\n readonly managedReview: boolean;\n readonly quiet: boolean;\n}): boolean {\n return !options.quiet && (!options.json || options.managedReview);\n}\n\nexport function createBestEffortByteSink(\n write: (buffer: Uint8Array, offset: number, length: number) => number,\n): (buffer: Uint8Array) => void {\n return buffer => {\n let offset = 0;\n try {\n while (offset < buffer.length) {\n const written = write(buffer, offset, buffer.length - offset);\n if (!Number.isSafeInteger(written) || written <= 0 || written > buffer.length - offset) {\n return;\n }\n offset += written;\n }\n } catch {\n // Progress is advisory and must never affect the typed command result.\n }\n };\n}\n\nexport function createBestEffortProgressSink(\n write: (buffer: Uint8Array, offset: number, length: number) => number,\n): (message: string) => void {\n const writeBytes = createBestEffortByteSink(write);\n return message => {\n writeBytes(Buffer.from(`${message}\\n`));\n };\n}\n\nexport function createManagedReviewProgress(progress: ProgressReporter): ProgressReporter {\n return { ...progress, managed: true };\n}\n\n/** Operations finishing faster than this are not worth announcing. */\nconst PROGRESS_ANNOUNCE_DELAY_MS = 100;\n/** A long wait needs proof that the coordinator is still responsive. */\nconst PROGRESS_HEARTBEAT_INTERVAL_MS = 30_000;\n\n/**\n * Shorten the heartbeat so a test can observe a real one without waiting 30\n * seconds. Internal and test-only: production always uses the bounded default.\n */\nexport function resolveHeartbeatIntervalMs(environment: NodeJS.ProcessEnv = process.env): number {\n if (environment.NODE_ENV !== 'test') return PROGRESS_HEARTBEAT_INTERVAL_MS;\n const override = Number(environment.SAFEWORD_PROGRESS_HEARTBEAT_MS);\n if (\n !Number.isSafeInteger(override) ||\n override < 1 ||\n override > PROGRESS_HEARTBEAT_INTERVAL_MS\n ) {\n return PROGRESS_HEARTBEAT_INTERVAL_MS;\n }\n return override;\n}\n\nexport function createProgressReporter(adapters: ProgressAdapters): ProgressReporter {\n let announcementHandle: unknown;\n let heartbeatHandle: unknown;\n const heartbeatIntervalMs = resolveHeartbeatIntervalMs();\n\n function scheduleHeartbeat(message: string): void {\n heartbeatHandle = adapters.schedule(() => {\n adapters.emit(message);\n scheduleHeartbeat(message);\n }, heartbeatIntervalMs);\n }\n\n return {\n start(message: string): void {\n if (announcementHandle !== undefined) adapters.cancel(announcementHandle);\n if (heartbeatHandle !== undefined) adapters.cancel(heartbeatHandle);\n heartbeatHandle = undefined;\n announcementHandle = adapters.schedule(() => {\n adapters.emit(message);\n announcementHandle = undefined;\n }, PROGRESS_ANNOUNCE_DELAY_MS);\n },\n heartbeat(message: string): void {\n if (heartbeatHandle !== undefined) adapters.cancel(heartbeatHandle);\n scheduleHeartbeat(message);\n },\n stop(): void {\n if (announcementHandle !== undefined) adapters.cancel(announcementHandle);\n if (heartbeatHandle !== undefined) adapters.cancel(heartbeatHandle);\n announcementHandle = undefined;\n heartbeatHandle = undefined;\n },\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
assertSafeClaudeCleanupTarget,
|
|
3
3
|
containedClaudeCleanupPath,
|
|
4
4
|
observeClaudeLegacy
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-4CKCRZDO.js";
|
|
6
6
|
import {
|
|
7
7
|
canonicalClaudeProjectRoot
|
|
8
8
|
} from "./chunk-34NCOTP5.js";
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
cataloguedClaudeLegacyPaths,
|
|
20
20
|
isAcceptedHistoricalFile,
|
|
21
21
|
isAcceptedHistoricalHook
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-NSZGI7HK.js";
|
|
23
23
|
import {
|
|
24
24
|
writeDurableFile,
|
|
25
25
|
writeDurableFileExclusive
|
|
@@ -833,4 +833,4 @@ export {
|
|
|
833
833
|
migrateClaudeLegacyAutomatically,
|
|
834
834
|
recoverClaudeCleanup
|
|
835
835
|
};
|
|
836
|
-
//# sourceMappingURL=chunk-
|
|
836
|
+
//# sourceMappingURL=chunk-GZ36UZJG.js.map
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
acceptedHistoricalHookEntries,
|
|
15
15
|
filterOutEquivalentSafewordHooks,
|
|
16
16
|
filterOutSafewordHooks
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-NSZGI7HK.js";
|
|
18
18
|
import {
|
|
19
19
|
VERSION
|
|
20
20
|
} from "./chunk-UAFM77KW.js";
|
|
@@ -3170,4 +3170,4 @@ export {
|
|
|
3170
3170
|
isCursorProjectPath,
|
|
3171
3171
|
schemaForProjectSurfaces
|
|
3172
3172
|
};
|
|
3173
|
-
//# sourceMappingURL=chunk-
|
|
3173
|
+
//# sourceMappingURL=chunk-H5IFRCB6.js.map
|
|
@@ -114,7 +114,7 @@ var CLAUDE_HISTORICAL_CATALOGUE = {
|
|
|
114
114
|
".safeword/hooks/pre-tool-config-guard.ts": "6bae1971493bc8fae0ce30db07f14a93ad660af11ca9fdf93518b23102d4f084",
|
|
115
115
|
".safeword/hooks/pre-tool-dependency-readiness.ts": "d23343dc3185916140a4b25572f3bb413aece93311f5084444c0debe188f85b8",
|
|
116
116
|
".safeword/hooks/pre-tool-git-bare-fix.sh": "0c75b7be01af1312cbbe86cf5964fb23520c8b9ef90f49075dd74e27ba58d414",
|
|
117
|
-
".safeword/hooks/pre-tool-quality.ts": "
|
|
117
|
+
".safeword/hooks/pre-tool-quality.ts": "b97d1639e4598197baa11c71d640f0cbff79f5bf72b38736ad1f4484bb06e1cf",
|
|
118
118
|
".safeword/hooks/pre-tool-stale-main.ts": "cec806aeb0bfd132d45102eab631155da82b48869f4159cb49cf205d354c3e7e",
|
|
119
119
|
".safeword/hooks/prompt-questions.ts": "57182cccb8550bb2b585c27672bc9bfef56f4688d0afc1afc18bf52661b7c2a6",
|
|
120
120
|
".safeword/hooks/prompt-retro-nudge.ts": "78353d6f47adb0ed9969e83b40429d5792a98789dff67ec0bc4d5a024b1da457",
|
|
@@ -1571,4 +1571,4 @@ export {
|
|
|
1571
1571
|
acceptedHistoricalHookEntries,
|
|
1572
1572
|
cataloguedClaudeLegacyPaths
|
|
1573
1573
|
};
|
|
1574
|
-
//# sourceMappingURL=chunk-
|
|
1574
|
+
//# sourceMappingURL=chunk-NSZGI7HK.js.map
|