@monoes/monomindcli 2.15.5 → 2.15.7
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/src/commands/cleanup-plan.d.ts +57 -0
- package/dist/src/commands/cleanup-plan.d.ts.map +1 -0
- package/dist/src/commands/cleanup-plan.js +379 -0
- package/dist/src/commands/cleanup-plan.js.map +1 -0
- package/dist/src/commands/cleanup.d.ts.map +1 -1
- package/dist/src/commands/cleanup.js +87 -160
- package/dist/src/commands/cleanup.js.map +1 -1
- package/dist/src/commands/search-universal.d.ts +8 -0
- package/dist/src/commands/search-universal.d.ts.map +1 -1
- package/dist/src/commands/search-universal.js +14 -0
- package/dist/src/commands/search-universal.js.map +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/orgrt/completion-gate.d.ts +40 -0
- package/dist/src/orgrt/completion-gate.d.ts.map +1 -1
- package/dist/src/orgrt/completion-gate.js +90 -9
- package/dist/src/orgrt/completion-gate.js.map +1 -1
- package/dist/src/orgrt/daemon.d.ts +4 -0
- package/dist/src/orgrt/daemon.d.ts.map +1 -1
- package/dist/src/orgrt/daemon.js +15 -2
- package/dist/src/orgrt/daemon.js.map +1 -1
- package/dist/src/orgrt/decisions.d.ts +24 -1
- package/dist/src/orgrt/decisions.d.ts.map +1 -1
- package/dist/src/orgrt/decisions.js +171 -11
- package/dist/src/orgrt/decisions.js.map +1 -1
- package/dist/src/orgrt/idle-deadline.d.ts +10 -0
- package/dist/src/orgrt/idle-deadline.d.ts.map +1 -1
- package/dist/src/orgrt/idle-deadline.js +8 -0
- package/dist/src/orgrt/idle-deadline.js.map +1 -1
- package/dist/src/orgrt/mailbox.d.ts +7 -0
- package/dist/src/orgrt/mailbox.d.ts.map +1 -1
- package/dist/src/orgrt/mailbox.js +14 -0
- package/dist/src/orgrt/mailbox.js.map +1 -1
- package/dist/src/orgrt/review-packet.d.ts +1 -1
- package/dist/src/orgrt/review-packet.d.ts.map +1 -1
- package/dist/src/orgrt/review-packet.js +2 -1
- package/dist/src/orgrt/review-packet.js.map +1 -1
- package/dist/src/orgrt/role-sandbox.d.ts +1 -0
- package/dist/src/orgrt/role-sandbox.d.ts.map +1 -1
- package/dist/src/orgrt/role-sandbox.js +6 -1
- package/dist/src/orgrt/role-sandbox.js.map +1 -1
- package/dist/src/orgrt/session.d.ts +3 -0
- package/dist/src/orgrt/session.d.ts.map +1 -1
- package/dist/src/orgrt/session.js +8 -1
- package/dist/src/orgrt/session.js.map +1 -1
- package/dist/src/orgrt/task-dag.d.ts +3 -0
- package/dist/src/orgrt/task-dag.d.ts.map +1 -1
- package/dist/src/orgrt/task-dag.js +7 -0
- package/dist/src/orgrt/task-dag.js.map +1 -1
- package/dist/src/orgrt/types.d.ts +3 -0
- package/dist/src/orgrt/types.d.ts.map +1 -1
- package/dist/src/orgrt/types.js +6 -2
- package/dist/src/orgrt/types.js.map +1 -1
- package/dist/src/update/checker.d.ts +3 -1
- package/dist/src/update/checker.d.ts.map +1 -1
- package/dist/src/update/checker.js +7 -3
- package/dist/src/update/checker.js.map +1 -1
- package/dist/src/update/index.d.ts +16 -0
- package/dist/src/update/index.d.ts.map +1 -1
- package/dist/src/update/index.js +37 -1
- package/dist/src/update/index.js.map +1 -1
- package/dist/src/update/refresh-worker.d.ts +9 -0
- package/dist/src/update/refresh-worker.d.ts.map +1 -0
- package/dist/src/update/refresh-worker.js +17 -0
- package/dist/src/update/refresh-worker.js.map +1 -0
- package/dist/src/utils/resource-governor.d.ts +44 -2
- package/dist/src/utils/resource-governor.d.ts.map +1 -1
- package/dist/src/utils/resource-governor.js +157 -40
- package/dist/src/utils/resource-governor.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/.claude/skills/monodesign/SKILL.md +0 -257
- package/.claude/skills/monodesign/adapt.md +0 -53
- package/.claude/skills/monodesign/agents/monodesign-asset-producer.md +0 -100
- package/.claude/skills/monodesign/agents/monodesign-manual-edit-applier.md +0 -103
- package/.claude/skills/monodesign/animate.md +0 -65
- package/.claude/skills/monodesign/audit.md +0 -89
- package/.claude/skills/monodesign/bolder.md +0 -50
- package/.claude/skills/monodesign/clarify.md +0 -64
- package/.claude/skills/monodesign/colorize.md +0 -68
- package/.claude/skills/monodesign/craft.md +0 -51
- package/.claude/skills/monodesign/critique.md +0 -66
- package/.claude/skills/monodesign/delight.md +0 -47
- package/.claude/skills/monodesign/distill.md +0 -56
- package/.claude/skills/monodesign/document.md +0 -83
- package/.claude/skills/monodesign/extract.md +0 -74
- package/.claude/skills/monodesign/harden.md +0 -65
- package/.claude/skills/monodesign/init.md +0 -30
- package/.claude/skills/monodesign/layout.md +0 -36
- package/.claude/skills/monodesign/live.md +0 -34
- package/.claude/skills/monodesign/onboard.md +0 -50
- package/.claude/skills/monodesign/optimize.md +0 -64
- package/.claude/skills/monodesign/overdrive.md +0 -56
- package/.claude/skills/monodesign/polish.md +0 -68
- package/.claude/skills/monodesign/quieter.md +0 -57
- package/.claude/skills/monodesign/reference/adapt.md +0 -312
- package/.claude/skills/monodesign/reference/adapt.native.md +0 -58
- package/.claude/skills/monodesign/reference/android.md +0 -40
- package/.claude/skills/monodesign/reference/animate.md +0 -203
- package/.claude/skills/monodesign/reference/antipatterns-catalog.md +0 -410
- package/.claude/skills/monodesign/reference/audit.md +0 -135
- package/.claude/skills/monodesign/reference/audit.native.md +0 -139
- package/.claude/skills/monodesign/reference/bolder.md +0 -120
- package/.claude/skills/monodesign/reference/brand-workflow.md +0 -180
- package/.claude/skills/monodesign/reference/brand.md +0 -108
- package/.claude/skills/monodesign/reference/clarify.md +0 -288
- package/.claude/skills/monodesign/reference/codex.md +0 -105
- package/.claude/skills/monodesign/reference/cognitive-load.md +0 -106
- package/.claude/skills/monodesign/reference/color-and-contrast.md +0 -105
- package/.claude/skills/monodesign/reference/colorize.md +0 -257
- package/.claude/skills/monodesign/reference/component-specs.md +0 -260
- package/.claude/skills/monodesign/reference/component-states.md +0 -274
- package/.claude/skills/monodesign/reference/component-system.md +0 -358
- package/.claude/skills/monodesign/reference/copy-formulas.md +0 -160
- package/.claude/skills/monodesign/reference/craft.md +0 -123
- package/.claude/skills/monodesign/reference/critique.md +0 -780
- package/.claude/skills/monodesign/reference/delight.md +0 -302
- package/.claude/skills/monodesign/reference/design-principles.md +0 -246
- package/.claude/skills/monodesign/reference/distill.md +0 -111
- package/.claude/skills/monodesign/reference/document.md +0 -429
- package/.claude/skills/monodesign/reference/extract.md +0 -69
- package/.claude/skills/monodesign/reference/harden.md +0 -347
- package/.claude/skills/monodesign/reference/heuristics-scoring.md +0 -234
- package/.claude/skills/monodesign/reference/hooks.md +0 -92
- package/.claude/skills/monodesign/reference/image-prompts.md +0 -130
- package/.claude/skills/monodesign/reference/init.md +0 -221
- package/.claude/skills/monodesign/reference/interaction-design.md +0 -189
- package/.claude/skills/monodesign/reference/ios.md +0 -45
- package/.claude/skills/monodesign/reference/layout.md +0 -185
- package/.claude/skills/monodesign/reference/live.md +0 -710
- package/.claude/skills/monodesign/reference/motion-design.md +0 -109
- package/.claude/skills/monodesign/reference/onboard.md +0 -234
- package/.claude/skills/monodesign/reference/optimize.md +0 -258
- package/.claude/skills/monodesign/reference/overdrive.md +0 -130
- package/.claude/skills/monodesign/reference/personas.md +0 -179
- package/.claude/skills/monodesign/reference/polish.md +0 -241
- package/.claude/skills/monodesign/reference/pre-delivery-checklist.md +0 -108
- package/.claude/skills/monodesign/reference/product.md +0 -60
- package/.claude/skills/monodesign/reference/quieter.md +0 -99
- package/.claude/skills/monodesign/reference/responsive-design.md +0 -114
- package/.claude/skills/monodesign/reference/shape.md +0 -165
- package/.claude/skills/monodesign/reference/spatial-design.md +0 -100
- package/.claude/skills/monodesign/reference/teach.md +0 -10
- package/.claude/skills/monodesign/reference/token-architecture.md +0 -222
- package/.claude/skills/monodesign/reference/typeset.md +0 -301
- package/.claude/skills/monodesign/reference/typography.md +0 -159
- package/.claude/skills/monodesign/reference/ux-research.md +0 -143
- package/.claude/skills/monodesign/reference/ux-rules.md +0 -211
- package/.claude/skills/monodesign/reference/ux-writing.md +0 -107
- package/.claude/skills/monodesign/scripts/command-metadata.json +0 -94
- package/.claude/skills/monodesign/scripts/context-signals.mjs +0 -260
- package/.claude/skills/monodesign/scripts/context.mjs +0 -1065
- package/.claude/skills/monodesign/scripts/critique-storage.mjs +0 -416
- package/.claude/skills/monodesign/scripts/detect-csp.mjs +0 -193
- package/.claude/skills/monodesign/scripts/detect.mjs +0 -33
- package/.claude/skills/monodesign/scripts/detector/browser/injected/index.mjs +0 -1960
- package/.claude/skills/monodesign/scripts/detector/cli/main.mjs +0 -321
- package/.claude/skills/monodesign/scripts/detector/design-system.mjs +0 -814
- package/.claude/skills/monodesign/scripts/detector/detect-antipatterns-browser.js +0 -5628
- package/.claude/skills/monodesign/scripts/detector/detect-antipatterns.mjs +0 -50
- package/.claude/skills/monodesign/scripts/detector/engines/browser/detect-url.mjs +0 -259
- package/.claude/skills/monodesign/scripts/detector/engines/browser/drivers.mjs +0 -349
- package/.claude/skills/monodesign/scripts/detector/engines/regex/detect-text.mjs +0 -636
- package/.claude/skills/monodesign/scripts/detector/engines/static-html/css-cascade.mjs +0 -1016
- package/.claude/skills/monodesign/scripts/detector/engines/static-html/detect-html.mjs +0 -253
- package/.claude/skills/monodesign/scripts/detector/engines/visual/screenshot-contrast.mjs +0 -198
- package/.claude/skills/monodesign/scripts/detector/findings.mjs +0 -12
- package/.claude/skills/monodesign/scripts/detector/fix/css-regions.mjs +0 -181
- package/.claude/skills/monodesign/scripts/detector/fix/fixers.mjs +0 -373
- package/.claude/skills/monodesign/scripts/detector/fix/index.mjs +0 -426
- package/.claude/skills/monodesign/scripts/detector/node/file-system.mjs +0 -198
- package/.claude/skills/monodesign/scripts/detector/profile/profiler.mjs +0 -166
- package/.claude/skills/monodesign/scripts/detector/registry/antipatterns.mjs +0 -563
- package/.claude/skills/monodesign/scripts/detector/rules/checks.mjs +0 -3024
- package/.claude/skills/monodesign/scripts/detector/shared/color.mjs +0 -124
- package/.claude/skills/monodesign/scripts/detector/shared/constants.mjs +0 -101
- package/.claude/skills/monodesign/scripts/detector/shared/fonts.mjs +0 -30
- package/.claude/skills/monodesign/scripts/detector/shared/inline-ignores.mjs +0 -148
- package/.claude/skills/monodesign/scripts/detector/shared/page.mjs +0 -7
- package/.claude/skills/monodesign/scripts/hook-admin.mjs +0 -694
- package/.claude/skills/monodesign/scripts/hook-before-edit.mjs +0 -516
- package/.claude/skills/monodesign/scripts/hook-lib.mjs +0 -1785
- package/.claude/skills/monodesign/scripts/hook.mjs +0 -61
- package/.claude/skills/monodesign/scripts/lib/design-parser.mjs +0 -809
- package/.claude/skills/monodesign/scripts/lib/is-generated.mjs +0 -69
- package/.claude/skills/monodesign/scripts/lib/monodesign-config.mjs +0 -640
- package/.claude/skills/monodesign/scripts/lib/monodesign-paths.mjs +0 -129
- package/.claude/skills/monodesign/scripts/lib/provider.mjs +0 -4
- package/.claude/skills/monodesign/scripts/lib/target-args.mjs +0 -42
- package/.claude/skills/monodesign/scripts/live/browser-script-parts.mjs +0 -50
- package/.claude/skills/monodesign/scripts/live/completion.mjs +0 -19
- package/.claude/skills/monodesign/scripts/live/event-validation.mjs +0 -137
- package/.claude/skills/monodesign/scripts/live/insert-ui.mjs +0 -458
- package/.claude/skills/monodesign/scripts/live/manual-apply.mjs +0 -939
- package/.claude/skills/monodesign/scripts/live/manual-edit-routes.mjs +0 -357
- package/.claude/skills/monodesign/scripts/live/manual-edits-buffer.mjs +0 -152
- package/.claude/skills/monodesign/scripts/live/session-store.mjs +0 -293
- package/.claude/skills/monodesign/scripts/live/svelte-component.mjs +0 -826
- package/.claude/skills/monodesign/scripts/live/sveltekit-adapter.mjs +0 -279
- package/.claude/skills/monodesign/scripts/live/ui-core.mjs +0 -180
- package/.claude/skills/monodesign/scripts/live/vocabulary.mjs +0 -36
- package/.claude/skills/monodesign/scripts/live-accept.mjs +0 -812
- package/.claude/skills/monodesign/scripts/live-browser-dom.js +0 -147
- package/.claude/skills/monodesign/scripts/live-browser-session.js +0 -124
- package/.claude/skills/monodesign/scripts/live-browser.js +0 -11213
- package/.claude/skills/monodesign/scripts/live-commit-manual-edits.mjs +0 -1241
- package/.claude/skills/monodesign/scripts/live-complete.mjs +0 -75
- package/.claude/skills/monodesign/scripts/live-copy-edit-agent.mjs +0 -683
- package/.claude/skills/monodesign/scripts/live-discard-manual-edits.mjs +0 -51
- package/.claude/skills/monodesign/scripts/live-inject.mjs +0 -596
- package/.claude/skills/monodesign/scripts/live-insert.mjs +0 -272
- package/.claude/skills/monodesign/scripts/live-manual-edit-evidence.mjs +0 -363
- package/.claude/skills/monodesign/scripts/live-poll.mjs +0 -384
- package/.claude/skills/monodesign/scripts/live-resume.mjs +0 -94
- package/.claude/skills/monodesign/scripts/live-server.mjs +0 -1210
- package/.claude/skills/monodesign/scripts/live-status.mjs +0 -61
- package/.claude/skills/monodesign/scripts/live-target.mjs +0 -30
- package/.claude/skills/monodesign/scripts/live-wrap.mjs +0 -884
- package/.claude/skills/monodesign/scripts/live.mjs +0 -297
- package/.claude/skills/monodesign/scripts/modern-screenshot.umd.js +0 -14
- package/.claude/skills/monodesign/scripts/palette.mjs +0 -635
- package/.claude/skills/monodesign/scripts/pin.mjs +0 -221
- package/.claude/skills/monodesign/shape.md +0 -71
- package/.claude/skills/monodesign/teach.md +0 -18
- package/.claude/skills/monodesign/typeset.md +0 -59
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ownership-checked plan for `monomind cleanup`.
|
|
3
|
+
*
|
|
4
|
+
* Incident 2026-09-22: `cleanup --force` deleted a fixed list of paths
|
|
5
|
+
* (.agents/, .gemini/, AGENTS.md, data/, ...) wholesale. Run in a real
|
|
6
|
+
* repository it removed ~1000 git-tracked files and the project's memory
|
|
7
|
+
* store. The plan below removes a path only when monomind demonstrably owns
|
|
8
|
+
* it, and the same plan drives both the preview and `--force`, so the preview
|
|
9
|
+
* is exactly what `--force` will do.
|
|
10
|
+
*
|
|
11
|
+
* Rules, in order:
|
|
12
|
+
* 1. A git-tracked file, or a directory holding one, is never deleted or
|
|
13
|
+
* rewritten. Its untracked monomind-owned children may still be removed.
|
|
14
|
+
* 2. User data (memory stores, org memory, knowledge index, monograph and
|
|
15
|
+
* other databases, org configs, backups) is kept unless `--purge-data`.
|
|
16
|
+
* 3. Whole-path removal needs proof of ownership: a monomind-only namespace
|
|
17
|
+
* (.monomind/, monomind.config.json, legacy .swarm/.hive-mind), an entry
|
|
18
|
+
* listed in init's manifest, a file named `monomind*` inside a provider
|
|
19
|
+
* dir, or a file whose content is nothing but monomind marker blocks.
|
|
20
|
+
* 4. A file that mixes monomind marker blocks (or a `monomind` JSON entry)
|
|
21
|
+
* with other content only loses the monomind part.
|
|
22
|
+
* 5. Anything else is kept and reported with the reason.
|
|
23
|
+
*/
|
|
24
|
+
export type CleanupAction = 'remove' | 'strip' | 'skip';
|
|
25
|
+
export interface CleanupPlanEntry {
|
|
26
|
+
/** Path relative to the project root, `/`-separated. */
|
|
27
|
+
path: string;
|
|
28
|
+
kind: 'dir' | 'file';
|
|
29
|
+
action: CleanupAction;
|
|
30
|
+
reason: string;
|
|
31
|
+
size: number;
|
|
32
|
+
/** True for user data that only `--purge-data` removes. */
|
|
33
|
+
data?: boolean;
|
|
34
|
+
/** New file content for `strip`. */
|
|
35
|
+
content?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface CleanupPlanOptions {
|
|
38
|
+
keepConfig: boolean;
|
|
39
|
+
purgeData: boolean;
|
|
40
|
+
/** MONOMIND_MEMORY_PATH, if set. */
|
|
41
|
+
memoryPath?: string;
|
|
42
|
+
}
|
|
43
|
+
export type CleanupPlanResult = {
|
|
44
|
+
ok: true;
|
|
45
|
+
entries: CleanupPlanEntry[];
|
|
46
|
+
} | {
|
|
47
|
+
ok: false;
|
|
48
|
+
error: string;
|
|
49
|
+
};
|
|
50
|
+
/** Remove every monomind marker block. Returns null when there was none. */
|
|
51
|
+
export declare function stripMonomindBlocks(text: string): string | null;
|
|
52
|
+
/** Cheap, reliable signal that `cwd` is monomind's own source checkout. */
|
|
53
|
+
export declare function isMonomindSourceRepo(cwd: string): boolean;
|
|
54
|
+
export declare function buildCleanupPlan(cwd: string, opts: CleanupPlanOptions): CleanupPlanResult;
|
|
55
|
+
/** Apply one `remove`/`strip` entry; `skip` is a no-op. Throws on failure. */
|
|
56
|
+
export declare function applyCleanupEntry(cwd: string, e: CleanupPlanEntry): void;
|
|
57
|
+
//# sourceMappingURL=cleanup-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup-plan.d.ts","sourceRoot":"","sources":["../../../src/commands/cleanup-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,gBAAgB,EAAE,CAAA;CAAE,GACzC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AA6CjC,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY/D;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOzD;AAmRD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,CAWzF;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAIxE"}
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ownership-checked plan for `monomind cleanup`.
|
|
3
|
+
*
|
|
4
|
+
* Incident 2026-09-22: `cleanup --force` deleted a fixed list of paths
|
|
5
|
+
* (.agents/, .gemini/, AGENTS.md, data/, ...) wholesale. Run in a real
|
|
6
|
+
* repository it removed ~1000 git-tracked files and the project's memory
|
|
7
|
+
* store. The plan below removes a path only when monomind demonstrably owns
|
|
8
|
+
* it, and the same plan drives both the preview and `--force`, so the preview
|
|
9
|
+
* is exactly what `--force` will do.
|
|
10
|
+
*
|
|
11
|
+
* Rules, in order:
|
|
12
|
+
* 1. A git-tracked file, or a directory holding one, is never deleted or
|
|
13
|
+
* rewritten. Its untracked monomind-owned children may still be removed.
|
|
14
|
+
* 2. User data (memory stores, org memory, knowledge index, monograph and
|
|
15
|
+
* other databases, org configs, backups) is kept unless `--purge-data`.
|
|
16
|
+
* 3. Whole-path removal needs proof of ownership: a monomind-only namespace
|
|
17
|
+
* (.monomind/, monomind.config.json, legacy .swarm/.hive-mind), an entry
|
|
18
|
+
* listed in init's manifest, a file named `monomind*` inside a provider
|
|
19
|
+
* dir, or a file whose content is nothing but monomind marker blocks.
|
|
20
|
+
* 4. A file that mixes monomind marker blocks (or a `monomind` JSON entry)
|
|
21
|
+
* with other content only loses the monomind part.
|
|
22
|
+
* 5. Anything else is kept and reported with the reason.
|
|
23
|
+
*/
|
|
24
|
+
import { execFileSync } from 'node:child_process';
|
|
25
|
+
import { existsSync, lstatSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
26
|
+
import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
27
|
+
import { readInitManifest } from '../init/shared.js';
|
|
28
|
+
import { safeJsonRemove } from '../platform-adapters/merge.js';
|
|
29
|
+
/** Directories whose every untracked, non-data entry is monomind's own state. */
|
|
30
|
+
const NAMESPACE_DIRS = ['.monomind', '.swarm', '.hive-mind'];
|
|
31
|
+
/** Agent-tool directories shared with the user and other tools. */
|
|
32
|
+
const SHARED_DIRS = ['.claude', '.agents', '.gemini', '.opencode', '.codex', '.kimi-code'];
|
|
33
|
+
/** Root instruction files that may carry a monomind marker block. */
|
|
34
|
+
const MARKED_FILES = ['CLAUDE.md', 'AGENTS.md', 'GEMINI.md'];
|
|
35
|
+
/** Root JSON files where monomind registers one named entry. */
|
|
36
|
+
const JSON_ENTRY_FILES = [
|
|
37
|
+
{ path: '.mcp.json', entry: ['mcpServers', 'monomind'] },
|
|
38
|
+
{ path: 'opencode.json', entry: ['mcp', 'monomind'] },
|
|
39
|
+
];
|
|
40
|
+
/** Data paths (relative to the project root), kept unless --purge-data. */
|
|
41
|
+
const DATA_PATHS = [
|
|
42
|
+
'data/memory',
|
|
43
|
+
'data/memory.db',
|
|
44
|
+
'data/memory.db-wal',
|
|
45
|
+
'data/memory.db-shm',
|
|
46
|
+
'data/memory.graph',
|
|
47
|
+
'memory',
|
|
48
|
+
'.monomind/data',
|
|
49
|
+
'.monomind/org-memory',
|
|
50
|
+
'.monomind/knowledge',
|
|
51
|
+
'.monomind/orgs',
|
|
52
|
+
'.monomind/org-skills',
|
|
53
|
+
'.monomind/backups',
|
|
54
|
+
'.monomind/episodic',
|
|
55
|
+
'.monomind/neural',
|
|
56
|
+
'.monomind/capture',
|
|
57
|
+
'.monomind/graph',
|
|
58
|
+
'.monomind/.monograph',
|
|
59
|
+
];
|
|
60
|
+
/** Any database file is treated as data wherever it sits. */
|
|
61
|
+
const DATA_FILE_RE = /\.(db|sqlite|sqlite3)(-wal|-shm|-journal)?$/;
|
|
62
|
+
/** Generator title init writes as GEMINI.md's first line. */
|
|
63
|
+
const GEMINI_SIGNATURE_RE = /^# Monomind for Antigravity \(agy\) — v\S+\n/;
|
|
64
|
+
const MAX_MARKER_SCAN_BYTES = 2 * 1024 * 1024;
|
|
65
|
+
const NAMED_BLOCK_RE = /^[\t ]*(?:(?:#|\/\/)\s*|<!--\s*)?monomind:start\s+(\S+)\s*(?:-->)?[^\S\r\n]*(?:\r?\n|$)[\s\S]*?^[\t ]*(?:(?:#|\/\/)\s*|<!--\s*)?monomind:end\s+\1\s*(?:-->)?[^\S\r\n]*(?:\r?\n|$)/gm;
|
|
66
|
+
const TAGGED_BLOCK_RE = /^<!-- monomind-block:(\S+) -->\r?\n[\s\S]*?^<!-- \/monomind-block:\1 -->(?:\r?\n|$)/gm;
|
|
67
|
+
const BARE_HTML_BLOCK_RE = /<!--\s*monomind:start\s*-->[\s\S]*?<!--\s*monomind:end\s*-->\r?\n?/g;
|
|
68
|
+
/** Remove every monomind marker block. Returns null when there was none. */
|
|
69
|
+
export function stripMonomindBlocks(text) {
|
|
70
|
+
let count = 0;
|
|
71
|
+
const count1 = () => {
|
|
72
|
+
count++;
|
|
73
|
+
return '';
|
|
74
|
+
};
|
|
75
|
+
const out = text
|
|
76
|
+
.replace(TAGGED_BLOCK_RE, count1)
|
|
77
|
+
.replace(NAMED_BLOCK_RE, count1)
|
|
78
|
+
.replace(BARE_HTML_BLOCK_RE, count1);
|
|
79
|
+
if (count === 0)
|
|
80
|
+
return null;
|
|
81
|
+
return `${out.replace(/\n{3,}/g, '\n\n').trimEnd()}\n`;
|
|
82
|
+
}
|
|
83
|
+
/** Cheap, reliable signal that `cwd` is monomind's own source checkout. */
|
|
84
|
+
export function isMonomindSourceRepo(cwd) {
|
|
85
|
+
try {
|
|
86
|
+
const pkg = JSON.parse(readFileSync(join(cwd, 'package.json'), 'utf8'));
|
|
87
|
+
return pkg.name === 'monomind' && existsSync(join(cwd, 'packages', '@monomind', 'cli'));
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Tracked paths under `cwd`, relative to it. An empty set outside a git repo;
|
|
95
|
+
* an error string when a repo is present but cannot be read (fail closed).
|
|
96
|
+
*/
|
|
97
|
+
function readTracked(cwd) {
|
|
98
|
+
const files = new Set();
|
|
99
|
+
const dirs = new Set();
|
|
100
|
+
let out;
|
|
101
|
+
try {
|
|
102
|
+
out = execFileSync('git', ['-C', cwd, 'ls-files', '-z', '--cached'], {
|
|
103
|
+
encoding: 'utf8',
|
|
104
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
105
|
+
maxBuffer: 256 * 1024 * 1024,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
const stderr = String(err.stderr ?? '');
|
|
110
|
+
if (/not a git repository/i.test(stderr))
|
|
111
|
+
return { files, dirs };
|
|
112
|
+
for (let dir = resolve(cwd);; dir = dirname(dir)) {
|
|
113
|
+
if (existsSync(join(dir, '.git'))) {
|
|
114
|
+
return `cannot list git-tracked files (${err.message.split('\n')[0]}); refusing to delete anything`;
|
|
115
|
+
}
|
|
116
|
+
if (dirname(dir) === dir)
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
return { files, dirs };
|
|
120
|
+
}
|
|
121
|
+
for (const f of out.split('\0')) {
|
|
122
|
+
if (!f)
|
|
123
|
+
continue;
|
|
124
|
+
files.add(f);
|
|
125
|
+
for (let d = f; d.includes('/');) {
|
|
126
|
+
d = d.slice(0, d.lastIndexOf('/'));
|
|
127
|
+
if (dirs.has(d))
|
|
128
|
+
break;
|
|
129
|
+
dirs.add(d);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return { files, dirs };
|
|
133
|
+
}
|
|
134
|
+
function sizeOf(abs, depth = 0) {
|
|
135
|
+
if (depth > 20)
|
|
136
|
+
return 0;
|
|
137
|
+
try {
|
|
138
|
+
const st = lstatSync(abs);
|
|
139
|
+
if (!st.isDirectory())
|
|
140
|
+
return st.size;
|
|
141
|
+
let total = 0;
|
|
142
|
+
for (const name of readdirSync(abs))
|
|
143
|
+
total += sizeOf(join(abs, name), depth + 1);
|
|
144
|
+
return total;
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return 0;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
class Planner {
|
|
151
|
+
cwd;
|
|
152
|
+
tracked;
|
|
153
|
+
opts;
|
|
154
|
+
entries = [];
|
|
155
|
+
dataPaths;
|
|
156
|
+
owned;
|
|
157
|
+
constructor(cwd, tracked, opts) {
|
|
158
|
+
this.cwd = cwd;
|
|
159
|
+
this.tracked = tracked;
|
|
160
|
+
this.opts = opts;
|
|
161
|
+
this.dataPaths = new Set(DATA_PATHS);
|
|
162
|
+
if (opts.memoryPath) {
|
|
163
|
+
const abs = resolve(cwd, opts.memoryPath);
|
|
164
|
+
const rel = relative(cwd, abs);
|
|
165
|
+
if (rel && !rel.startsWith('..') && !isAbsolute(rel))
|
|
166
|
+
this.dataPaths.add(rel.split(sep).join('/'));
|
|
167
|
+
}
|
|
168
|
+
const m = readInitManifest(cwd);
|
|
169
|
+
this.owned = new Set([
|
|
170
|
+
...(m?.skills ?? []).map((n) => `.claude/skills/${n}`),
|
|
171
|
+
...(m?.commands ?? []).map((n) => `.claude/commands/${n}`),
|
|
172
|
+
...(m?.agents ?? []).map((n) => `.claude/agents/${n}`),
|
|
173
|
+
...(m?.kimiSkills ?? []).map((n) => `.kimi-code/skills/${n}`),
|
|
174
|
+
...(m?.kimiPluginCommands ?? []).map((n) => `.kimi-code/plugin/commands/${n}`),
|
|
175
|
+
...(m?.opencodeSkills ?? []).map((n) => `.opencode/skills/${n}`),
|
|
176
|
+
]);
|
|
177
|
+
}
|
|
178
|
+
abs(rel) {
|
|
179
|
+
return join(this.cwd, ...rel.split('/'));
|
|
180
|
+
}
|
|
181
|
+
isData(rel) {
|
|
182
|
+
return this.dataPaths.has(rel) || DATA_FILE_RE.test(rel);
|
|
183
|
+
}
|
|
184
|
+
hasTracked(rel) {
|
|
185
|
+
return this.tracked.files.has(rel) || this.tracked.dirs.has(rel);
|
|
186
|
+
}
|
|
187
|
+
add(rel, kind, action, reason, extra) {
|
|
188
|
+
this.entries.push({ path: rel, kind, action, reason, size: sizeOf(this.abs(rel)), ...extra });
|
|
189
|
+
}
|
|
190
|
+
kindOf(rel) {
|
|
191
|
+
try {
|
|
192
|
+
const st = lstatSync(this.abs(rel));
|
|
193
|
+
return st.isDirectory() ? 'dir' : 'file';
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/** Protected data paths outside the directories walked below (data/, memory/, MONOMIND_MEMORY_PATH). */
|
|
200
|
+
planData() {
|
|
201
|
+
for (const rel of [...this.dataPaths].sort()) {
|
|
202
|
+
const top = rel.split('/')[0];
|
|
203
|
+
if (NAMESPACE_DIRS.includes(top) || SHARED_DIRS.includes(top))
|
|
204
|
+
continue; // walked
|
|
205
|
+
const kind = this.kindOf(rel);
|
|
206
|
+
if (kind)
|
|
207
|
+
this.dataEntry(rel, kind);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
dataEntry(rel, kind) {
|
|
211
|
+
if (this.hasTracked(rel))
|
|
212
|
+
this.add(rel, kind, 'skip', 'tracked by git', { data: true });
|
|
213
|
+
else if (this.opts.purgeData)
|
|
214
|
+
this.add(rel, kind, 'remove', 'user data (--purge-data)', { data: true });
|
|
215
|
+
else
|
|
216
|
+
this.add(rel, kind, 'skip', 'user data — kept unless --purge-data', { data: true });
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Walk a directory. `ownsUnmarked` says whether an untracked entry with no
|
|
220
|
+
* other evidence is ours (namespace dirs) or not (shared provider dirs).
|
|
221
|
+
* Returns true when every entry below was planned for removal, so the
|
|
222
|
+
* caller can collapse them into one removal of this directory.
|
|
223
|
+
*/
|
|
224
|
+
walk(rel, ownsUnmarked) {
|
|
225
|
+
const kind = this.kindOf(rel);
|
|
226
|
+
if (!kind)
|
|
227
|
+
return true;
|
|
228
|
+
if (this.isData(rel)) {
|
|
229
|
+
this.dataEntry(rel, kind);
|
|
230
|
+
return this.opts.purgeData && !this.hasTracked(rel);
|
|
231
|
+
}
|
|
232
|
+
if (this.tracked.files.has(rel)) {
|
|
233
|
+
this.add(rel, kind, 'skip', 'tracked by git');
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
const owned = this.owned.has(rel) || (ownsUnmarked && kind === 'file');
|
|
237
|
+
if (kind === 'file' || lstatSync(this.abs(rel)).isSymbolicLink()) {
|
|
238
|
+
if (owned || /^monomind/i.test(rel.slice(rel.lastIndexOf('/') + 1))) {
|
|
239
|
+
this.add(rel, kind, 'remove', this.owned.has(rel) ? 'listed in init manifest' : 'monomind-owned');
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
return this.planMarkedFile(rel);
|
|
243
|
+
}
|
|
244
|
+
if (!this.tracked.dirs.has(rel) &&
|
|
245
|
+
(this.owned.has(rel) || ownsUnmarked) &&
|
|
246
|
+
!this.containsData(rel)) {
|
|
247
|
+
this.add(rel, 'dir', 'remove', this.owned.has(rel) ? 'listed in init manifest' : 'monomind-owned');
|
|
248
|
+
return true;
|
|
249
|
+
}
|
|
250
|
+
const start = this.entries.length;
|
|
251
|
+
let all = true;
|
|
252
|
+
for (const name of readdirSync(this.abs(rel)).sort()) {
|
|
253
|
+
if (!this.walk(`${rel}/${name}`, ownsUnmarked || this.owned.has(rel)))
|
|
254
|
+
all = false;
|
|
255
|
+
}
|
|
256
|
+
if (all && !this.tracked.dirs.has(rel)) {
|
|
257
|
+
// Every child is ours: remove the directory as one unit instead.
|
|
258
|
+
this.entries.splice(start);
|
|
259
|
+
this.add(rel, 'dir', 'remove', 'contains only monomind-owned content');
|
|
260
|
+
return true;
|
|
261
|
+
}
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
containsData(rel, depth = 0) {
|
|
265
|
+
if (this.isData(rel))
|
|
266
|
+
return true;
|
|
267
|
+
if (depth > 20 || this.kindOf(rel) !== 'dir')
|
|
268
|
+
return false;
|
|
269
|
+
try {
|
|
270
|
+
return readdirSync(this.abs(rel)).some((n) => this.containsData(`${rel}/${n}`, depth + 1));
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
return true; // unreadable: assume it may hold data
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
/** A file carrying monomind marker blocks: strip them, delete only if nothing else remains. */
|
|
277
|
+
planMarkedFile(rel) {
|
|
278
|
+
if (this.tracked.files.has(rel)) {
|
|
279
|
+
this.add(rel, 'file', 'skip', 'tracked by git');
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
let text;
|
|
283
|
+
try {
|
|
284
|
+
const st = lstatSync(this.abs(rel));
|
|
285
|
+
// Never read or rewrite through a symlink: the target may be outside the project.
|
|
286
|
+
if (st.isSymbolicLink() || st.size > MAX_MARKER_SCAN_BYTES)
|
|
287
|
+
throw new Error('not scanned');
|
|
288
|
+
text = readFileSync(this.abs(rel), 'utf8');
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
this.add(rel, 'file', 'skip', 'no monomind ownership evidence');
|
|
292
|
+
return false;
|
|
293
|
+
}
|
|
294
|
+
if (rel === 'GEMINI.md' &&
|
|
295
|
+
GEMINI_SIGNATURE_RE.test(text) &&
|
|
296
|
+
stripMonomindBlocks(text) === null) {
|
|
297
|
+
this.add(rel, 'file', 'remove', 'generated by monomind init (signature line)');
|
|
298
|
+
return true;
|
|
299
|
+
}
|
|
300
|
+
const stripped = stripMonomindBlocks(text);
|
|
301
|
+
if (stripped === null) {
|
|
302
|
+
this.add(rel, 'file', 'skip', 'no monomind ownership evidence');
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
305
|
+
if (stripped.trim() === '') {
|
|
306
|
+
this.add(rel, 'file', 'remove', 'contains only monomind blocks');
|
|
307
|
+
return true;
|
|
308
|
+
}
|
|
309
|
+
this.add(rel, 'file', 'strip', 'remove monomind block, keep the rest', { content: stripped });
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
planJsonEntry(rel, entryPath) {
|
|
313
|
+
if (this.kindOf(rel) !== 'file')
|
|
314
|
+
return;
|
|
315
|
+
if (this.tracked.files.has(rel)) {
|
|
316
|
+
this.add(rel, 'file', 'skip', 'tracked by git');
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
const text = readFileSync(this.abs(rel), 'utf8');
|
|
320
|
+
const res = safeJsonRemove(text, entryPath.slice(0, -1), entryPath[entryPath.length - 1]);
|
|
321
|
+
if (res.diagnostics.length > 0) {
|
|
322
|
+
this.add(rel, 'file', 'skip', 'unparseable JSON — left alone');
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
if (res.content === text) {
|
|
326
|
+
this.add(rel, 'file', 'skip', 'no monomind entry');
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
const rest = JSON.parse(res.content);
|
|
330
|
+
const parent = rest[entryPath[0]];
|
|
331
|
+
const empty = Object.keys(rest).length === 1 &&
|
|
332
|
+
!!parent &&
|
|
333
|
+
typeof parent === 'object' &&
|
|
334
|
+
Object.keys(parent).length === 0;
|
|
335
|
+
if (empty)
|
|
336
|
+
this.add(rel, 'file', 'remove', 'contains only the monomind entry');
|
|
337
|
+
else
|
|
338
|
+
this.add(rel, 'file', 'strip', 'remove the monomind entry, keep the rest', {
|
|
339
|
+
content: res.content,
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
planConfigFile(rel) {
|
|
343
|
+
if (this.kindOf(rel) !== 'file')
|
|
344
|
+
return;
|
|
345
|
+
if (this.tracked.files.has(rel))
|
|
346
|
+
this.add(rel, 'file', 'skip', 'tracked by git');
|
|
347
|
+
else if (this.opts.keepConfig)
|
|
348
|
+
this.add(rel, 'file', 'skip', 'preserved (--keep-config)');
|
|
349
|
+
else
|
|
350
|
+
this.add(rel, 'file', 'remove', 'monomind-owned');
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
export function buildCleanupPlan(cwd, opts) {
|
|
354
|
+
const tracked = readTracked(cwd);
|
|
355
|
+
if (typeof tracked === 'string')
|
|
356
|
+
return { ok: false, error: tracked };
|
|
357
|
+
const p = new Planner(cwd, tracked, opts);
|
|
358
|
+
for (const d of NAMESPACE_DIRS)
|
|
359
|
+
p.walk(d, true);
|
|
360
|
+
for (const d of SHARED_DIRS)
|
|
361
|
+
p.walk(d, false);
|
|
362
|
+
p.planConfigFile('monomind.config.json');
|
|
363
|
+
for (const f of MARKED_FILES)
|
|
364
|
+
if (existsSync(join(cwd, f)))
|
|
365
|
+
p.planMarkedFile(f);
|
|
366
|
+
for (const { path, entry } of JSON_ENTRY_FILES)
|
|
367
|
+
p.planJsonEntry(path, entry);
|
|
368
|
+
p.planData();
|
|
369
|
+
return { ok: true, entries: p.entries };
|
|
370
|
+
}
|
|
371
|
+
/** Apply one `remove`/`strip` entry; `skip` is a no-op. Throws on failure. */
|
|
372
|
+
export function applyCleanupEntry(cwd, e) {
|
|
373
|
+
const abs = join(cwd, ...e.path.split('/'));
|
|
374
|
+
if (e.action === 'remove')
|
|
375
|
+
rmSync(abs, { recursive: e.kind === 'dir', force: true });
|
|
376
|
+
else if (e.action === 'strip' && e.content !== undefined)
|
|
377
|
+
writeFileSync(abs, e.content);
|
|
378
|
+
}
|
|
379
|
+
//# sourceMappingURL=cleanup-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup-plan.js","sourceRoot":"","sources":["../../../src/commands/cleanup-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AAa1E,6EAA6E;AAC7E,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,OAAO,GAClB,gBAAgB,EAAE,CA+EpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE,CA6D7E;AAyDD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OA6V5B,CAAC;eA0Ba,cAAc"}
|