safeword 0.82.4 → 0.82.6
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/package.json +1 -1
- package/codex-plugin/runtime/cli.js +87 -16
- package/codex-plugin/skills/audit/SKILL.md +5 -5
- package/codex-plugin/skills/bdd/references/PLAN_IMPLEMENTATION.md +2 -2
- package/codex-plugin/skills/bdd/references/TDD.md +1 -1
- package/codex-plugin/skills/explain/SKILL.md +1 -1
- package/codex-plugin/skills/quality-review/SKILL.md +2 -2
- package/codex-plugin/skills/retro-filer/SKILL.md +2 -2
- package/codex-plugin/skills/review-spec/SKILL.md +2 -2
- package/codex-plugin/skills/self-review/SKILL.md +1 -1
- package/dist/{architecture-V6XNVK7J.js → architecture-74CLGZFF.js} +2 -2
- package/dist/{architecture-document-AMBH2C22.js → architecture-document-GX52PBT7.js} +2 -2
- package/dist/{architecture-monorepo-S3GETI3W.js → architecture-monorepo-VMZ7TU76.js} +2 -2
- package/dist/{boundary-PRWLTQXI.js → boundary-TF3DXKHK.js} +2 -2
- package/dist/{chunk-F56GGOF4.js → chunk-7JA5ZVKI.js} +14 -14
- package/dist/{chunk-LTSHW45K.js → chunk-DSGDL7VJ.js} +2 -2
- package/dist/{chunk-4Z4XW6QY.js → chunk-GGFDFY5V.js} +22 -7
- package/dist/chunk-GGFDFY5V.js.map +1 -0
- package/dist/{chunk-TVNJO2EN.js → chunk-IE67TMML.js} +2 -2
- package/dist/{chunk-TVNJO2EN.js.map → chunk-IE67TMML.js.map} +1 -1
- package/dist/{chunk-BSBKSP54.js → chunk-OXXG2QRJ.js} +2 -2
- package/dist/{chunk-DKC24YSC.js → chunk-VS6NKQYU.js} +31 -5
- package/dist/chunk-VS6NKQYU.js.map +1 -0
- package/dist/{chunk-HK6ANRI2.js → chunk-VUDY6JBS.js} +51 -8
- package/dist/chunk-VUDY6JBS.js.map +1 -0
- package/dist/{cleanup-POCMRGOY.js → cleanup-JKTGGXNM.js} +2 -2
- package/dist/{cleanup-command-NMBIWBCL.js → cleanup-command-GWMUVTKE.js} +2 -2
- package/dist/cli.js +73 -73
- package/dist/{clients-ZORENKZW.js → clients-Y3OKR5QG.js} +2 -2
- package/dist/{codex-bootstrap-DY5ZKDDU.js → codex-bootstrap-ZWWUUJ5S.js} +5 -5
- package/dist/{codex-hook-D7Z5PI56.js → codex-hook-PSAC5SRZ.js} +4 -4
- package/dist/{codify-4EWI7RO7.js → codify-PV7OJ47C.js} +2 -2
- package/dist/{commands-OPDQW2VC.js → commands-HXCBCBSS.js} +6 -6
- package/dist/{config-C3K6XKRU.js → config-YTFOUPKA.js} +2 -2
- package/dist/{configured-paths-6457NJZB.js → configured-paths-2FZCTKE4.js} +2 -2
- package/dist/{conformance-ARUIWFT5.js → conformance-DYDI3AGF.js} +2 -2
- package/dist/{contract-H2EDHGLH.js → contract-Q2BS6JGD.js} +2 -2
- package/dist/{coordinator-QQ6IUSMG.js → coordinator-VZ5DSXBK.js} +2 -2
- package/dist/{corpus-MIZ4IKXY.js → corpus-W5O4S2PZ.js} +2 -2
- package/dist/{cursor-R7HOMVFI.js → cursor-IKWPGP6S.js} +2 -2
- package/dist/{doctor-TWS4CZ4V.js → doctor-T6S6UDH6.js} +4 -4
- package/dist/{drain-retro-spool-SVVDHTQB.js → drain-retro-spool-YH5JMGRD.js} +2 -2
- package/dist/{feature-directories-PFYOAAOF.js → feature-directories-ISEBBWJ6.js} +2 -2
- package/dist/{finalization-WFNZABKW.js → finalization-A7LZSBUM.js} +2 -2
- package/dist/{gh-cli-GIZYMWII.js → gh-cli-DYO6ELW2.js} +2 -2
- package/dist/{github-rest-77H352TI.js → github-rest-2GS5VYH6.js} +2 -2
- package/dist/index.js +1 -1
- package/dist/{job-VX2ZAJ5Z.js → job-4L6IYX4D.js} +2 -2
- package/dist/{learning-sync-SN64DJ4Q.js → learning-sync-RN63ZRCD.js} +2 -2
- package/dist/{legacy-global-guidance-FJBCL3L7.js → legacy-global-guidance-CSD4GWBG.js} +2 -2
- package/dist/{lint-gherkin-HZHP5WBG.js → lint-gherkin-VFZNQPDG.js} +2 -2
- package/dist/{namespace-root-PJ65I3DJ.js → namespace-root-IS25JHXW.js} +2 -2
- package/dist/opencode/dispatcher.js +5 -3
- package/dist/{operations-EQXJ7BYM.js → operations-Q7LUSP4O.js} +5 -5
- package/dist/{output-7Y6VDX5R.js → output-DDVD5XHO.js} +2 -2
- package/dist/{packet-K34ZB2TK.js → packet-UHY66TN6.js} +2 -2
- package/dist/presets/typescript/index.js +1 -1
- package/dist/{profile-FWGIVRAM.js → profile-KESOZZEP.js} +2 -2
- package/dist/{profile-VKMIMY52.js → profile-LKUTDCMA.js} +2 -2
- package/dist/{prompt-EA5VOXUE.js → prompt-J3ARNKUH.js} +2 -2
- package/dist/{public-retros-IC2KNXUC.js → public-retros-V4WZJAQ5.js} +2 -2
- package/dist/{remove-LO6BIE3H.js → remove-KQKAY3WH.js} +2 -2
- package/dist/{retro-OMGVS6KF.js → retro-ZGJGO65H.js} +8 -8
- package/dist/{retro-draft-spool-VPLRX5YF.js → retro-draft-spool-BMTG6566.js} +2 -2
- package/dist/{retro-drain-MARKKH5Q.js → retro-drain-AHJSXI7W.js} +3 -3
- package/dist/{retro-extract-SAJIQKKB.js → retro-extract-WPPLCDH4.js} +2 -2
- package/dist/{review-knowledge-NSFPJXAA.js → review-knowledge-FRARZIQ6.js} +2 -2
- package/dist/{review-pr-ACTDSS7E.js → review-pr-GA3SBUSD.js} +2 -2
- package/dist/{review-pr-publication-5WNYDBMK.js → review-pr-publication-3TJHOJUF.js} +2 -2
- package/dist/{run-KRCAVD7D.js → run-ZABCQOOP.js} +2 -2
- package/dist/{schema-2KLQRVP7.js → schema-RNA5EGPU.js} +2 -2
- package/dist/{self-report-47Y2JICD.js → self-report-QTTY32AV.js} +2 -2
- package/dist/{status-YOPKHEW5.js → status-5VMO6UEE.js} +4 -4
- package/dist/{status-2JYTWRI4.js → status-LDPUHKZU.js} +2 -2
- package/dist/{sync-config-GIHPD6UC.js → sync-config-KZGEO7XX.js} +2 -2
- package/dist/{sync-tracker-CVV4HE77.js → sync-tracker-ZC53CFHT.js} +2 -2
- package/dist/{test-execution-327VEM7Y.js → test-execution-NDZZMIU4.js} +2 -2
- package/dist/{test-plan-DE5NQMVD.js → test-plan-JUHCSUWE.js} +2 -2
- package/dist/{ticket-new-PMTEOLA4.js → ticket-new-IAS5YKRV.js} +2 -2
- package/dist/{ticket-sync-XZ2K4IEV.js → ticket-sync-HEJIRCVK.js} +2 -2
- package/dist/{tracker-map-CZ5EM64B.js → tracker-map-4JVH2RAF.js} +2 -2
- package/dist/{tracker-sync-MU3KNTV2.js → tracker-sync-XHXRQUB6.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-4Z4XW6QY.js.map +0 -1
- package/dist/chunk-DKC24YSC.js.map +0 -1
- package/dist/chunk-HK6ANRI2.js.map +0 -1
- /package/dist/{architecture-V6XNVK7J.js.map → architecture-74CLGZFF.js.map} +0 -0
- /package/dist/{architecture-document-AMBH2C22.js.map → architecture-document-GX52PBT7.js.map} +0 -0
- /package/dist/{architecture-monorepo-S3GETI3W.js.map → architecture-monorepo-VMZ7TU76.js.map} +0 -0
- /package/dist/{boundary-PRWLTQXI.js.map → boundary-TF3DXKHK.js.map} +0 -0
- /package/dist/{chunk-F56GGOF4.js.map → chunk-7JA5ZVKI.js.map} +0 -0
- /package/dist/{chunk-LTSHW45K.js.map → chunk-DSGDL7VJ.js.map} +0 -0
- /package/dist/{chunk-BSBKSP54.js.map → chunk-OXXG2QRJ.js.map} +0 -0
- /package/dist/{cleanup-POCMRGOY.js.map → cleanup-JKTGGXNM.js.map} +0 -0
- /package/dist/{cleanup-command-NMBIWBCL.js.map → cleanup-command-GWMUVTKE.js.map} +0 -0
- /package/dist/{clients-ZORENKZW.js.map → clients-Y3OKR5QG.js.map} +0 -0
- /package/dist/{codex-bootstrap-DY5ZKDDU.js.map → codex-bootstrap-ZWWUUJ5S.js.map} +0 -0
- /package/dist/{codex-hook-D7Z5PI56.js.map → codex-hook-PSAC5SRZ.js.map} +0 -0
- /package/dist/{codify-4EWI7RO7.js.map → codify-PV7OJ47C.js.map} +0 -0
- /package/dist/{commands-OPDQW2VC.js.map → commands-HXCBCBSS.js.map} +0 -0
- /package/dist/{config-C3K6XKRU.js.map → config-YTFOUPKA.js.map} +0 -0
- /package/dist/{configured-paths-6457NJZB.js.map → configured-paths-2FZCTKE4.js.map} +0 -0
- /package/dist/{conformance-ARUIWFT5.js.map → conformance-DYDI3AGF.js.map} +0 -0
- /package/dist/{contract-H2EDHGLH.js.map → contract-Q2BS6JGD.js.map} +0 -0
- /package/dist/{coordinator-QQ6IUSMG.js.map → coordinator-VZ5DSXBK.js.map} +0 -0
- /package/dist/{corpus-MIZ4IKXY.js.map → corpus-W5O4S2PZ.js.map} +0 -0
- /package/dist/{cursor-R7HOMVFI.js.map → cursor-IKWPGP6S.js.map} +0 -0
- /package/dist/{doctor-TWS4CZ4V.js.map → doctor-T6S6UDH6.js.map} +0 -0
- /package/dist/{drain-retro-spool-SVVDHTQB.js.map → drain-retro-spool-YH5JMGRD.js.map} +0 -0
- /package/dist/{feature-directories-PFYOAAOF.js.map → feature-directories-ISEBBWJ6.js.map} +0 -0
- /package/dist/{finalization-WFNZABKW.js.map → finalization-A7LZSBUM.js.map} +0 -0
- /package/dist/{gh-cli-GIZYMWII.js.map → gh-cli-DYO6ELW2.js.map} +0 -0
- /package/dist/{github-rest-77H352TI.js.map → github-rest-2GS5VYH6.js.map} +0 -0
- /package/dist/{job-VX2ZAJ5Z.js.map → job-4L6IYX4D.js.map} +0 -0
- /package/dist/{learning-sync-SN64DJ4Q.js.map → learning-sync-RN63ZRCD.js.map} +0 -0
- /package/dist/{legacy-global-guidance-FJBCL3L7.js.map → legacy-global-guidance-CSD4GWBG.js.map} +0 -0
- /package/dist/{lint-gherkin-HZHP5WBG.js.map → lint-gherkin-VFZNQPDG.js.map} +0 -0
- /package/dist/{namespace-root-PJ65I3DJ.js.map → namespace-root-IS25JHXW.js.map} +0 -0
- /package/dist/{operations-EQXJ7BYM.js.map → operations-Q7LUSP4O.js.map} +0 -0
- /package/dist/{output-7Y6VDX5R.js.map → output-DDVD5XHO.js.map} +0 -0
- /package/dist/{packet-K34ZB2TK.js.map → packet-UHY66TN6.js.map} +0 -0
- /package/dist/{profile-FWGIVRAM.js.map → profile-KESOZZEP.js.map} +0 -0
- /package/dist/{profile-VKMIMY52.js.map → profile-LKUTDCMA.js.map} +0 -0
- /package/dist/{prompt-EA5VOXUE.js.map → prompt-J3ARNKUH.js.map} +0 -0
- /package/dist/{public-retros-IC2KNXUC.js.map → public-retros-V4WZJAQ5.js.map} +0 -0
- /package/dist/{remove-LO6BIE3H.js.map → remove-KQKAY3WH.js.map} +0 -0
- /package/dist/{retro-OMGVS6KF.js.map → retro-ZGJGO65H.js.map} +0 -0
- /package/dist/{retro-draft-spool-VPLRX5YF.js.map → retro-draft-spool-BMTG6566.js.map} +0 -0
- /package/dist/{retro-drain-MARKKH5Q.js.map → retro-drain-AHJSXI7W.js.map} +0 -0
- /package/dist/{retro-extract-SAJIQKKB.js.map → retro-extract-WPPLCDH4.js.map} +0 -0
- /package/dist/{review-knowledge-NSFPJXAA.js.map → review-knowledge-FRARZIQ6.js.map} +0 -0
- /package/dist/{review-pr-ACTDSS7E.js.map → review-pr-GA3SBUSD.js.map} +0 -0
- /package/dist/{review-pr-publication-5WNYDBMK.js.map → review-pr-publication-3TJHOJUF.js.map} +0 -0
- /package/dist/{run-KRCAVD7D.js.map → run-ZABCQOOP.js.map} +0 -0
- /package/dist/{schema-2KLQRVP7.js.map → schema-RNA5EGPU.js.map} +0 -0
- /package/dist/{self-report-47Y2JICD.js.map → self-report-QTTY32AV.js.map} +0 -0
- /package/dist/{status-2JYTWRI4.js.map → status-5VMO6UEE.js.map} +0 -0
- /package/dist/{status-YOPKHEW5.js.map → status-LDPUHKZU.js.map} +0 -0
- /package/dist/{sync-config-GIHPD6UC.js.map → sync-config-KZGEO7XX.js.map} +0 -0
- /package/dist/{sync-tracker-CVV4HE77.js.map → sync-tracker-ZC53CFHT.js.map} +0 -0
- /package/dist/{test-execution-327VEM7Y.js.map → test-execution-NDZZMIU4.js.map} +0 -0
- /package/dist/{test-plan-DE5NQMVD.js.map → test-plan-JUHCSUWE.js.map} +0 -0
- /package/dist/{ticket-new-PMTEOLA4.js.map → ticket-new-IAS5YKRV.js.map} +0 -0
- /package/dist/{ticket-sync-XZ2K4IEV.js.map → ticket-sync-HEJIRCVK.js.map} +0 -0
- /package/dist/{tracker-map-CZ5EM64B.js.map → tracker-map-4JVH2RAF.js.map} +0 -0
- /package/dist/{tracker-sync-MU3KNTV2.js.map → tracker-sync-XHXRQUB6.js.map} +0 -0
|
@@ -14114,7 +14114,7 @@ function deriveCodexMigrationResult(facts) {
|
|
|
14114
14114
|
const hasLegacy = facts.legacyAssets.length > 0 || facts.legacyEvents.length > 0;
|
|
14115
14115
|
const protectedStatus = legacyProtection(facts, hasLegacy);
|
|
14116
14116
|
const state = migrationState(facts, hasLegacy);
|
|
14117
|
-
const next = nextAction(state);
|
|
14117
|
+
const next = nextAction(state, facts);
|
|
14118
14118
|
return {
|
|
14119
14119
|
schema_version: "2",
|
|
14120
14120
|
ok: state === "plugin",
|
|
@@ -14143,7 +14143,23 @@ function legacyProtection(facts, hasLegacy) {
|
|
|
14143
14143
|
return "unprotected";
|
|
14144
14144
|
return facts.viableLegacyEvents.length === facts.legacyEvents.length ? "protected" : "partial";
|
|
14145
14145
|
}
|
|
14146
|
-
function nextAction(state) {
|
|
14146
|
+
function nextAction(state, facts) {
|
|
14147
|
+
if (state === "plugin_installed_hook_activation_failed") {
|
|
14148
|
+
return {
|
|
14149
|
+
kind: "human",
|
|
14150
|
+
instruction: CODEX_HOOK_ACTIVATION_FAILED_ACTION,
|
|
14151
|
+
mutates: false,
|
|
14152
|
+
requires_human: true
|
|
14153
|
+
};
|
|
14154
|
+
}
|
|
14155
|
+
if (state === "plugin_enabled_hook_unproven" && facts.activationRestartProven && facts.proof.status === "partial") {
|
|
14156
|
+
return {
|
|
14157
|
+
kind: "human",
|
|
14158
|
+
instruction: CODEX_PARTIAL_ACTIVATION_ACTION,
|
|
14159
|
+
mutates: false,
|
|
14160
|
+
requires_human: true
|
|
14161
|
+
};
|
|
14162
|
+
}
|
|
14147
14163
|
if (state === "plugin_installed_app_restart_required" || state === "plugin_enabled_hook_unproven") {
|
|
14148
14164
|
return {
|
|
14149
14165
|
kind: "human",
|
|
@@ -14157,11 +14173,9 @@ function nextAction(state) {
|
|
|
14157
14173
|
}
|
|
14158
14174
|
function renderCodexMigrationHuman(result) {
|
|
14159
14175
|
const lines = [`Codex migration: ${result.state}`, `Protection: ${result.protected}`];
|
|
14160
|
-
|
|
14161
|
-
|
|
14162
|
-
|
|
14163
|
-
lines.push(CODEX_RESTART_CONTEXT);
|
|
14164
|
-
}
|
|
14176
|
+
const context = codexMigrationContext(result);
|
|
14177
|
+
if (context !== undefined)
|
|
14178
|
+
lines.push(context);
|
|
14165
14179
|
const next = result.next_actions[0];
|
|
14166
14180
|
if (next !== undefined) {
|
|
14167
14181
|
lines.push(`Next: ${"command" in next ? next.command : next.instruction}`);
|
|
@@ -14170,12 +14184,19 @@ function renderCodexMigrationHuman(result) {
|
|
|
14170
14184
|
`)}
|
|
14171
14185
|
`;
|
|
14172
14186
|
}
|
|
14187
|
+
function codexMigrationContext(result) {
|
|
14188
|
+
const next = result.next_actions[0];
|
|
14189
|
+
if (result.state === "plugin_enabled_hook_unproven" && next !== undefined && "instruction" in next && next.instruction === CODEX_PARTIAL_ACTIVATION_ACTION) {
|
|
14190
|
+
return CODEX_PARTIAL_ACTIVATION_CONTEXT;
|
|
14191
|
+
}
|
|
14192
|
+
return CODEX_MIGRATION_CONTEXT[result.state];
|
|
14193
|
+
}
|
|
14173
14194
|
function codexMigrationExitCode(result) {
|
|
14174
14195
|
if (result.errors.length > 0)
|
|
14175
14196
|
return 1;
|
|
14176
14197
|
return result.ok ? 0 : 2;
|
|
14177
14198
|
}
|
|
14178
|
-
var CODEX_RESTART_ACTION = "Fully restart Codex, then resume this task", CODEX_REVIEW_THEN_RESTART_ACTION = "Review the installed hooks in Codex Desktop under Settings > Hooks (or with /hooks in the terminal TUI). Fully restart Codex, then resume this task", CODEX_RESTART_INSTRUCTION, CODEX_RESTART_CONTEXT = "This Codex app may keep its loaded Safeword catalogue.", MIGRATION_STATE_RULES, NEXT_COMMANDS;
|
|
14199
|
+
var CODEX_RESTART_ACTION = "Fully restart Codex, then resume this task", CODEX_REVIEW_THEN_RESTART_ACTION = "Review the installed hooks in Codex Desktop under Settings > Hooks (or with /hooks in the terminal TUI). Fully restart Codex, then resume this task", CODEX_RESTART_INSTRUCTION, CODEX_RESTART_CONTEXT = "This Codex app may keep its loaded Safeword catalogue.", CODEX_HOOK_ACTIVATION_FAILED_CONTEXT = "Codex restarted, but Safeword received no current lifecycle hook proof.", CODEX_HOOK_ACTIVATION_FAILED_ACTION = "Review the installed hooks in Codex Desktop under Settings > Hooks (or with /hooks in the terminal TUI). If they are enabled and trusted, use a Codex surface that dispatches lifecycle hooks before relying on Safeword protection.", CODEX_PARTIAL_ACTIVATION_CONTEXT = "Codex restarted and Safeword has partial current lifecycle hook proof.", CODEX_PARTIAL_ACTIVATION_ACTION = "Continue in this Codex session. Safeword will confirm protection after the remaining lifecycle hooks run.", MIGRATION_STATE_RULES, NEXT_COMMANDS, CODEX_MIGRATION_CONTEXT;
|
|
14179
14200
|
var init_migration = __esm(() => {
|
|
14180
14201
|
init_schema();
|
|
14181
14202
|
init_inventory();
|
|
@@ -14194,6 +14215,10 @@ var init_migration = __esm(() => {
|
|
|
14194
14215
|
state: "plugin_update_required",
|
|
14195
14216
|
matches: (facts) => facts.plugin.enabled === true && !codexPluginVersionMatchesPackage(facts.plugin)
|
|
14196
14217
|
},
|
|
14218
|
+
{
|
|
14219
|
+
state: "plugin_installed_hook_activation_failed",
|
|
14220
|
+
matches: (facts) => facts.plugin.enabled === true && !pluginProtectionIsCurrent(facts) && facts.activationPending && facts.activationRestartObserved
|
|
14221
|
+
},
|
|
14197
14222
|
{
|
|
14198
14223
|
state: "plugin_installed_app_restart_required",
|
|
14199
14224
|
matches: (facts) => facts.activationPending && facts.plugin.enabled === true
|
|
@@ -14217,6 +14242,7 @@ var init_migration = __esm(() => {
|
|
|
14217
14242
|
compatibility: "safeword codex migrate --finalize",
|
|
14218
14243
|
plugin: undefined,
|
|
14219
14244
|
plugin_installed_app_restart_required: undefined,
|
|
14245
|
+
plugin_installed_hook_activation_failed: undefined,
|
|
14220
14246
|
plugin_enabled_hook_unproven: undefined,
|
|
14221
14247
|
plugin_setup_required: "safeword codex migrate",
|
|
14222
14248
|
plugin_disabled: "safeword codex migrate",
|
|
@@ -14224,6 +14250,19 @@ var init_migration = __esm(() => {
|
|
|
14224
14250
|
legacy: "safeword codex migrate",
|
|
14225
14251
|
not_configured: "safeword codex migrate"
|
|
14226
14252
|
};
|
|
14253
|
+
CODEX_MIGRATION_CONTEXT = {
|
|
14254
|
+
recovery_required: undefined,
|
|
14255
|
+
plugin_setup_required: `Setup: ${CODEX_MIGRATION_SCHEMA.paths.bootstrapSkill}`,
|
|
14256
|
+
plugin_disabled: undefined,
|
|
14257
|
+
plugin_update_required: undefined,
|
|
14258
|
+
legacy: undefined,
|
|
14259
|
+
plugin_installed_app_restart_required: CODEX_RESTART_CONTEXT,
|
|
14260
|
+
plugin_installed_hook_activation_failed: CODEX_HOOK_ACTIVATION_FAILED_CONTEXT,
|
|
14261
|
+
plugin_enabled_hook_unproven: CODEX_RESTART_CONTEXT,
|
|
14262
|
+
compatibility: undefined,
|
|
14263
|
+
plugin: undefined,
|
|
14264
|
+
not_configured: undefined
|
|
14265
|
+
};
|
|
14227
14266
|
});
|
|
14228
14267
|
|
|
14229
14268
|
// src/codex-plugin/migration-error.ts
|
|
@@ -36201,6 +36240,24 @@ function codexActivationIsPending(environment = process.env) {
|
|
|
36201
36240
|
return true;
|
|
36202
36241
|
}
|
|
36203
36242
|
}
|
|
36243
|
+
function codexActivationRestartWasObserved(environment = process.env, now = new Date, options = {}) {
|
|
36244
|
+
try {
|
|
36245
|
+
const identity = currentCodexPluginIdentity();
|
|
36246
|
+
const marker = readActivationMarkerV2(environment, identity);
|
|
36247
|
+
if (marker === null)
|
|
36248
|
+
return false;
|
|
36249
|
+
return activationReceiptForRestart(marker, options.hostObservation ?? observeCodexHostProcesses(), identity, now) !== null;
|
|
36250
|
+
} catch {
|
|
36251
|
+
return false;
|
|
36252
|
+
}
|
|
36253
|
+
}
|
|
36254
|
+
function codexActivationRestartIsProven(environment = process.env) {
|
|
36255
|
+
try {
|
|
36256
|
+
return readActivationReceipt(environment, currentCodexPluginIdentity()) !== null;
|
|
36257
|
+
} catch {
|
|
36258
|
+
return false;
|
|
36259
|
+
}
|
|
36260
|
+
}
|
|
36204
36261
|
function activationIsPendingForIdentity(environment, identity) {
|
|
36205
36262
|
return existsSync31(codexActivationMarkerPath(environment)) || [legacyCodexActivationMarkerPath(environment), legacyCodexRestartMarkerPath(environment)].some((path4) => legacyActivationMarkerMatches(path4, identity));
|
|
36206
36263
|
}
|
|
@@ -36225,6 +36282,7 @@ function codexActivationMarkerIssue(environment = process.env) {
|
|
|
36225
36282
|
}
|
|
36226
36283
|
function packagedHookManifestPath() {
|
|
36227
36284
|
const candidates = [
|
|
36285
|
+
nodePath56.resolve(import.meta.dirname, "../hooks.json"),
|
|
36228
36286
|
nodePath56.resolve(import.meta.dirname, "../codex-plugin/hooks.json"),
|
|
36229
36287
|
nodePath56.resolve(import.meta.dirname, "../../codex-plugin/hooks.json")
|
|
36230
36288
|
];
|
|
@@ -36262,7 +36320,7 @@ function writeCodexActivationMarker(environment = process.env, now = new Date, o
|
|
|
36262
36320
|
}
|
|
36263
36321
|
function activeHostsForMarker(options) {
|
|
36264
36322
|
if (options.activeHosts !== undefined) {
|
|
36265
|
-
return options.activeHosts
|
|
36323
|
+
return options.activeHosts;
|
|
36266
36324
|
}
|
|
36267
36325
|
const observation = options.hostObservation ?? observeCodexHostProcesses();
|
|
36268
36326
|
if (!observation.available)
|
|
@@ -36272,7 +36330,7 @@ function activeHostsForMarker(options) {
|
|
|
36272
36330
|
if (currentHost !== null && activeHosts.every((host) => !sameCodexHost(host, currentHost))) {
|
|
36273
36331
|
activeHosts.push(currentHost);
|
|
36274
36332
|
}
|
|
36275
|
-
return activeHosts
|
|
36333
|
+
return activeHosts;
|
|
36276
36334
|
}
|
|
36277
36335
|
function hostObservationForOverride(current = null) {
|
|
36278
36336
|
return {
|
|
@@ -36283,7 +36341,8 @@ function hostObservationForOverride(current = null) {
|
|
|
36283
36341
|
}
|
|
36284
36342
|
function activationReceiptForRestart(marker, hostObservation, identity, now) {
|
|
36285
36343
|
const currentHost = hostObservation.current;
|
|
36286
|
-
|
|
36344
|
+
const installedAt = Date.parse(marker.installed_at);
|
|
36345
|
+
if (!hostObservation.available || currentHost === null || marker.host_observation !== "observed" || now.getTime() < installedAt || Date.parse(currentHost.started_at) < installedAt || marker.active_hosts.some((installedHost) => sameCodexHost(installedHost, currentHost)) || marker.active_hosts.some((installedHost) => hostObservation.running.some((runningHost) => sameCodexHost(installedHost, runningHost)))) {
|
|
36287
36346
|
return null;
|
|
36288
36347
|
}
|
|
36289
36348
|
return {
|
|
@@ -36649,7 +36708,7 @@ function isActivationMarkerV2(value) {
|
|
|
36649
36708
|
if (typeof value !== "object" || value === null)
|
|
36650
36709
|
return false;
|
|
36651
36710
|
const marker = value;
|
|
36652
|
-
return marker.schema_version === 2 && pluginVersionIsWellFormed(marker.plugin_version) && typeof marker.manifest_sha256 === "string" && SHA256_PATTERN.test(marker.manifest_sha256) && typeof marker.activation_id === "string" && typeof marker.installed_at === "string" && !Number.isNaN(Date.parse(marker.installed_at)) && (marker.host_observation === "observed" || marker.host_observation === "unavailable") && Array.isArray(marker.active_hosts) && marker.active_hosts.every(isCodexHostProcessIdentity) && (marker.host_observation === "observed"
|
|
36711
|
+
return marker.schema_version === 2 && pluginVersionIsWellFormed(marker.plugin_version) && typeof marker.manifest_sha256 === "string" && SHA256_PATTERN.test(marker.manifest_sha256) && typeof marker.activation_id === "string" && typeof marker.installed_at === "string" && !Number.isNaN(Date.parse(marker.installed_at)) && (marker.host_observation === "observed" || marker.host_observation === "unavailable") && Array.isArray(marker.active_hosts) && marker.active_hosts.every(isCodexHostProcessIdentity) && (marker.host_observation === "observed" || marker.active_hosts.length === 0);
|
|
36653
36712
|
}
|
|
36654
36713
|
function isActivationReceiptV1(value) {
|
|
36655
36714
|
if (typeof value !== "object" || value === null)
|
|
@@ -37035,7 +37094,9 @@ function observeCodexMigrationResult(cwd = process.cwd(), environment = process.
|
|
|
37035
37094
|
viableLegacyEvents: observeViableLegacyEvents(cwd, legacyEvents, environment),
|
|
37036
37095
|
finalized: codexFinalizationIsComplete(cwd),
|
|
37037
37096
|
recoveryRequired,
|
|
37038
|
-
activationPending: codexActivationIsPending(environment)
|
|
37097
|
+
activationPending: codexActivationIsPending(environment),
|
|
37098
|
+
activationRestartObserved: codexActivationRestartWasObserved(environment),
|
|
37099
|
+
activationRestartProven: codexActivationRestartIsProven(environment)
|
|
37039
37100
|
});
|
|
37040
37101
|
if (pluginObservationError !== undefined) {
|
|
37041
37102
|
result.errors.push({
|
|
@@ -37053,10 +37114,19 @@ function observeCodexMigrationResult(cwd = process.cwd(), environment = process.
|
|
|
37053
37114
|
}
|
|
37054
37115
|
return result;
|
|
37055
37116
|
}
|
|
37056
|
-
function codexMigrationMessage(
|
|
37057
|
-
|
|
37117
|
+
function codexMigrationMessage(result) {
|
|
37118
|
+
const { proof, state } = result;
|
|
37119
|
+
const next = result.next_actions[0];
|
|
37120
|
+
if (state === "plugin_enabled_hook_unproven" && proof.status === "partial" && next !== undefined && "instruction" in next) {
|
|
37121
|
+
return `Codex restarted and Safeword has partial current lifecycle hook proof. Missing proof: ${proof.missing_events.join(", ")}. ${next.instruction}`;
|
|
37122
|
+
}
|
|
37123
|
+
if (state === "plugin_enabled_hook_unproven") {
|
|
37058
37124
|
return `Codex migration state: plugin_enabled_hook_unproven. In the restarted Codex app, review /hooks and exercise these missing hooks: ${proof.missing_events.join(", ")}. Then run safeword codex migrate --finalize.`;
|
|
37059
37125
|
}
|
|
37126
|
+
if (state === "plugin_installed_hook_activation_failed") {
|
|
37127
|
+
const protection = result.protected === "unprotected" ? "Safeword protection is unavailable in this Codex surface." : `Current plugin protection is unavailable; ${result.protected} legacy protection remains configured.`;
|
|
37128
|
+
return `Codex restarted, but Safeword received no current lifecycle hook proof. Missing proof: ${proof.missing_events.join(", ")}. ${protection}`;
|
|
37129
|
+
}
|
|
37060
37130
|
return CODEX_MIGRATION_MESSAGES[state] ?? `Codex migration state: ${state}.`;
|
|
37061
37131
|
}
|
|
37062
37132
|
function legacyCodexMigrationState(state) {
|
|
@@ -37076,7 +37146,7 @@ function observeCodexMigration(cwd = process.cwd(), environment = process.env) {
|
|
|
37076
37146
|
findings: result.errors.length > 0 ? [] : [
|
|
37077
37147
|
{
|
|
37078
37148
|
code: `CODEX_${legacyState.toUpperCase()}`,
|
|
37079
|
-
message: codexMigrationMessage(result
|
|
37149
|
+
message: codexMigrationMessage(result),
|
|
37080
37150
|
severity: result.ok ? "info" : "warning",
|
|
37081
37151
|
metadata: {
|
|
37082
37152
|
migration_schema_version: result.schema_version,
|
|
@@ -37438,6 +37508,7 @@ var init_operations = __esm(() => {
|
|
|
37438
37508
|
CODEX_CONFIG_PATH2 = CODEX_MIGRATION_SCHEMA.paths.config;
|
|
37439
37509
|
CODEX_MIGRATION_MESSAGES = {
|
|
37440
37510
|
plugin_installed_app_restart_required: CODEX_RESTART_CONTEXT,
|
|
37511
|
+
plugin_installed_hook_activation_failed: CODEX_HOOK_ACTIVATION_FAILED_CONTEXT,
|
|
37441
37512
|
compatibility: "Codex is protected by the current profile plugin; verified legacy protection remains until explicit finalization.",
|
|
37442
37513
|
plugin_enabled_hook_unproven: "Codex migration state: plugin_enabled_hook_unproven. Review /hooks in the restarted Codex app; when protection is confirmed, run safeword codex migrate --finalize.",
|
|
37443
37514
|
recovery_required: "Codex migration state: recovery_required. Recovery is required before migration can continue."
|
|
@@ -561,7 +561,7 @@ Changed project learnings in the resolved namespace root's `learnings/*.md` must
|
|
|
561
561
|
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(git rev-parse --show-toplevel 2> /dev/null || pwd)}"
|
|
562
562
|
source "$PROJECT_DIR/.safeword/hooks/lib/audit-scope.sh"
|
|
563
563
|
audit_scope_initialize "$PROJECT_DIR" || exit $?
|
|
564
|
-
NS_ROOT="$(bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
564
|
+
NS_ROOT="$(bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" project namespace-root --cwd "$PROJECT_DIR")"
|
|
565
565
|
|
|
566
566
|
learning_is_in_audit_scope() {
|
|
567
567
|
[ "$AUDIT_SCOPE_MODE" = "repository" ] && return 0
|
|
@@ -721,13 +721,13 @@ audit_scope_initialize "$PROJECT_DIR" || exit $?
|
|
|
721
721
|
|
|
722
722
|
# Resolve the namespace root (honors config paths.projectRoot in real runs).
|
|
723
723
|
# Fall back on directory existence — robust when the resolver hook is absent.
|
|
724
|
-
NS_ROOT="$(bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
724
|
+
NS_ROOT="$(bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" project namespace-root --cwd "$PROJECT_DIR" 2> /dev/null)"
|
|
725
725
|
[ -d "$NS_ROOT" ] || {
|
|
726
726
|
if [ -d "$PROJECT_DIR/.project" ]; then NS_ROOT="$PROJECT_DIR/.project"; else NS_ROOT="$PROJECT_DIR/.safeword-project"; fi
|
|
727
727
|
}
|
|
728
|
-
PERSONAS_FILE="$(bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
729
|
-
SURFACES_FILE="$(bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
730
|
-
GLOSSARY_FILE="$(bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
728
|
+
PERSONAS_FILE="$(bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" project namespace-root --cwd "$PROJECT_DIR" --key personas 2> /dev/null)"
|
|
729
|
+
SURFACES_FILE="$(bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" project namespace-root --cwd "$PROJECT_DIR" --key surfaces 2> /dev/null)"
|
|
730
|
+
GLOSSARY_FILE="$(bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" project namespace-root --cwd "$PROJECT_DIR" --key glossary 2> /dev/null)"
|
|
731
731
|
[ -n "$PERSONAS_FILE" ] || PERSONAS_FILE="$NS_ROOT/personas.md"
|
|
732
732
|
[ -n "$SURFACES_FILE" ] || SURFACES_FILE="$NS_ROOT/surfaces.md"
|
|
733
733
|
[ -n "$GLOSSARY_FILE" ] || GLOSSARY_FILE="$NS_ROOT/glossary.md"
|
|
@@ -159,10 +159,10 @@ findings remain. Return findings through the typed reviewer result contract.
|
|
|
159
159
|
|
|
160
160
|
## Exit: review, then (optionally) the user
|
|
161
161
|
|
|
162
|
-
1. **Independent review first.** At review time, run `bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
162
|
+
1. **Independent review first.** At review time, run `bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" project review-knowledge --json`. Resolve a review-capable Safeword CLI, then invoke the coordinator with the current files identified by the resolver:
|
|
163
163
|
|
|
164
164
|
```bash
|
|
165
|
-
SAFEWORD_REVIEW_PROGRESS=1 bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
165
|
+
SAFEWORD_REVIEW_PROGRESS=1 bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" review run plan-implementation --agent-handoff --json --context spec.md ticket.md feature-file principles-file personas-file surfaces-file architecture-records -- impl-plan.md
|
|
166
166
|
```
|
|
167
167
|
|
|
168
168
|
The shared coordinator sends that bounded packet to the opposite headless agent when available; its typed verdict, failure classification, and independence level are authoritative. `impl-plan.md` is the work under review; all resolved feature and project artifacts are bounded context. Only when that typed result is `REVIEW_ROUTES_EXHAUSTED`, invoke `$safeword:finish-review` immediately with the original result and the same accepted targets; return every other result unchanged and do not substitute another private subagent. Fix findings, re-resolve the sources, re-review, then stamp the exit with the returned agent provenance (`write-review-stamp.ts --author-agent "author-agent" --reviewer-agent "actual-reviewer" --independence "independence" --phase plan-implementation`, where the review gate is enabled). Add `--model` only when the executed reviewer reports a verifiable model identifier; the coordinator never invents one. Human handoff happens **only after** this review passes — raw planning output is never presented for approval. Exception, any time: information only the user has (intent, priorities, constraints not in code or docs) routes to the user the moment the gap appears — `$safeword:elicit`.
|
|
@@ -196,7 +196,7 @@ Off by default. When `.safeword/config.json` sets `architectureReviewGate: true`
|
|
|
196
196
|
2. **A fresh-context review.** Resolve a review-capable Safeword CLI, then run the shared coordinator with only the bounded design evidence:
|
|
197
197
|
|
|
198
198
|
```bash
|
|
199
|
-
SAFEWORD_REVIEW_PROGRESS=1 bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
199
|
+
SAFEWORD_REVIEW_PROGRESS=1 bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" review run plan-implementation impl-plan.md ticket-spec feature-file --agent-handoff --json
|
|
200
200
|
```
|
|
201
201
|
|
|
202
202
|
The shared coordinator prefers the opposite headless agent. Only when its typed result is `REVIEW_ROUTES_EXHAUSTED`, invoke `$safeword:finish-review` with the original result and the same accepted targets; return every other result unchanged. Degraded findings cannot satisfy a required independent-review gate. On an independent pass, stamp it:
|
|
@@ -39,7 +39,7 @@ Gather the durable trail safeword already keeps, then narrate it. Run:
|
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
41
|
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(git rev-parse --show-toplevel 2> /dev/null || pwd)}"
|
|
42
|
-
NS_ROOT="$(bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
42
|
+
NS_ROOT="$(bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" project namespace-root --cwd "$PROJECT_DIR")"
|
|
43
43
|
# What you're on now: the last re-entry line names the current ticket + Next
|
|
44
44
|
tail -3 "$NS_ROOT/re-entry.md" 2> /dev/null
|
|
45
45
|
# Fallback when re-entry is empty: in_progress tickets (not epics)
|
|
@@ -50,7 +50,7 @@ If in a BDD workflow, read the current ticket from `<namespace-root>/tickets/` a
|
|
|
50
50
|
|
|
51
51
|
### Project-principle challenge
|
|
52
52
|
|
|
53
|
-
For a BDD ticket, run `bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
53
|
+
For a BDD ticket, run `bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" project review-knowledge --json` at the
|
|
54
54
|
start of each pass and read the current `principles`, `personas`, and `surfaces`
|
|
55
55
|
paths and content it returns (including overrides such as `paths.principles`).
|
|
56
56
|
Do not substitute labels or intake-era content.
|
|
@@ -212,7 +212,7 @@ Each pass:
|
|
|
212
212
|
guarantee a bare `safeword` on `PATH`:
|
|
213
213
|
|
|
214
214
|
```bash
|
|
215
|
-
SAFEWORD_REVIEW_PROGRESS=1 bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
215
|
+
SAFEWORD_REVIEW_PROGRESS=1 bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" review run quality-review [--context path/to/evidence] --agent-handoff --json -- changed-file [more-changed-files...]
|
|
216
216
|
```
|
|
217
217
|
|
|
218
218
|
A healthy deep review may return `REVIEW_PENDING` after its foreground
|
|
@@ -17,7 +17,7 @@ a caller-nominated path. The spool contains sanitized safeword findings for
|
|
|
17
17
|
## Procedure
|
|
18
18
|
|
|
19
19
|
1. Before reading or making any tracker call, run
|
|
20
|
-
`bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
20
|
+
`bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" project retro-drain "<spool-path>" --validated-jsonl`.
|
|
21
21
|
Use only its JSONL stdout as the filing input. A nonzero exit means validation
|
|
22
22
|
failed: make no search, comment, or create call, leave the spool unchanged,
|
|
23
23
|
and report `retro-filer: cannot file - draft validation failed`. If its output
|
|
@@ -60,7 +60,7 @@ a caller-nominated path. The spool contains sanitized safeword findings for
|
|
|
60
60
|
the draft only when the append succeeded and the exact ack is visible. If the
|
|
61
61
|
append or verification fails, leave the draft in place.
|
|
62
62
|
5. Create at most five new issues per run. Drain only by running
|
|
63
|
-
`bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
63
|
+
`bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" project retro-drain "<spool-path>"`; never rewrite or
|
|
64
64
|
delete the spool directly. The helper removes only drafts whose valid ack is
|
|
65
65
|
reader-visible, so unfiled or unacknowledged drafts remain. If tracker write
|
|
66
66
|
access is unavailable, leave the spool unchanged and report
|
|
@@ -35,7 +35,7 @@ Adversarially review a ticket's scenarios: treat them as if you're trying to bre
|
|
|
35
35
|
- **Manual re-run** — invoke `$safeword:review-spec` anytime after `define-behavior` (e.g., scenarios changed during implement and you want to re-validate). Allowed on a closed ticket too — a post-hoc audit is still readable.
|
|
36
36
|
|
|
37
37
|
Read the active ticket's `.feature` source first. At review time, run
|
|
38
|
-
`bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
38
|
+
`bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" project review-knowledge --json` and read the current
|
|
39
39
|
`principles`, `personas`, and `surfaces` source paths and content it returns, so
|
|
40
40
|
the review is grounded in project knowledge rather than labels or stale intake
|
|
41
41
|
context. The resolver honors `paths.principles`, `paths.personas`, and
|
|
@@ -58,7 +58,7 @@ Resolve a review-capable Safeword CLI first; source checkouts do not guarantee
|
|
|
58
58
|
a bare `safeword` on `PATH`:
|
|
59
59
|
|
|
60
60
|
```bash
|
|
61
|
-
SAFEWORD_REVIEW_PROGRESS=1 bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
61
|
+
SAFEWORD_REVIEW_PROGRESS=1 bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" review run scenario-gate feature-file [legacy-test-definitions] --context ticket-spec [dimensions-file] principles-file personas-file surfaces-file --agent-handoff --json
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
The coordinator's assigned/actual reviewer, failure classification, and
|
|
@@ -45,7 +45,7 @@ installed helper — report it to the user and resolve before retrying.
|
|
|
45
45
|
## Review the spec (do this now, with the stamp written)
|
|
46
46
|
|
|
47
47
|
The stamp records that a review was invoked; the actual scrutiny is yours. At
|
|
48
|
-
review time, run `bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.
|
|
48
|
+
review time, run `bun "${CODEX_HOME:-$HOME/.codex}/plugins/cache/safeword/safeword/0.82.6/runtime/cli.js" project review-knowledge --json` and use its
|
|
49
49
|
current `principles`, `personas`, and `surfaces` source paths and content—not
|
|
50
50
|
labels remembered from intake. These resolve from `paths.principles`,
|
|
51
51
|
`paths.personas`, and `paths.surfaces` when configured. Read those sources with the active ticket's
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
readJson,
|
|
26
26
|
writeJson
|
|
27
27
|
} from "./chunk-HF3DXZEA.js";
|
|
28
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-IE67TMML.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-74CLGZFF.js.map
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import "./chunk-NEOV7ZY3.js";
|
|
12
12
|
import "./chunk-VZ5B2SIO.js";
|
|
13
13
|
import "./chunk-HF3DXZEA.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-IE67TMML.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-GX52PBT7.js.map
|
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
monorepoFingerprintOf
|
|
6
6
|
} from "./chunk-VZ5B2SIO.js";
|
|
7
7
|
import "./chunk-HF3DXZEA.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-IE67TMML.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-VMZ7TU76.js.map
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
import {
|
|
27
27
|
readFileSafe
|
|
28
28
|
} from "./chunk-HF3DXZEA.js";
|
|
29
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-IE67TMML.js";
|
|
30
30
|
|
|
31
31
|
// src/commands/boundary.ts
|
|
32
32
|
import { execFileSync as execFileSync2 } from "child_process";
|
|
@@ -650,4 +650,4 @@ function boundary(options) {
|
|
|
650
650
|
export {
|
|
651
651
|
boundary
|
|
652
652
|
};
|
|
653
|
-
//# sourceMappingURL=boundary-
|
|
653
|
+
//# sourceMappingURL=boundary-TF3DXKHK.js.map
|
|
@@ -1163,7 +1163,7 @@ var claude = defineIntegrationAdapter({
|
|
|
1163
1163
|
profile: {
|
|
1164
1164
|
available: true,
|
|
1165
1165
|
async observePrecondition(context) {
|
|
1166
|
-
const { claudeInstallRequiresMutation, observeClaudeProfile } = await import("./profile-
|
|
1166
|
+
const { claudeInstallRequiresMutation, observeClaudeProfile } = await import("./profile-KESOZZEP.js");
|
|
1167
1167
|
return {
|
|
1168
1168
|
...observeClaudeProfile(context.cwd, context.scope),
|
|
1169
1169
|
...context.operation === "install" && {
|
|
@@ -1174,16 +1174,16 @@ var claude = defineIntegrationAdapter({
|
|
|
1174
1174
|
},
|
|
1175
1175
|
capabilities: FULL_HOOK_CAPABILITIES,
|
|
1176
1176
|
async observe(context) {
|
|
1177
|
-
const { observeClaudeStatus } = await import("./status-
|
|
1177
|
+
const { observeClaudeStatus } = await import("./status-LDPUHKZU.js");
|
|
1178
1178
|
return observeClaudeStatus(context.cwd);
|
|
1179
1179
|
},
|
|
1180
1180
|
async install(context) {
|
|
1181
1181
|
if (context.ports?.installClaude !== void 0) return context.ports.installClaude();
|
|
1182
|
-
const { installClaudePlugin } = await import("./profile-
|
|
1182
|
+
const { installClaudePlugin } = await import("./profile-KESOZZEP.js");
|
|
1183
1183
|
return installClaudePlugin(context.cwd, context.scope);
|
|
1184
1184
|
},
|
|
1185
1185
|
async uninstall(context) {
|
|
1186
|
-
const { uninstallClaudePlugin } = await import("./profile-
|
|
1186
|
+
const { uninstallClaudePlugin } = await import("./profile-KESOZZEP.js");
|
|
1187
1187
|
return uninstallClaudePlugin(context.cwd, context.scope);
|
|
1188
1188
|
},
|
|
1189
1189
|
effects(context) {
|
|
@@ -1197,7 +1197,7 @@ var codex = defineIntegrationAdapter({
|
|
|
1197
1197
|
profile: {
|
|
1198
1198
|
available: true,
|
|
1199
1199
|
async observePrecondition(context) {
|
|
1200
|
-
const { codexInstallRequiresMutation, observeCodexMigrationResult } = await import("./operations-
|
|
1200
|
+
const { codexInstallRequiresMutation, observeCodexMigrationResult } = await import("./operations-Q7LUSP4O.js");
|
|
1201
1201
|
const observation = observeCodexMigrationResult(context.cwd);
|
|
1202
1202
|
return {
|
|
1203
1203
|
...observation,
|
|
@@ -1209,7 +1209,7 @@ var codex = defineIntegrationAdapter({
|
|
|
1209
1209
|
},
|
|
1210
1210
|
capabilities: FULL_HOOK_CAPABILITIES,
|
|
1211
1211
|
async observe(context) {
|
|
1212
|
-
const { observeCodexMigration } = await import("./operations-
|
|
1212
|
+
const { observeCodexMigration } = await import("./operations-Q7LUSP4O.js");
|
|
1213
1213
|
return observeCodexMigration(context.cwd, context.environment);
|
|
1214
1214
|
},
|
|
1215
1215
|
async install(context) {
|
|
@@ -1233,7 +1233,7 @@ var codex = defineIntegrationAdapter({
|
|
|
1233
1233
|
return context.ports.installCodex();
|
|
1234
1234
|
},
|
|
1235
1235
|
async uninstall() {
|
|
1236
|
-
const { uninstallCodexPlugin } = await import("./operations-
|
|
1236
|
+
const { uninstallCodexPlugin } = await import("./operations-Q7LUSP4O.js");
|
|
1237
1237
|
return uninstallCodexPlugin();
|
|
1238
1238
|
},
|
|
1239
1239
|
effects(context) {
|
|
@@ -1241,7 +1241,7 @@ var codex = defineIntegrationAdapter({
|
|
|
1241
1241
|
}
|
|
1242
1242
|
});
|
|
1243
1243
|
async function resolveOpenCodeRoot(context) {
|
|
1244
|
-
const { resolveOpenCodeConfigRoot } = await import("./profile-
|
|
1244
|
+
const { resolveOpenCodeConfigRoot } = await import("./profile-LKUTDCMA.js");
|
|
1245
1245
|
return resolveOpenCodeConfigRoot({
|
|
1246
1246
|
platform: process.platform === "win32" ? "windows" : "unix",
|
|
1247
1247
|
env: context.environment ?? process.env
|
|
@@ -1273,8 +1273,8 @@ async function observeOpenCode(context) {
|
|
|
1273
1273
|
return openCodeConfigRootRequired();
|
|
1274
1274
|
}
|
|
1275
1275
|
const [{ observeOpenCodeProfile }, { observeOpenCodeVersion }] = await Promise.all([
|
|
1276
|
-
import("./profile-
|
|
1277
|
-
import("./conformance-
|
|
1276
|
+
import("./profile-LKUTDCMA.js"),
|
|
1277
|
+
import("./conformance-DYDI3AGF.js")
|
|
1278
1278
|
]);
|
|
1279
1279
|
return observeOpenCodeProfile(root, {
|
|
1280
1280
|
projectDirectory: context.cwd,
|
|
@@ -1333,13 +1333,13 @@ var opencode = defineIntegrationAdapter({
|
|
|
1333
1333
|
async install(context) {
|
|
1334
1334
|
const root = await resolveOpenCodeRoot(context);
|
|
1335
1335
|
if (root === void 0) return openCodeConfigRootRequired();
|
|
1336
|
-
const { installOpenCodeProfile } = await import("./profile-
|
|
1336
|
+
const { installOpenCodeProfile } = await import("./profile-LKUTDCMA.js");
|
|
1337
1337
|
return installOpenCodeProfile(root);
|
|
1338
1338
|
},
|
|
1339
1339
|
async uninstall(context) {
|
|
1340
1340
|
const root = await resolveOpenCodeRoot(context);
|
|
1341
1341
|
if (root === void 0) return openCodeConfigRootRequired();
|
|
1342
|
-
const { uninstallOpenCodeProfile } = await import("./profile-
|
|
1342
|
+
const { uninstallOpenCodeProfile } = await import("./profile-LKUTDCMA.js");
|
|
1343
1343
|
return uninstallOpenCodeProfile(root);
|
|
1344
1344
|
},
|
|
1345
1345
|
effects(context) {
|
|
@@ -1364,7 +1364,7 @@ var cursor = defineIntegrationAdapter({
|
|
|
1364
1364
|
conformance: { availability: "unavailable" }
|
|
1365
1365
|
},
|
|
1366
1366
|
async observe(context) {
|
|
1367
|
-
const [{ hasCursorProjectAssets, observeCursorProject }, { projectLifecycleSchema }] = await Promise.all([import("./cursor-
|
|
1367
|
+
const [{ hasCursorProjectAssets, observeCursorProject }, { projectLifecycleSchema }] = await Promise.all([import("./cursor-IKWPGP6S.js"), import("./schema-RNA5EGPU.js")]);
|
|
1368
1368
|
const schema = projectLifecycleSchema(context.cwd, context.agents);
|
|
1369
1369
|
const result = observeCursorProject(context.cwd, schema);
|
|
1370
1370
|
if (context.operation !== "uninstall") return result;
|
|
@@ -1392,4 +1392,4 @@ export {
|
|
|
1392
1392
|
coordinateSelectedIntegrations,
|
|
1393
1393
|
PRODUCTION_INTEGRATIONS
|
|
1394
1394
|
};
|
|
1395
|
-
//# sourceMappingURL=chunk-
|
|
1395
|
+
//# sourceMappingURL=chunk-7JA5ZVKI.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
CODEX_PLUGIN_HOOK_EVENTS,
|
|
6
6
|
legacyCodexEventIsViable,
|
|
7
7
|
recordCodexHookProof
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-VS6NKQYU.js";
|
|
9
9
|
import {
|
|
10
10
|
SAFEWORD_SCHEMA,
|
|
11
11
|
generateOwnedPathsModule
|
|
@@ -606,4 +606,4 @@ export {
|
|
|
606
606
|
packagedNamespaceRootLabel,
|
|
607
607
|
codexHook
|
|
608
608
|
};
|
|
609
|
-
//# sourceMappingURL=chunk-
|
|
609
|
+
//# sourceMappingURL=chunk-DSGDL7VJ.js.map
|