mewkit 1.14.0 → 1.14.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/dist/migrate/apply-env-var-rewrites.d.ts +15 -0
- package/dist/migrate/apply-env-var-rewrites.d.ts.map +1 -0
- package/dist/migrate/apply-env-var-rewrites.js +26 -0
- package/dist/migrate/apply-env-var-rewrites.js.map +1 -0
- package/dist/migrate/converters/command-to-codex-skill.d.ts.map +1 -1
- package/dist/migrate/converters/command-to-codex-skill.js +15 -5
- package/dist/migrate/converters/command-to-codex-skill.js.map +1 -1
- package/dist/migrate/converters/fm-to-codex-toml.d.ts +4 -1
- package/dist/migrate/converters/fm-to-codex-toml.d.ts.map +1 -1
- package/dist/migrate/converters/fm-to-codex-toml.js +7 -2
- package/dist/migrate/converters/fm-to-codex-toml.js.map +1 -1
- package/dist/migrate/converters/index.js +1 -1
- package/dist/migrate/converters/index.js.map +1 -1
- package/dist/migrate/discovery/config-discovery.d.ts +29 -0
- package/dist/migrate/discovery/config-discovery.d.ts.map +1 -1
- package/dist/migrate/discovery/config-discovery.js +45 -0
- package/dist/migrate/discovery/config-discovery.js.map +1 -1
- package/dist/migrate/discovery/handlers-json-filter.d.ts.map +1 -1
- package/dist/migrate/discovery/handlers-json-filter.js +4 -2
- package/dist/migrate/discovery/handlers-json-filter.js.map +1 -1
- package/dist/migrate/discovery/hooks-discovery.d.ts +5 -0
- package/dist/migrate/discovery/hooks-discovery.d.ts.map +1 -1
- package/dist/migrate/discovery/hooks-discovery.js +21 -5
- package/dist/migrate/discovery/hooks-discovery.js.map +1 -1
- package/dist/migrate/hooks/codex-hook-wrapper.d.ts +15 -1
- package/dist/migrate/hooks/codex-hook-wrapper.d.ts.map +1 -1
- package/dist/migrate/hooks/codex-hook-wrapper.js +78 -7
- package/dist/migrate/hooks/codex-hook-wrapper.js.map +1 -1
- package/dist/migrate/hooks/codex-path-safety.d.ts +29 -0
- package/dist/migrate/hooks/codex-path-safety.d.ts.map +1 -1
- package/dist/migrate/hooks/codex-path-safety.js +36 -1
- package/dist/migrate/hooks/codex-path-safety.js.map +1 -1
- package/dist/migrate/hooks/codex-sh-wrapper-script.d.ts +8 -0
- package/dist/migrate/hooks/codex-sh-wrapper-script.d.ts.map +1 -0
- package/dist/migrate/hooks/codex-sh-wrapper-script.js +118 -0
- package/dist/migrate/hooks/codex-sh-wrapper-script.js.map +1 -0
- package/dist/migrate/hooks/codex-shell-env-installer.d.ts +14 -0
- package/dist/migrate/hooks/codex-shell-env-installer.d.ts.map +1 -0
- package/dist/migrate/hooks/codex-shell-env-installer.js +82 -0
- package/dist/migrate/hooks/codex-shell-env-installer.js.map +1 -0
- package/dist/migrate/hooks/codex-toml-installer.d.ts +2 -0
- package/dist/migrate/hooks/codex-toml-installer.d.ts.map +1 -1
- package/dist/migrate/hooks/codex-toml-installer.js +3 -1
- package/dist/migrate/hooks/codex-toml-installer.js.map +1 -1
- package/dist/migrate/hooks/hooks-settings-merger.d.ts +3 -0
- package/dist/migrate/hooks/hooks-settings-merger.d.ts.map +1 -1
- package/dist/migrate/hooks/hooks-settings-merger.js +152 -20
- package/dist/migrate/hooks/hooks-settings-merger.js.map +1 -1
- package/dist/migrate/migrate-orchestrator.d.ts +19 -0
- package/dist/migrate/migrate-orchestrator.d.ts.map +1 -1
- package/dist/migrate/migrate-orchestrator.js +154 -24
- package/dist/migrate/migrate-orchestrator.js.map +1 -1
- package/dist/migrate/migrate-ui-summary.d.ts +23 -0
- package/dist/migrate/migrate-ui-summary.d.ts.map +1 -1
- package/dist/migrate/migrate-ui-summary.js +24 -0
- package/dist/migrate/migrate-ui-summary.js.map +1 -1
- package/dist/migrate/model-routing-config.d.ts +3 -1
- package/dist/migrate/model-routing-config.d.ts.map +1 -1
- package/dist/migrate/model-routing-config.js +28 -0
- package/dist/migrate/model-routing-config.js.map +1 -1
- package/dist/migrate/portable-installer.d.ts +14 -1
- package/dist/migrate/portable-installer.d.ts.map +1 -1
- package/dist/migrate/portable-installer.js +110 -9
- package/dist/migrate/portable-installer.js.map +1 -1
- package/dist/migrate/providers/codex/capabilities.d.ts +5 -0
- package/dist/migrate/providers/codex/capabilities.d.ts.map +1 -1
- package/dist/migrate/providers/codex/capabilities.js +31 -0
- package/dist/migrate/providers/codex/capabilities.js.map +1 -1
- package/dist/migrate/providers/codex/config.d.ts.map +1 -1
- package/dist/migrate/providers/codex/config.js +8 -2
- package/dist/migrate/providers/codex/config.js.map +1 -1
- package/dist/migrate/providers/codex/shell-env-policy-emitter.d.ts +27 -0
- package/dist/migrate/providers/codex/shell-env-policy-emitter.d.ts.map +1 -0
- package/dist/migrate/providers/codex/shell-env-policy-emitter.js +86 -0
- package/dist/migrate/providers/codex/shell-env-policy-emitter.js.map +1 -0
- package/dist/migrate/reconcile/index.d.ts +1 -1
- package/dist/migrate/reconcile/index.d.ts.map +1 -1
- package/dist/migrate/reconcile/index.js +1 -1
- package/dist/migrate/reconcile/index.js.map +1 -1
- package/dist/migrate/reconcile/portable-manifest.d.ts +6 -0
- package/dist/migrate/reconcile/portable-manifest.d.ts.map +1 -1
- package/dist/migrate/reconcile/portable-manifest.js +23 -0
- package/dist/migrate/reconcile/portable-manifest.js.map +1 -1
- package/dist/migrate/reconcile/portable-registry.d.ts +18 -18
- package/dist/migrate/reconcile/reconcile-state-builders.d.ts +12 -5
- package/dist/migrate/reconcile/reconcile-state-builders.d.ts.map +1 -1
- package/dist/migrate/reconcile/reconcile-state-builders.js +2 -2
- package/dist/migrate/reconcile/reconcile-state-builders.js.map +1 -1
- package/dist/migrate/references/env-var-rewrite-table.d.ts +36 -0
- package/dist/migrate/references/env-var-rewrite-table.d.ts.map +1 -0
- package/dist/migrate/references/env-var-rewrite-table.js +97 -0
- package/dist/migrate/references/env-var-rewrite-table.js.map +1 -0
- package/dist/migrate/references/reference-classifier.d.ts +15 -0
- package/dist/migrate/references/reference-classifier.d.ts.map +1 -1
- package/dist/migrate/references/reference-classifier.js +33 -0
- package/dist/migrate/references/reference-classifier.js.map +1 -1
- package/dist/migrate/runtime-compat-audit.d.ts +1 -0
- package/dist/migrate/runtime-compat-audit.d.ts.map +1 -1
- package/dist/migrate/runtime-compat-audit.js +8 -3
- package/dist/migrate/runtime-compat-audit.js.map +1 -1
- package/dist/migrate/runtime-coupling-patterns.d.ts +30 -2
- package/dist/migrate/runtime-coupling-patterns.d.ts.map +1 -1
- package/dist/migrate/runtime-coupling-patterns.js +36 -8
- package/dist/migrate/runtime-coupling-patterns.js.map +1 -1
- package/dist/migrate/skill-directory-audit.d.ts +14 -0
- package/dist/migrate/skill-directory-audit.d.ts.map +1 -1
- package/dist/migrate/skill-directory-audit.js +68 -10
- package/dist/migrate/skill-directory-audit.js.map +1 -1
- package/dist/migrate/skill-directory-installer.d.ts +3 -0
- package/dist/migrate/skill-directory-installer.d.ts.map +1 -1
- package/dist/migrate/skill-directory-installer.js +98 -1
- package/dist/migrate/skill-directory-installer.js.map +1 -1
- package/dist/migrate/state-changing-script-detector.d.ts +16 -0
- package/dist/migrate/state-changing-script-detector.d.ts.map +1 -0
- package/dist/migrate/state-changing-script-detector.js +144 -0
- package/dist/migrate/state-changing-script-detector.js.map +1 -0
- package/dist/migrate/validation/migrate-conversion-report.d.ts +28 -0
- package/dist/migrate/validation/migrate-conversion-report.d.ts.map +1 -1
- package/dist/migrate/validation/migrate-conversion-report.js +48 -7
- package/dist/migrate/validation/migrate-conversion-report.js.map +1 -1
- package/dist/migrate/validation/migration-ledger-inputs.d.ts +56 -0
- package/dist/migrate/validation/migration-ledger-inputs.d.ts.map +1 -0
- package/dist/migrate/validation/migration-ledger-inputs.js +160 -0
- package/dist/migrate/validation/migration-ledger-inputs.js.map +1 -0
- package/dist/migrate/validation/migration-record-types.d.ts +38 -0
- package/dist/migrate/validation/migration-record-types.d.ts.map +1 -0
- package/dist/migrate/validation/migration-record-types.js +12 -0
- package/dist/migrate/validation/migration-record-types.js.map +1 -0
- package/dist/migrate/validation/migration-report-writer.d.ts +98 -0
- package/dist/migrate/validation/migration-report-writer.d.ts.map +1 -0
- package/dist/migrate/validation/migration-report-writer.js +0 -0
- package/dist/migrate/validation/migration-report-writer.js.map +1 -0
- package/package.json +1 -1
- package/portable-manifest.json +10 -2
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface EnvVarRewriteApplication {
|
|
2
|
+
content: string;
|
|
3
|
+
/** Distinct tokens that were substituted, with their annotation. */
|
|
4
|
+
applied: Array<{
|
|
5
|
+
token: string;
|
|
6
|
+
rewrittenTo: string;
|
|
7
|
+
annotation: string;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Rewrite every table-known env-var token whose disposition is "rewrite".
|
|
12
|
+
* Returns the new content plus one annotation per distinct rewritten token.
|
|
13
|
+
*/
|
|
14
|
+
export declare function applyEnvVarRewrites(content: string): EnvVarRewriteApplication;
|
|
15
|
+
//# sourceMappingURL=apply-env-var-rewrites.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-env-var-rewrites.d.ts","sourceRoot":"","sources":["../../src/migrate/apply-env-var-rewrites.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB,CAW7E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// Applies the static env-var rewrite table to a file's content BEFORE the audit.
|
|
2
|
+
// Only "rewrite"-disposition tokens are substituted (a fixed literal replaces the
|
|
3
|
+
// token); "neutralize" tokens are left in place for the audit to warn+annotate.
|
|
4
|
+
//
|
|
5
|
+
// SECURITY: the replacement string comes ONLY from the static table (validated by
|
|
6
|
+
// resolveEnvVar against SAFE_REWRITE_OUTPUT). The matched token selects the entry
|
|
7
|
+
// but never contributes to the output — no content-derived interpolation.
|
|
8
|
+
import { envVarTokenPattern, resolveEnvVar } from "./references/env-var-rewrite-table.js";
|
|
9
|
+
/**
|
|
10
|
+
* Rewrite every table-known env-var token whose disposition is "rewrite".
|
|
11
|
+
* Returns the new content plus one annotation per distinct rewritten token.
|
|
12
|
+
*/
|
|
13
|
+
export function applyEnvVarRewrites(content) {
|
|
14
|
+
const appliedByToken = new Map();
|
|
15
|
+
const next = content.replace(envVarTokenPattern(), (token) => {
|
|
16
|
+
const resolution = resolveEnvVar(token);
|
|
17
|
+
if (!resolution || resolution.disposition !== "rewrite" || !resolution.rewriteTo)
|
|
18
|
+
return token;
|
|
19
|
+
if (!appliedByToken.has(token)) {
|
|
20
|
+
appliedByToken.set(token, { token, rewrittenTo: resolution.rewriteTo, annotation: resolution.annotation });
|
|
21
|
+
}
|
|
22
|
+
return resolution.rewriteTo;
|
|
23
|
+
});
|
|
24
|
+
return { content: next, applied: [...appliedByToken.values()] };
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=apply-env-var-rewrites.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-env-var-rewrites.js","sourceRoot":"","sources":["../../src/migrate/apply-env-var-rewrites.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,kFAAkF;AAClF,gFAAgF;AAChF,EAAE;AACF,kFAAkF;AAClF,kFAAkF;AAClF,0EAA0E;AAE1E,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAQ1F;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IAClD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAsE,CAAC;IACrG,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5D,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAC/F,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5G,CAAC;QACD,OAAO,UAAU,CAAC,SAAS,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-to-codex-skill.d.ts","sourceRoot":"","sources":["../../../src/migrate/converters/command-to-codex-skill.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"command-to-codex-skill.d.ts","sourceRoot":"","sources":["../../../src/migrate/converters/command-to-codex-skill.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;AACpH,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGlE,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,CAAC;AAenE,yEAAyE;AACzE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEjE;AAMD,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAA;CAAE,GACzD,gBAAgB,CAsElB"}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
// Converts a source command template into a Codex Agent Skill
|
|
2
2
|
// (.agents/skills/<dir>/SKILL.md). Codex has no command-template surface —
|
|
3
|
-
// custom prompts
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
3
|
+
// custom prompts are deprecated in favor of skills, which validates converting
|
|
4
|
+
// each command into a skill whose body carries the original template
|
|
5
|
+
// (source: https://developers.openai.com/codex/changelog). Dynamic template
|
|
6
|
+
// syntax has no skill equivalent: it is kept verbatim and surfaced as a
|
|
7
|
+
// manual-adaptation warning, never silently stripped.
|
|
8
|
+
//
|
|
9
|
+
// Positional-argument policy (verified 2026-07 via Context7): the custom-prompt
|
|
10
|
+
// argument/placeholder syntax ($1–$9 / $ARGUMENTS) is NOT surfaced in Codex docs
|
|
11
|
+
// (https://developers.openai.com/codex/import), and custom prompts are deprecated
|
|
12
|
+
// anyway. We therefore do NOT emit native positional args — status quo is kept:
|
|
13
|
+
// placeholders are preserved verbatim and flagged for manual adaptation. Recorded
|
|
14
|
+
// as UNKNOWN.
|
|
7
15
|
import { codexCommandSkillDirName, codexCommandSkillRelativePath } from "../references/codex-command-skill-path.js";
|
|
8
16
|
import { stripClaudeRefs } from "./md-strip.js";
|
|
9
17
|
export { codexCommandSkillDirName, codexCommandSkillRelativePath };
|
|
@@ -37,7 +45,9 @@ export function convertCommandToCodexSkill(item, context) {
|
|
|
37
45
|
warnings.push(...stripped.warnings);
|
|
38
46
|
const dynamicSyntax = detectDynamicCommandSyntax(item.body);
|
|
39
47
|
if (dynamicSyntax.length > 0) {
|
|
40
|
-
warnings.push(`Command "${commandName}" uses dynamic template syntax with no Codex skill equivalent (${dynamicSyntax.join("; ")}).
|
|
48
|
+
warnings.push(`Command "${commandName}" uses dynamic template syntax with no Codex skill equivalent (${dynamicSyntax.join("; ")}). Codex custom-prompt argument syntax is unconfirmed in its docs, and custom prompts are ` +
|
|
49
|
+
`deprecated in favor of skills (https://developers.openai.com/codex/changelog). The template is ` +
|
|
50
|
+
`migrated verbatim — manual adaptation needed.`);
|
|
41
51
|
}
|
|
42
52
|
// Command frontmatter that has no SKILL.md equivalent becomes plain guidance text.
|
|
43
53
|
const guidance = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-to-codex-skill.js","sourceRoot":"","sources":["../../../src/migrate/converters/command-to-codex-skill.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,2EAA2E;AAC3E
|
|
1
|
+
{"version":3,"file":"command-to-codex-skill.js","sourceRoot":"","sources":["../../../src/migrate/converters/command-to-codex-skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ReferenceIntegrityIndex } from "../references/fence-aware-reference-rewriter.js";
|
|
1
2
|
import type { ConversionResult, PortableItem } from "../types.js";
|
|
2
3
|
/**
|
|
3
4
|
* Codex TOML field contract — these are the field names the converter emits.
|
|
@@ -17,6 +18,8 @@ export interface CodexConfigEntry {
|
|
|
17
18
|
configFile: string;
|
|
18
19
|
}
|
|
19
20
|
export declare function toCodexSlug(name: string): string;
|
|
20
|
-
export declare function convertFmToCodexToml(item: PortableItem
|
|
21
|
+
export declare function convertFmToCodexToml(item: PortableItem, context?: {
|
|
22
|
+
migratedRefs?: ReferenceIntegrityIndex | null;
|
|
23
|
+
}): ConversionResult;
|
|
21
24
|
export declare function buildCodexConfigEntry(name: string, description?: string): string;
|
|
22
25
|
//# sourceMappingURL=fm-to-codex-toml.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fm-to-codex-toml.d.ts","sourceRoot":"","sources":["../../../src/migrate/converters/fm-to-codex-toml.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMlE;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACnB;AAMD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAehD;AAoCD,wBAAgB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"fm-to-codex-toml.d.ts","sourceRoot":"","sources":["../../../src/migrate/converters/fm-to-codex-toml.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMlE;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACnB;AAMD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAehD;AAoCD,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAA;CAAE,GACzD,gBAAgB,CA4ClB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAMhF"}
|
|
@@ -54,7 +54,7 @@ function deriveSandboxMode(tools) {
|
|
|
54
54
|
warning: `No known read/write tool found in tools frontmatter: "${tools}"`,
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
|
-
export function convertFmToCodexToml(item) {
|
|
57
|
+
export function convertFmToCodexToml(item, context) {
|
|
58
58
|
const warnings = [];
|
|
59
59
|
const slug = toCodexSlug(item.name);
|
|
60
60
|
const lines = [];
|
|
@@ -81,7 +81,12 @@ export function convertFmToCodexToml(item) {
|
|
|
81
81
|
warnings.push(sandboxResult.warning);
|
|
82
82
|
if (sandboxResult.sandboxMode)
|
|
83
83
|
lines.push(`sandbox_mode = "${sandboxResult.sandboxMode}"`);
|
|
84
|
-
const stripped = stripClaudeRefs(item.body, {
|
|
84
|
+
const stripped = stripClaudeRefs(item.body, {
|
|
85
|
+
provider: "codex",
|
|
86
|
+
targetName: providers.codex.displayName,
|
|
87
|
+
file: `${slug}.toml`,
|
|
88
|
+
migratedRefs: context?.migratedRefs,
|
|
89
|
+
});
|
|
85
90
|
warnings.push(...stripped.warnings);
|
|
86
91
|
const body = stripped.content.trim();
|
|
87
92
|
if (body.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fm-to-codex-toml.js","sourceRoot":"","sources":["../../../src/migrate/converters/fm-to-codex-toml.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,2EAA2E;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"fm-to-codex-toml.js","sourceRoot":"","sources":["../../../src/migrate/converters/fm-to-codex-toml.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ export function convertItem(item, format, provider, context) {
|
|
|
34
34
|
case "md-to-kiro-steering":
|
|
35
35
|
return convertMdToKiroSteering(item, provider);
|
|
36
36
|
case "fm-to-codex-toml":
|
|
37
|
-
return convertFmToCodexToml(item);
|
|
37
|
+
return convertFmToCodexToml(item, context);
|
|
38
38
|
case "command-to-codex-skill":
|
|
39
39
|
return convertCommandToCodexSkill(item, context);
|
|
40
40
|
default: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrate/converters/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAOjD,MAAM,UAAU,WAAW,CAC1B,IAAkB,EAClB,MAAwB,EACxB,QAAsB,EACtB,OAA2B;IAE3B,IAAI,CAAC;QACJ,QAAQ,MAAM,EAAE,CAAC;YAChB,KAAK,aAAa;gBACjB,OAAO,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,KAAK,UAAU;gBACd,OAAO,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACtC,KAAK,YAAY;gBAChB,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;YAC9B,KAAK,UAAU;gBACd,OAAO,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACvC,KAAK,YAAY;gBAChB,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;YAC9B,KAAK,YAAY;gBAChB,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;YAC9B,KAAK,UAAU;gBACd,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC/B,KAAK,UAAU;gBACd,OAAO,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,KAAK,WAAW;gBACf,OAAO,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACvC,KAAK,qBAAqB;gBACzB,OAAO,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAChD,KAAK,kBAAkB;gBACtB,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrate/converters/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,32 @@
|
|
|
1
1
|
import type { PortableItem } from "../types.js";
|
|
2
2
|
export declare function discoverConfig(configPath: string): Promise<PortableItem | null>;
|
|
3
|
+
/**
|
|
4
|
+
* Result of scanning `.claude/.env` for key NAMES.
|
|
5
|
+
*
|
|
6
|
+
* The shape deliberately holds ONLY key names — there is no place for a value.
|
|
7
|
+
* A unit test asserts a sentinel value from the source file is absent from
|
|
8
|
+
* every field of this structure.
|
|
9
|
+
*/
|
|
10
|
+
export interface EnvKeyDiscovery {
|
|
11
|
+
/** Absolute path scanned (present even when the file has no keys) */
|
|
12
|
+
sourcePath: string;
|
|
13
|
+
/** Distinct key NAMES in first-seen order — never values */
|
|
14
|
+
readonly keys: readonly string[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parse ONLY the key names out of `.env` text. The value side of each line is
|
|
18
|
+
* split off on the first `=` and discarded immediately — it is never returned,
|
|
19
|
+
* stored, or included in any structure. `export FOO=bar` and `FOO=bar` both
|
|
20
|
+
* yield the key `FOO`. Blank lines, comments, and malformed keys are skipped.
|
|
21
|
+
*
|
|
22
|
+
* This is the input-side hard gate that makes value leakage impossible: the
|
|
23
|
+
* function's return type (`readonly string[]`) cannot express a value.
|
|
24
|
+
*/
|
|
25
|
+
export declare function parseEnvKeyNames(content: string): string[];
|
|
26
|
+
/**
|
|
27
|
+
* Discover the KEY NAMES declared in a source `.claude/.env` file. Returns null
|
|
28
|
+
* when the file does not exist. Values are never read into memory beyond the
|
|
29
|
+
* per-line key split (see module header).
|
|
30
|
+
*/
|
|
31
|
+
export declare function discoverEnvKeys(envPath: string): Promise<EnvKeyDiscovery | null>;
|
|
3
32
|
//# sourceMappingURL=config-discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-discovery.d.ts","sourceRoot":"","sources":["../../../src/migrate/discovery/config-discovery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAYrF"}
|
|
1
|
+
{"version":3,"file":"config-discovery.d.ts","sourceRoot":"","sources":["../../../src/migrate/discovery/config-discovery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAYrF;AAeD;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC/B,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAKD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAiB1D;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAKtF"}
|
|
@@ -14,4 +14,49 @@ export async function discoverConfig(configPath) {
|
|
|
14
14
|
body: content,
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
+
/** A valid POSIX-ish env key: letters/digits/underscore, not leading with a digit. */
|
|
18
|
+
const ENV_KEY = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
19
|
+
/**
|
|
20
|
+
* Parse ONLY the key names out of `.env` text. The value side of each line is
|
|
21
|
+
* split off on the first `=` and discarded immediately — it is never returned,
|
|
22
|
+
* stored, or included in any structure. `export FOO=bar` and `FOO=bar` both
|
|
23
|
+
* yield the key `FOO`. Blank lines, comments, and malformed keys are skipped.
|
|
24
|
+
*
|
|
25
|
+
* This is the input-side hard gate that makes value leakage impossible: the
|
|
26
|
+
* function's return type (`readonly string[]`) cannot express a value.
|
|
27
|
+
*/
|
|
28
|
+
export function parseEnvKeyNames(content) {
|
|
29
|
+
const keys = [];
|
|
30
|
+
const seen = new Set();
|
|
31
|
+
for (const rawLine of content.split(/\r?\n/)) {
|
|
32
|
+
const line = rawLine.trim();
|
|
33
|
+
if (!line || line.startsWith("#"))
|
|
34
|
+
continue;
|
|
35
|
+
const eq = line.indexOf("=");
|
|
36
|
+
if (eq <= 0)
|
|
37
|
+
continue;
|
|
38
|
+
// Split on the FIRST `=` and DISCARD the remainder before anything else.
|
|
39
|
+
let key = line.slice(0, eq).trim();
|
|
40
|
+
// `line.slice(eq + 1)` (the value) is intentionally never bound.
|
|
41
|
+
if (key.startsWith("export "))
|
|
42
|
+
key = key.slice("export ".length).trim();
|
|
43
|
+
if (!ENV_KEY.test(key) || seen.has(key))
|
|
44
|
+
continue;
|
|
45
|
+
seen.add(key);
|
|
46
|
+
keys.push(key);
|
|
47
|
+
}
|
|
48
|
+
return keys;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Discover the KEY NAMES declared in a source `.claude/.env` file. Returns null
|
|
52
|
+
* when the file does not exist. Values are never read into memory beyond the
|
|
53
|
+
* per-line key split (see module header).
|
|
54
|
+
*/
|
|
55
|
+
export async function discoverEnvKeys(envPath) {
|
|
56
|
+
if (!existsSync(envPath))
|
|
57
|
+
return null;
|
|
58
|
+
const content = await readFile(envPath, "utf-8");
|
|
59
|
+
const keys = parseEnvKeyNames(content);
|
|
60
|
+
return { sourcePath: envPath, keys };
|
|
61
|
+
}
|
|
17
62
|
//# sourceMappingURL=config-discovery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-discovery.js","sourceRoot":"","sources":["../../../src/migrate/discovery/config-discovery.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAC7G,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB;IACtD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uBAAuB;QACpC,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE,EAAE;QACf,IAAI,EAAE,OAAO;KACb,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"config-discovery.js","sourceRoot":"","sources":["../../../src/migrate/discovery/config-discovery.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAC7G,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB;IACtD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uBAAuB;QACpC,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE,EAAE;QACf,IAAI,EAAE,OAAO;KACb,CAAC;AACH,CAAC;AA6BD,sFAAsF;AACtF,MAAM,OAAO,GAAG,0BAA0B,CAAC;AAE3C;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC/C,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACtB,yEAAyE;QACzE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,iEAAiE;QACjE,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACxE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe;IACpD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers-json-filter.d.ts","sourceRoot":"","sources":["../../../src/migrate/discovery/handlers-json-filter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handlers-json-filter.d.ts","sourceRoot":"","sources":["../../../src/migrate/discovery/handlers-json-filter.ts"],"names":[],"mappings":"AAQA,UAAU,YAAY;IACrB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC;CAChG;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AASD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoCjH"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
// Filter handlers.json: drop entries pointing at
|
|
2
|
-
//
|
|
1
|
+
// Filter handlers.json: drop entries pointing at handlers that have NO portable execution
|
|
2
|
+
// path on the target (.ps1/.bat/.cmd/.py) so the target dispatcher doesn't reference a
|
|
3
|
+
// non-existent file at runtime. `.sh` handlers are NOT dropped — they migrate via a copied
|
|
4
|
+
// script + generated .cjs wrapper, so their handlers.json entries are kept.
|
|
3
5
|
import { existsSync } from "node:fs";
|
|
4
6
|
import { readFile } from "node:fs/promises";
|
|
5
7
|
import { join } from "node:path";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers-json-filter.js","sourceRoot":"","sources":["../../../src/migrate/discovery/handlers-json-filter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"handlers-json-filter.js","sourceRoot":"","sources":["../../../src/migrate/discovery/handlers-json-filter.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,uFAAuF;AACvF,2FAA2F;AAC3F,4EAA4E;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAWjC,SAAS,gBAAgB,CAAC,KAA4C;IACrE,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;IAC1C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC5D,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB,EAAE,iBAA2B;IACrF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;IAEzE,IAAI,GAAiB,CAAC;IACtB,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACtD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,cAAc,GAAuC,EAAE,CAAC;IAC9D,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAElC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;YACxB,SAAS;QACV,CAAC;QAED,MAAM,IAAI,GAAI,KAAsD,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YACrF,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YACtB,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3E,IAAI,OAAO,EAAE,CAAC;gBACb,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC/C,OAAO,KAAK,CAAC;YACd,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC7C,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AAC3C,CAAC"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import type { PortableItem } from "../types.js";
|
|
2
|
+
/** Runtime classification of a hook handler, consumed by the wrapper generator. */
|
|
3
|
+
export type HookHandlerType = "js" | "sh";
|
|
2
4
|
export interface HookDiscoveryResult {
|
|
3
5
|
items: PortableItem[];
|
|
6
|
+
/** Handlers with no portable execution path (.ps1/.bat/.cmd/.py) — reported, not migrated. */
|
|
4
7
|
skippedShellHooks: string[];
|
|
5
8
|
}
|
|
9
|
+
/** Classify a hook filename into a runtime handler type, or null if unsupported. */
|
|
10
|
+
export declare function classifyHookHandler(fileName: string): HookHandlerType | null;
|
|
6
11
|
export declare function discoverHooks(sourcePath: string): Promise<HookDiscoveryResult>;
|
|
7
12
|
//# sourceMappingURL=hooks-discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-discovery.d.ts","sourceRoot":"","sources":["../../../src/migrate/discovery/hooks-discovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hooks-discovery.d.ts","sourceRoot":"","sources":["../../../src/migrate/discovery/hooks-discovery.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQhD,mFAAmF;AACnF,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,8FAA8F;IAC9F,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAK5E;AAED,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwCpF"}
|
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
// Vendored from claudekit-cli (MIT). Source: src/commands/portable/config-discovery.ts (discoverHooks variant)
|
|
2
|
-
// MeowKit-specific:
|
|
2
|
+
// MeowKit-specific: classifies every hook handler by runtime type (js | sh). `.sh` handlers
|
|
3
|
+
// are NOT skipped — they migrate through a copy-script + generated .cjs wrapper (see
|
|
4
|
+
// hooks/codex-hook-wrapper.ts). Truly-unrunnable-on-a-node/sh-wrapper types (.ps1/.bat/.cmd/.py)
|
|
5
|
+
// are reported as skipped with a structured record rather than dropped silently.
|
|
3
6
|
import { readdir, readFile } from "node:fs/promises";
|
|
4
7
|
import { extname, join } from "node:path";
|
|
5
8
|
const NODE_RUNNABLE = new Set([".js", ".cjs", ".mjs", ".ts"]);
|
|
6
|
-
|
|
9
|
+
// Shell scripts that a portable node wrapper can shell out to via /bin/sh.
|
|
10
|
+
const SHELL_RUNNABLE = new Set([".sh"]);
|
|
11
|
+
// Handler types with no portable execution path on the codex output tree.
|
|
12
|
+
const UNSUPPORTED_HANDLER_EXT = new Set([".ps1", ".bat", ".cmd", ".py"]);
|
|
13
|
+
/** Classify a hook filename into a runtime handler type, or null if unsupported. */
|
|
14
|
+
export function classifyHookHandler(fileName) {
|
|
15
|
+
const ext = extname(fileName).toLowerCase();
|
|
16
|
+
if (NODE_RUNNABLE.has(ext))
|
|
17
|
+
return "js";
|
|
18
|
+
if (SHELL_RUNNABLE.has(ext))
|
|
19
|
+
return "sh";
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
7
22
|
export async function discoverHooks(sourcePath) {
|
|
8
23
|
let entries;
|
|
9
24
|
try {
|
|
@@ -18,11 +33,12 @@ export async function discoverHooks(sourcePath) {
|
|
|
18
33
|
if (!entry.isFile() || entry.name.startsWith("."))
|
|
19
34
|
continue;
|
|
20
35
|
const ext = extname(entry.name).toLowerCase();
|
|
21
|
-
if (
|
|
36
|
+
if (UNSUPPORTED_HANDLER_EXT.has(ext)) {
|
|
22
37
|
skippedShellHooks.push(entry.name);
|
|
23
38
|
continue;
|
|
24
39
|
}
|
|
25
|
-
|
|
40
|
+
const handlerType = classifyHookHandler(entry.name);
|
|
41
|
+
if (!handlerType)
|
|
26
42
|
continue;
|
|
27
43
|
const fullPath = join(sourcePath, entry.name);
|
|
28
44
|
try {
|
|
@@ -32,7 +48,7 @@ export async function discoverHooks(sourcePath) {
|
|
|
32
48
|
description: `Hook: ${entry.name}`,
|
|
33
49
|
type: "hooks",
|
|
34
50
|
sourcePath: fullPath,
|
|
35
|
-
frontmatter: {},
|
|
51
|
+
frontmatter: { handlerType },
|
|
36
52
|
body: content,
|
|
37
53
|
});
|
|
38
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-discovery.js","sourceRoot":"","sources":["../../../src/migrate/discovery/hooks-discovery.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAC/G,
|
|
1
|
+
{"version":3,"file":"hooks-discovery.js","sourceRoot":"","sources":["../../../src/migrate/discovery/hooks-discovery.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAC/G,4FAA4F;AAC5F,qFAAqF;AACrF,iGAAiG;AACjG,iFAAiF;AACjF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9D,2EAA2E;AAC3E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,0EAA0E;AAC1E,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAWzE,oFAAoF;AACpF,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAkB;IACrD,IAAI,OAAmC,CAAC;IACxC,IAAI,CAAC;QACJ,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,iBAAiB,GAAa,EAAE,CAAC;IAEvC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAE9C,IAAI,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnC,SAAS;QACV,CAAC;QAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW;YAAE,SAAS;QAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,SAAS,KAAK,CAAC,IAAI,EAAE;gBAClC,IAAI,EAAE,OAAO;gBACb,UAAU,EAAE,QAAQ;gBACpB,WAAW,EAAE,EAAE,WAAW,EAAE;gBAC5B,IAAI,EAAE,OAAO;aACb,CAAC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACR,mBAAmB;QACpB,CAAC;IACF,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -2,9 +2,23 @@ import type { CodexCapabilities } from "../codex-capabilities.js";
|
|
|
2
2
|
export interface WrapperGenerateResult {
|
|
3
3
|
wrapperPath: string;
|
|
4
4
|
originalPath: string;
|
|
5
|
+
/** Handler runtime type this wrapper was generated for. */
|
|
6
|
+
handlerType: "js" | "sh";
|
|
7
|
+
/** For sh handlers: the copied script under the wrapper tree (self-contained). */
|
|
8
|
+
copiedScriptPath?: string;
|
|
5
9
|
success: boolean;
|
|
6
10
|
error?: string;
|
|
7
11
|
}
|
|
8
|
-
|
|
12
|
+
/** Per-original wrapper generation input. */
|
|
13
|
+
export interface WrapperGenerateInput {
|
|
14
|
+
originalPath: string;
|
|
15
|
+
handlerType: "js" | "sh";
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Generate one wrapper per handler. Accepts either the legacy string[] form
|
|
19
|
+
* (all treated as `js`) or the richer WrapperGenerateInput[] form that carries
|
|
20
|
+
* each handler's runtime type so `.sh` handlers get the copy-script + sh wrapper.
|
|
21
|
+
*/
|
|
22
|
+
export declare function generateCodexHookWrappers(originals: string[] | WrapperGenerateInput[], wrapperDir: string, capabilities: CodexCapabilities, timeoutsByPath?: Record<string, number>): WrapperGenerateResult[];
|
|
9
23
|
export declare function buildWrapperScript(originalPath: string, capabilities: CodexCapabilities, hookTimeoutMs?: number): string;
|
|
10
24
|
//# sourceMappingURL=codex-hook-wrapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-hook-wrapper.d.ts","sourceRoot":"","sources":["../../../src/migrate/hooks/codex-hook-wrapper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex-hook-wrapper.d.ts","sourceRoot":"","sources":["../../../src/migrate/hooks/codex-hook-wrapper.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAIlE,MAAM,WAAW,qBAAqB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,6CAA6C;AAC7C,MAAM,WAAW,oBAAoB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAiCD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACxC,SAAS,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAE,EAC5C,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,iBAAiB,EAC/B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,qBAAqB,EAAE,CAgEzB;AAgBD,wBAAgB,kBAAkB,CACjC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,iBAAiB,EAC/B,aAAa,CAAC,EAAE,MAAM,GACpB,MAAM,CA0HR"}
|
|
@@ -1,26 +1,61 @@
|
|
|
1
1
|
// Vendored from claudekit-cli (MIT). Source: src/commands/portable/codex-hook-wrapper.ts
|
|
2
2
|
// Generates per-hook .cjs wrapper that scrubs Claude-only fields from hook stdout
|
|
3
3
|
// before re-emitting to Codex stdout. Wrapper is self-contained — no mewkit imports at runtime.
|
|
4
|
+
//
|
|
5
|
+
// `.sh` handlers additionally get their script COPIED under the wrapper tree
|
|
6
|
+
// (`scripts/`) so the migrated hook has no dependency on the source `.claude/`
|
|
7
|
+
// tree remaining in place (self-contained migration). See codex-sh-wrapper-script.ts.
|
|
4
8
|
import { createHash } from "node:crypto";
|
|
5
|
-
import { mkdirSync, writeFileSync } from "node:fs";
|
|
6
|
-
import { dirname, join, resolve } from "node:path";
|
|
9
|
+
import { chmodSync, copyFileSync, mkdirSync, statSync, writeFileSync } from "node:fs";
|
|
10
|
+
import { basename, dirname, extname, join, resolve } from "node:path";
|
|
11
|
+
import { buildShWrapperScript } from "./codex-sh-wrapper-script.js";
|
|
7
12
|
import { isPathWithinBoundary } from "./codex-path-safety.js";
|
|
8
13
|
function wrapperFilename(originalPath) {
|
|
9
14
|
const abs = resolve(originalPath);
|
|
10
15
|
const hash = createHash("sha256").update(abs).digest("hex").slice(0, 8);
|
|
11
16
|
const base = abs.split(/[\\/]/).pop() ?? "hook.cjs";
|
|
17
|
+
// Shell handlers get a .cjs wrapper filename (the node wrapper), not .sh.
|
|
18
|
+
if (extname(base).toLowerCase() === ".sh") {
|
|
19
|
+
return `${hash}-${base.slice(0, -3)}.cjs`;
|
|
20
|
+
}
|
|
12
21
|
return `${hash}-${base}`;
|
|
13
22
|
}
|
|
14
|
-
|
|
23
|
+
function copiedScriptFilename(originalPath) {
|
|
24
|
+
const abs = resolve(originalPath);
|
|
25
|
+
const hash = createHash("sha256").update(abs).digest("hex").slice(0, 8);
|
|
26
|
+
return `${hash}-${basename(abs)}`;
|
|
27
|
+
}
|
|
28
|
+
/** Build the delete/permission scrub rules table shared by js + sh wrappers. */
|
|
29
|
+
function buildScrubRules(capabilities) {
|
|
30
|
+
const scrubRules = {};
|
|
31
|
+
for (const [event, caps] of Object.entries(capabilities.events)) {
|
|
32
|
+
const deleteFields = [];
|
|
33
|
+
if (!caps.supportsAdditionalContext)
|
|
34
|
+
deleteFields.push("additionalContext");
|
|
35
|
+
const allowedPermissionValues = caps.permissionDecisionValues ?? null;
|
|
36
|
+
if (deleteFields.length > 0 || allowedPermissionValues !== null) {
|
|
37
|
+
scrubRules[event] = { deleteFields, allowedPermissionValues };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return scrubRules;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Generate one wrapper per handler. Accepts either the legacy string[] form
|
|
44
|
+
* (all treated as `js`) or the richer WrapperGenerateInput[] form that carries
|
|
45
|
+
* each handler's runtime type so `.sh` handlers get the copy-script + sh wrapper.
|
|
46
|
+
*/
|
|
47
|
+
export function generateCodexHookWrappers(originals, wrapperDir, capabilities, timeoutsByPath) {
|
|
15
48
|
const results = [];
|
|
16
49
|
const resolvedWrapperDir = resolve(wrapperDir);
|
|
17
|
-
|
|
50
|
+
const inputs = normalizeInputs(originals);
|
|
51
|
+
for (const { originalPath, handlerType } of inputs) {
|
|
18
52
|
const filename = wrapperFilename(originalPath);
|
|
19
53
|
const wrapperPath = join(resolvedWrapperDir, filename);
|
|
20
54
|
if (!isPathWithinBoundary(wrapperPath, resolvedWrapperDir)) {
|
|
21
55
|
results.push({
|
|
22
56
|
wrapperPath,
|
|
23
57
|
originalPath,
|
|
58
|
+
handlerType,
|
|
24
59
|
success: false,
|
|
25
60
|
error: `Unsafe wrapper path: ${wrapperPath} escapes ${resolvedWrapperDir}`,
|
|
26
61
|
});
|
|
@@ -30,14 +65,42 @@ export function generateCodexHookWrappers(originalPaths, wrapperDir, capabilitie
|
|
|
30
65
|
mkdirSync(dirname(wrapperPath), { recursive: true });
|
|
31
66
|
const resolvedPath = resolve(originalPath);
|
|
32
67
|
const hookTimeoutMs = timeoutsByPath?.[resolvedPath] ?? timeoutsByPath?.[originalPath];
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
68
|
+
if (handlerType === "sh") {
|
|
69
|
+
const scriptsDir = join(resolvedWrapperDir, "scripts");
|
|
70
|
+
const copiedScriptPath = join(scriptsDir, copiedScriptFilename(originalPath));
|
|
71
|
+
if (!isPathWithinBoundary(copiedScriptPath, resolvedWrapperDir)) {
|
|
72
|
+
throw new Error(`Unsafe copied-script path: ${copiedScriptPath} escapes ${resolvedWrapperDir}`);
|
|
73
|
+
}
|
|
74
|
+
mkdirSync(scriptsDir, { recursive: true });
|
|
75
|
+
copyFileSync(resolvedPath, copiedScriptPath);
|
|
76
|
+
try {
|
|
77
|
+
// Preserve the original script's executable bits where present.
|
|
78
|
+
const mode = statSync(resolvedPath).mode & 0o777;
|
|
79
|
+
if (mode & 0o100)
|
|
80
|
+
chmodSync(copiedScriptPath, mode);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
/* best-effort mode copy */
|
|
84
|
+
}
|
|
85
|
+
const content = buildShWrapperScript(originalPath, {
|
|
86
|
+
copiedScriptPath,
|
|
87
|
+
scrubRulesJson: JSON.stringify(buildScrubRules(capabilities)),
|
|
88
|
+
timeoutMs: hookTimeoutMs ?? 30000,
|
|
89
|
+
});
|
|
90
|
+
writeFileSync(wrapperPath, content, { mode: 0o755 });
|
|
91
|
+
results.push({ wrapperPath, originalPath, handlerType, copiedScriptPath, success: true });
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
const content = buildWrapperScript(originalPath, capabilities, hookTimeoutMs);
|
|
95
|
+
writeFileSync(wrapperPath, content, { mode: 0o755 });
|
|
96
|
+
results.push({ wrapperPath, originalPath, handlerType, success: true });
|
|
97
|
+
}
|
|
36
98
|
}
|
|
37
99
|
catch (err) {
|
|
38
100
|
results.push({
|
|
39
101
|
wrapperPath,
|
|
40
102
|
originalPath,
|
|
103
|
+
handlerType,
|
|
41
104
|
success: false,
|
|
42
105
|
error: err instanceof Error ? err.message : String(err),
|
|
43
106
|
});
|
|
@@ -45,6 +108,14 @@ export function generateCodexHookWrappers(originalPaths, wrapperDir, capabilitie
|
|
|
45
108
|
}
|
|
46
109
|
return results;
|
|
47
110
|
}
|
|
111
|
+
function normalizeInputs(originals) {
|
|
112
|
+
return originals.map((entry) => {
|
|
113
|
+
if (typeof entry === "string") {
|
|
114
|
+
return { originalPath: entry, handlerType: extname(entry).toLowerCase() === ".sh" ? "sh" : "js" };
|
|
115
|
+
}
|
|
116
|
+
return entry;
|
|
117
|
+
});
|
|
118
|
+
}
|
|
48
119
|
export function buildWrapperScript(originalPath, capabilities, hookTimeoutMs) {
|
|
49
120
|
const scrubRules = {};
|
|
50
121
|
for (const [event, caps] of Object.entries(capabilities.events)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-hook-wrapper.js","sourceRoot":"","sources":["../../../src/migrate/hooks/codex-hook-wrapper.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,kFAAkF;AAClF,gGAAgG;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-hook-wrapper.js","sourceRoot":"","sources":["../../../src/migrate/hooks/codex-hook-wrapper.ts"],"names":[],"mappings":"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"}
|