oh-my-second-brain 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +89 -0
- package/README.ko.md +127 -0
- package/README.md +128 -0
- package/adapters/README.md +8 -8
- package/adapters/claude-code/.claude-plugin/plugin.json +3 -2
- package/adapters/claude-code/.mcp.json +8 -0
- package/adapters/claude-code/CLAUDE.md +5 -6
- package/adapters/claude-code/skills/compile/SKILL.md +10 -35
- package/adapters/claude-code/skills/distill/SKILL.md +6 -26
- package/adapters/claude-code/skills/link/SKILL.md +87 -0
- package/adapters/claude-code/skills/retrieve/SKILL.md +4 -7
- package/adapters/claude-code/skills/setup/SKILL.md +5 -6
- package/adapters/claude-code/skills/uninstall/SKILL.md +1 -1
- package/adapters/claude-code/skills/wiki/SKILL.md +49 -24
- package/adapters/claude-code/skills/write/SKILL.md +16 -0
- package/adapters/codex/.codex-plugin/plugin.json +1 -1
- package/adapters/codex/AGENTS.md +2 -2
- package/adapters/codex/rules/oms.md +1 -1
- package/adapters/codex/skills/oms-compile/SKILL.md +7 -9
- package/adapters/codex/skills/oms-distill/SKILL.md +4 -9
- package/adapters/codex/skills/oms-link/SKILL.md +35 -0
- package/adapters/codex/skills/oms-retrieve/SKILL.md +5 -6
- package/adapters/codex/skills/oms-wiki/SKILL.md +28 -8
- package/adapters/codex/skills/oms-write/SKILL.md +10 -0
- package/adapters/hermes/README.md +3 -1
- package/adapters/hermes/SOUL.md +2 -3
- package/adapters/hermes/manifest.json +1 -1
- package/adapters/hermes/skills/compile/SKILL.md +5 -7
- package/adapters/hermes/skills/distill/SKILL.md +1 -3
- package/adapters/hermes/skills/link/SKILL.md +18 -0
- package/adapters/hermes/skills/retrieve/SKILL.md +5 -6
- package/adapters/hermes/skills/setup/SKILL.md +5 -2
- package/adapters/hermes/skills/wiki/SKILL.md +4 -2
- package/adapters/hermes/skills/write/SKILL.md +10 -0
- package/core/AGENTS.md +4 -2
- package/core/agents/librarian.md +3 -2
- package/core/ontology/concepts/term.yaml +12 -0
- package/core/ontology/taxonomy.yaml +3 -0
- package/core/skills/compile/SKILL.md +19 -18
- package/core/skills/distill/SKILL.md +13 -24
- package/core/skills/link/SKILL.md +130 -0
- package/core/skills/retrieve/SKILL.md +0 -1
- package/core/skills/setup/SKILL.md +12 -14
- package/core/skills/vault-lint/SKILL.md +1 -1
- package/core/skills/wiki/SKILL.md +109 -30
- package/core/skills/write/SKILL.md +15 -0
- package/dist/capture/safe.d.ts +61 -1
- package/dist/capture/safe.js +489 -66
- package/dist/capture/safe.js.map +1 -1
- package/dist/cli/args.d.ts +29 -0
- package/dist/cli/args.js +156 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/audit.d.ts +6 -0
- package/dist/cli/audit.js +93 -0
- package/dist/cli/audit.js.map +1 -0
- package/dist/cli/claude-install-plan.d.ts +10 -0
- package/dist/cli/claude-install-plan.js +26 -0
- package/dist/cli/claude-install-plan.js.map +1 -0
- package/dist/cli/doctor-lint.d.ts +11 -0
- package/dist/cli/doctor-lint.js +86 -0
- package/dist/cli/doctor-lint.js.map +1 -0
- package/dist/cli/global-writeback.d.ts +31 -0
- package/dist/cli/global-writeback.js +73 -0
- package/dist/cli/global-writeback.js.map +1 -0
- package/dist/cli/host-commands.d.ts +30 -0
- package/dist/cli/host-commands.js +89 -0
- package/dist/cli/host-commands.js.map +1 -0
- package/dist/cli/link-command.d.ts +9 -0
- package/dist/cli/link-command.js +47 -0
- package/dist/cli/link-command.js.map +1 -0
- package/dist/cli/linkify.d.ts +23 -0
- package/dist/cli/linkify.js +118 -0
- package/dist/cli/linkify.js.map +1 -0
- package/dist/cli/oms.d.ts +8 -32
- package/dist/cli/oms.js +100 -703
- package/dist/cli/oms.js.map +1 -1
- package/dist/cli/semantic-args.d.ts +1 -2
- package/dist/cli/semantic-args.js +4 -7
- package/dist/cli/semantic-args.js.map +1 -1
- package/dist/cli/semantic-http.d.ts +0 -3
- package/dist/cli/semantic-http.js +40 -45
- package/dist/cli/semantic-http.js.map +1 -1
- package/dist/cli/semantic-usage.js +10 -9
- package/dist/cli/semantic-usage.js.map +1 -1
- package/dist/cli/semantic.js +99 -137
- package/dist/cli/semantic.js.map +1 -1
- package/dist/cli/setup-command.d.ts +11 -0
- package/dist/cli/setup-command.js +196 -0
- package/dist/cli/setup-command.js.map +1 -0
- package/dist/cli/setup-documents.d.ts +15 -0
- package/dist/cli/setup-documents.js +149 -0
- package/dist/cli/setup-documents.js.map +1 -0
- package/dist/cli/update-notice.d.ts +10 -0
- package/dist/cli/update-notice.js +42 -0
- package/dist/cli/update-notice.js.map +1 -0
- package/dist/cli/usage.d.ts +4 -0
- package/dist/cli/usage.js +102 -0
- package/dist/cli/usage.js.map +1 -0
- package/dist/conventions/lint.js +12 -33
- package/dist/conventions/lint.js.map +1 -1
- package/dist/conventions/report.d.ts +62 -0
- package/dist/conventions/report.js +217 -0
- package/dist/conventions/report.js.map +1 -0
- package/dist/conventions/validate.d.ts +1 -1
- package/dist/conventions/vault-walk.d.ts +38 -0
- package/dist/conventions/vault-walk.js +80 -0
- package/dist/conventions/vault-walk.js.map +1 -0
- package/dist/conventions/write-contract.d.ts +27 -0
- package/dist/conventions/write-contract.js +91 -0
- package/dist/conventions/write-contract.js.map +1 -0
- package/dist/conventions/write-protocol.d.ts +39 -0
- package/dist/conventions/write-protocol.js +44 -0
- package/dist/conventions/write-protocol.js.map +1 -0
- package/dist/core/ontology/loader.d.ts +2 -0
- package/dist/{ontology → core/ontology}/loader.js +11 -20
- package/dist/core/ontology/loader.js.map +1 -0
- package/dist/core/ontology/resolver.d.ts +2 -0
- package/dist/{ontology → core/ontology}/resolver.js +1 -15
- package/dist/core/ontology/resolver.js.map +1 -0
- package/dist/core/ontology/types.d.ts +47 -0
- package/dist/core/ontology/types.js +2 -0
- package/dist/core/ontology/types.js.map +1 -0
- package/dist/core/runtime/assets.d.ts +20 -0
- package/dist/core/runtime/assets.js +66 -0
- package/dist/core/runtime/assets.js.map +1 -0
- package/dist/engine/assemble.d.ts +28 -72
- package/dist/engine/assemble.js +77 -61
- package/dist/engine/assemble.js.map +1 -1
- package/dist/engine/conventions/vault-lint.d.ts +30 -2
- package/dist/engine/conventions/vault-lint.js +93 -97
- package/dist/engine/conventions/vault-lint.js.map +1 -1
- package/dist/engine/embed/deferred.d.ts +3 -4
- package/dist/engine/embed/deferred.js +10 -7
- package/dist/engine/embed/deferred.js.map +1 -1
- package/dist/engine/embed/identity.d.ts +11 -0
- package/dist/engine/embed/identity.js +15 -0
- package/dist/engine/embed/identity.js.map +1 -0
- package/dist/engine/embed/provider.d.ts +12 -13
- package/dist/engine/embed/provider.js +30 -27
- package/dist/engine/embed/provider.js.map +1 -1
- package/dist/engine/embed/store.d.ts +48 -27
- package/dist/engine/embed/store.js +281 -98
- package/dist/engine/embed/store.js.map +1 -1
- package/dist/engine/embed/sync.d.ts +17 -47
- package/dist/engine/embed/sync.js +233 -69
- package/dist/engine/embed/sync.js.map +1 -1
- package/dist/engine/graph/builder.d.ts +1 -1
- package/dist/engine/graph/builder.js +1 -1
- package/dist/engine/graph/explore.d.ts +2 -2
- package/dist/engine/graph/explore.js +0 -0
- package/dist/engine/graph/resolver.d.ts +17 -0
- package/dist/engine/graph/resolver.js +46 -11
- package/dist/engine/graph/resolver.js.map +1 -1
- package/dist/engine/linkify/apply.d.ts +56 -0
- package/dist/engine/linkify/apply.js +65 -0
- package/dist/engine/linkify/apply.js.map +1 -0
- package/dist/engine/linkify/josa.d.ts +58 -0
- package/dist/engine/linkify/josa.js +133 -0
- package/dist/engine/linkify/josa.js.map +1 -0
- package/dist/engine/linkify/mask.d.ts +29 -0
- package/dist/engine/linkify/mask.js +173 -0
- package/dist/engine/linkify/mask.js.map +1 -0
- package/dist/engine/linkify/suggest.d.ts +52 -0
- package/dist/engine/linkify/suggest.js +181 -0
- package/dist/engine/linkify/suggest.js.map +1 -0
- package/dist/engine/linkify/types.d.ts +68 -0
- package/dist/engine/linkify/types.js +12 -0
- package/dist/engine/linkify/types.js.map +1 -0
- package/dist/engine/mcp/facade.d.ts +12 -18
- package/dist/engine/mcp/facade.js +30 -80
- package/dist/engine/mcp/facade.js.map +1 -1
- package/dist/engine/mcp/op-mappers.d.ts +3 -9
- package/dist/engine/mcp/op-mappers.js +2 -30
- package/dist/engine/mcp/op-mappers.js.map +1 -1
- package/dist/engine/mcp/types.d.ts +5 -29
- package/dist/engine/tracer.js +6 -2
- package/dist/engine/tracer.js.map +1 -1
- package/dist/engine/types.d.ts +8 -3
- package/dist/graph/cache.d.ts +1 -11
- package/dist/graph/cache.js +1 -44
- package/dist/graph/cache.js.map +1 -1
- package/dist/graph/explore.js +88 -137
- package/dist/graph/explore.js.map +1 -1
- package/dist/harness/surface-registry.d.ts +56 -0
- package/dist/harness/surface-registry.js +397 -0
- package/dist/harness/surface-registry.js.map +1 -0
- package/dist/harness/validation.d.ts +9 -0
- package/dist/harness/validation.js +201 -0
- package/dist/harness/validation.js.map +1 -0
- package/dist/hook/post-tool-use.js +2 -2
- package/dist/hook/post-tool-use.js.map +1 -1
- package/dist/index.d.ts +7 -5
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/install/adapter-source.d.ts +14 -0
- package/dist/install/adapter-source.js +45 -0
- package/dist/install/adapter-source.js.map +1 -0
- package/dist/install/claude-hooks.d.ts +13 -0
- package/dist/install/claude-hooks.js +411 -0
- package/dist/install/claude-hooks.js.map +1 -0
- package/dist/install/claude-marketplace.d.ts +44 -0
- package/dist/install/claude-marketplace.js +89 -0
- package/dist/install/claude-marketplace.js.map +1 -0
- package/dist/install/claude.d.ts +4 -0
- package/dist/install/claude.js +216 -0
- package/dist/install/claude.js.map +1 -0
- package/dist/install/codex.d.ts +24 -0
- package/dist/install/codex.js +193 -0
- package/dist/install/codex.js.map +1 -0
- package/dist/install/common.d.ts +34 -0
- package/dist/install/common.js +122 -0
- package/dist/install/common.js.map +1 -0
- package/dist/install/hermes.d.ts +4 -0
- package/dist/install/hermes.js +78 -0
- package/dist/install/hermes.js.map +1 -0
- package/dist/install/hosts.d.ts +6 -56
- package/dist/install/hosts.js +65 -610
- package/dist/install/hosts.js.map +1 -1
- package/dist/install/types.d.ts +34 -0
- package/dist/install/types.js +2 -0
- package/dist/install/types.js.map +1 -0
- package/dist/link/convention-note.d.ts +10 -0
- package/dist/link/convention-note.js +59 -0
- package/dist/link/convention-note.js.map +1 -0
- package/dist/link/global-config.d.ts +22 -0
- package/dist/link/global-config.js +69 -0
- package/dist/link/global-config.js.map +1 -0
- package/dist/link/link.d.ts +101 -0
- package/dist/link/link.js +265 -0
- package/dist/link/link.js.map +1 -0
- package/dist/mcp/engine-morning-backend.d.ts +12 -17
- package/dist/mcp/engine-morning-backend.js +25 -131
- package/dist/mcp/engine-morning-backend.js.map +1 -1
- package/dist/mcp/link-tools.d.ts +81 -0
- package/dist/mcp/link-tools.js +157 -0
- package/dist/mcp/link-tools.js.map +1 -0
- package/dist/mcp/semantic-engine.d.ts +32 -0
- package/dist/mcp/semantic-engine.js +52 -0
- package/dist/mcp/semantic-engine.js.map +1 -0
- package/dist/mcp/semantic-retrieve-args.d.ts +1 -5
- package/dist/mcp/semantic-retrieve-args.js +1 -26
- package/dist/mcp/semantic-retrieve-args.js.map +1 -1
- package/dist/mcp/semantic-retrieve-schema.d.ts +0 -14
- package/dist/mcp/semantic-retrieve-schema.js +0 -5
- package/dist/mcp/semantic-retrieve-schema.js.map +1 -1
- package/dist/mcp/semantic-retrieve.d.ts +12 -18
- package/dist/mcp/semantic-retrieve.js +40 -71
- package/dist/mcp/semantic-retrieve.js.map +1 -1
- package/dist/mcp/semantic-tool-schemas.js +7 -24
- package/dist/mcp/semantic-tool-schemas.js.map +1 -1
- package/dist/mcp/server.d.ts +7 -0
- package/dist/mcp/server.js +224 -162
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/update-notice.d.ts +51 -0
- package/dist/mcp/update-notice.js +196 -0
- package/dist/mcp/update-notice.js.map +1 -0
- package/dist/ontology/active.d.ts +7 -0
- package/dist/ontology/active.js +41 -0
- package/dist/ontology/active.js.map +1 -0
- package/dist/retrieve/morning.d.ts +10 -18
- package/dist/retrieve/morning.js +2 -26
- package/dist/retrieve/morning.js.map +1 -1
- package/dist/retrieve/semantic-contract.d.ts +10 -0
- package/dist/retrieve/semantic-contract.js +2 -0
- package/dist/retrieve/semantic-contract.js.map +1 -0
- package/dist/setup/axis.d.ts +22 -3
- package/dist/setup/axis.js +82 -35
- package/dist/setup/axis.js.map +1 -1
- package/dist/update/update.d.ts +12 -0
- package/dist/update/update.js +2 -2
- package/dist/update/update.js.map +1 -1
- package/docs/install.md +43 -7
- package/docs/release.md +109 -17
- package/package.json +11 -3
- package/scripts/install.sh +1 -1
- package/adapters/claude-code/skills/capture/SKILL.md +0 -50
- package/adapters/codex/skills/oms-capture/SKILL.md +0 -16
- package/adapters/hermes/skills/capture/SKILL.md +0 -16
- package/core/skills/capture/SKILL.md +0 -50
- package/dist/adapt/HostAdapter.d.ts +0 -21
- package/dist/adapt/HostAdapter.js +0 -10
- package/dist/adapt/HostAdapter.js.map +0 -1
- package/dist/adapt/claudeCode.d.ts +0 -9
- package/dist/adapt/claudeCode.js +0 -15
- package/dist/adapt/claudeCode.js.map +0 -1
- package/dist/adapt/codex.d.ts +0 -9
- package/dist/adapt/codex.js +0 -15
- package/dist/adapt/codex.js.map +0 -1
- package/dist/adapt/hermes.d.ts +0 -9
- package/dist/adapt/hermes.js +0 -15
- package/dist/adapt/hermes.js.map +0 -1
- package/dist/cli/semantic-metadata-commands.d.ts +0 -3
- package/dist/cli/semantic-metadata-commands.js +0 -115
- package/dist/cli/semantic-metadata-commands.js.map +0 -1
- package/dist/engine/compile/cascade.d.ts +0 -35
- package/dist/engine/compile/cascade.js +0 -59
- package/dist/engine/compile/cascade.js.map +0 -1
- package/dist/engine/compile/cot.d.ts +0 -30
- package/dist/engine/compile/cot.js +0 -153
- package/dist/engine/compile/cot.js.map +0 -1
- package/dist/engine/compile/phases.d.ts +0 -47
- package/dist/engine/compile/phases.js +0 -101
- package/dist/engine/compile/phases.js.map +0 -1
- package/dist/engine/compile/provenance.d.ts +0 -45
- package/dist/engine/compile/provenance.js +0 -103
- package/dist/engine/compile/provenance.js.map +0 -1
- package/dist/engine/compile/sha-cache.d.ts +0 -42
- package/dist/engine/compile/sha-cache.js +0 -86
- package/dist/engine/compile/sha-cache.js.map +0 -1
- package/dist/engine/compile/types.d.ts +0 -71
- package/dist/engine/compile/types.js +0 -9
- package/dist/engine/compile/types.js.map +0 -1
- package/dist/engine/compile/worker.d.ts +0 -47
- package/dist/engine/compile/worker.js +0 -75
- package/dist/engine/compile/worker.js.map +0 -1
- package/dist/engine/distill/analyzer.d.ts +0 -51
- package/dist/engine/distill/analyzer.js +0 -279
- package/dist/engine/distill/analyzer.js.map +0 -1
- package/dist/engine/distill/clean-room.d.ts +0 -46
- package/dist/engine/distill/clean-room.js +0 -131
- package/dist/engine/distill/clean-room.js.map +0 -1
- package/dist/engine/distill/report.d.ts +0 -23
- package/dist/engine/distill/report.js +0 -107
- package/dist/engine/distill/report.js.map +0 -1
- package/dist/engine/distill/types.d.ts +0 -89
- package/dist/engine/distill/types.js +0 -9
- package/dist/engine/distill/types.js.map +0 -1
- package/dist/engine/embed/pull.d.ts +0 -51
- package/dist/engine/embed/pull.js +0 -90
- package/dist/engine/embed/pull.js.map +0 -1
- package/dist/engine/graph/community.d.ts +0 -38
- package/dist/engine/graph/community.js +0 -122
- package/dist/engine/graph/community.js.map +0 -1
- package/dist/engine/index.d.ts +0 -5
- package/dist/engine/index.js +0 -2
- package/dist/engine/index.js.map +0 -1
- package/dist/engine/mcp/index.d.ts +0 -15
- package/dist/engine/mcp/index.js +0 -19
- package/dist/engine/mcp/index.js.map +0 -1
- package/dist/engine/mcp/retrieve-mapper.d.ts +0 -38
- package/dist/engine/mcp/retrieve-mapper.js +0 -96
- package/dist/engine/mcp/retrieve-mapper.js.map +0 -1
- package/dist/engine/setup/ambiguity.d.ts +0 -39
- package/dist/engine/setup/ambiguity.js +0 -50
- package/dist/engine/setup/ambiguity.js.map +0 -1
- package/dist/engine/setup/types.d.ts +0 -71
- package/dist/engine/setup/types.js +0 -22
- package/dist/engine/setup/types.js.map +0 -1
- package/dist/engine/setup/writer.d.ts +0 -32
- package/dist/engine/setup/writer.js +0 -77
- package/dist/engine/setup/writer.js.map +0 -1
- package/dist/engine/wiki/collection.d.ts +0 -91
- package/dist/engine/wiki/collection.js +0 -188
- package/dist/engine/wiki/collection.js.map +0 -1
- package/dist/engine/wiki/ledger.d.ts +0 -59
- package/dist/engine/wiki/ledger.js +0 -130
- package/dist/engine/wiki/ledger.js.map +0 -1
- package/dist/engine/wiki/lint.d.ts +0 -38
- package/dist/engine/wiki/lint.js +0 -186
- package/dist/engine/wiki/lint.js.map +0 -1
- package/dist/engine/wiki/navigation.d.ts +0 -40
- package/dist/engine/wiki/navigation.js +0 -83
- package/dist/engine/wiki/navigation.js.map +0 -1
- package/dist/engine/wiki/types.d.ts +0 -54
- package/dist/engine/wiki/types.js +0 -7
- package/dist/engine/wiki/types.js.map +0 -1
- package/dist/ontology/loader.d.ts +0 -13
- package/dist/ontology/loader.js.map +0 -1
- package/dist/ontology/resolver.d.ts +0 -13
- package/dist/ontology/resolver.js.map +0 -1
- package/dist/ontology/types.d.ts +0 -72
- package/dist/ontology/types.js +0 -12
- package/dist/ontology/types.js.map +0 -1
- package/dist/retrieve/embedding-sync.d.ts +0 -3
- package/dist/retrieve/embedding-sync.js +0 -21
- package/dist/retrieve/embedding-sync.js.map +0 -1
- package/dist/runtime/assets.d.ts +0 -7
- package/dist/runtime/assets.js +0 -13
- package/dist/runtime/assets.js.map +0 -1
- package/dist/search/semantic-collections.d.ts +0 -32
- package/dist/search/semantic-collections.js +0 -68
- package/dist/search/semantic-collections.js.map +0 -1
- package/dist/search/semantic-contexts.d.ts +0 -21
- package/dist/search/semantic-contexts.js +0 -28
- package/dist/search/semantic-contexts.js.map +0 -1
- package/dist/search/semantic-diagnostics.d.ts +0 -16
- package/dist/search/semantic-diagnostics.js +0 -110
- package/dist/search/semantic-diagnostics.js.map +0 -1
- package/dist/search/semantic-documents.d.ts +0 -3
- package/dist/search/semantic-documents.js +0 -150
- package/dist/search/semantic-documents.js.map +0 -1
- package/dist/search/semantic-embedding-hash.d.ts +0 -3
- package/dist/search/semantic-embedding-hash.js +0 -30
- package/dist/search/semantic-embedding-hash.js.map +0 -1
- package/dist/search/semantic-embedding-provider.d.ts +0 -9
- package/dist/search/semantic-embedding-provider.js +0 -58
- package/dist/search/semantic-embedding-provider.js.map +0 -1
- package/dist/search/semantic-index-build.d.ts +0 -13
- package/dist/search/semantic-index-build.js +0 -101
- package/dist/search/semantic-index-build.js.map +0 -1
- package/dist/search/semantic-index-core.d.ts +0 -21
- package/dist/search/semantic-index-core.js +0 -106
- package/dist/search/semantic-index-core.js.map +0 -1
- package/dist/search/semantic-index-io.d.ts +0 -19
- package/dist/search/semantic-index-io.js +0 -214
- package/dist/search/semantic-index-io.js.map +0 -1
- package/dist/search/semantic-index-types.d.ts +0 -50
- package/dist/search/semantic-index-types.js +0 -2
- package/dist/search/semantic-index-types.js.map +0 -1
- package/dist/search/semantic-index.d.ts +0 -4
- package/dist/search/semantic-index.js +0 -4
- package/dist/search/semantic-index.js.map +0 -1
- package/dist/search/semantic-listing.d.ts +0 -12
- package/dist/search/semantic-listing.js +0 -64
- package/dist/search/semantic-listing.js.map +0 -1
- package/dist/search/semantic-maintenance-shared.d.ts +0 -15
- package/dist/search/semantic-maintenance-shared.js +0 -43
- package/dist/search/semantic-maintenance-shared.js.map +0 -1
- package/dist/search/semantic-maintenance-types.d.ts +0 -103
- package/dist/search/semantic-maintenance-types.js +0 -2
- package/dist/search/semantic-maintenance-types.js.map +0 -1
- package/dist/search/semantic-maintenance.d.ts +0 -4
- package/dist/search/semantic-maintenance.js +0 -5
- package/dist/search/semantic-maintenance.js.map +0 -1
- package/dist/search/semantic-provider-types.d.ts +0 -34
- package/dist/search/semantic-provider-types.js +0 -2
- package/dist/search/semantic-provider-types.js.map +0 -1
- package/dist/search/semantic-query-types.d.ts +0 -83
- package/dist/search/semantic-query-types.js +0 -2
- package/dist/search/semantic-query-types.js.map +0 -1
- package/dist/search/semantic-query.d.ts +0 -2
- package/dist/search/semantic-query.js +0 -188
- package/dist/search/semantic-query.js.map +0 -1
- package/dist/search/semantic-sqlite-db.d.ts +0 -18
- package/dist/search/semantic-sqlite-db.js +0 -87
- package/dist/search/semantic-sqlite-db.js.map +0 -1
- package/dist/search/semantic-sqlite-query.d.ts +0 -2
- package/dist/search/semantic-sqlite-query.js +0 -128
- package/dist/search/semantic-sqlite-query.js.map +0 -1
- package/dist/search/semantic-sqlite-read.d.ts +0 -5
- package/dist/search/semantic-sqlite-read.js +0 -104
- package/dist/search/semantic-sqlite-read.js.map +0 -1
- package/dist/search/semantic-sqlite-write.d.ts +0 -7
- package/dist/search/semantic-sqlite-write.js +0 -66
- package/dist/search/semantic-sqlite-write.js.map +0 -1
- package/dist/search/semantic-store.d.ts +0 -15
- package/dist/search/semantic-store.js +0 -17
- package/dist/search/semantic-store.js.map +0 -1
- package/dist/search/semantic-sync-types.d.ts +0 -47
- package/dist/search/semantic-sync-types.js +0 -2
- package/dist/search/semantic-sync-types.js.map +0 -1
- package/dist/search/semantic-sync.d.ts +0 -13
- package/dist/search/semantic-sync.js +0 -131
- package/dist/search/semantic-sync.js.map +0 -1
- package/dist/search/semantic-test-fixtures.d.ts +0 -1
- package/dist/search/semantic-test-fixtures.js +0 -38
- package/dist/search/semantic-test-fixtures.js.map +0 -1
- package/dist/search/semantic-token.d.ts +0 -25
- package/dist/search/semantic-token.js +0 -114
- package/dist/search/semantic-token.js.map +0 -1
- package/dist/search/semantic-types.d.ts +0 -5
- package/dist/search/semantic-types.js +0 -2
- package/dist/search/semantic-types.js.map +0 -1
- package/dist/search/semantic.d.ts +0 -6
- package/dist/search/semantic.js +0 -6
- package/dist/search/semantic.js.map +0 -1
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local compile types for M2.
|
|
3
|
-
*
|
|
4
|
-
* PARALLEL-SAFETY: These types are LOCAL to src/engine/compile/.
|
|
5
|
-
* Do NOT import from the shared src/engine/types.ts (read-only per plan).
|
|
6
|
-
* Do NOT touch the shared types.ts.
|
|
7
|
-
*/
|
|
8
|
-
/** Provenance grade classifying the curation level of a material relative to the vault owner. */
|
|
9
|
-
export type ProvenanceGrade = "authored" | "curated" | "external-raw";
|
|
10
|
-
/** A single material item (source document) prepared for compilation. */
|
|
11
|
-
export interface Material {
|
|
12
|
-
/** Vault-relative path to the source document. */
|
|
13
|
-
path: string;
|
|
14
|
-
/** Raw text content of the material. */
|
|
15
|
-
text: string;
|
|
16
|
-
/** Provenance grade, resolved from folder->grade map at setup time (not hardcoded). */
|
|
17
|
-
grade: ProvenanceGrade;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Minimal graph view needed by the compile layer.
|
|
21
|
-
* Provides backlink lookup without coupling to the full engine graph type.
|
|
22
|
-
*/
|
|
23
|
-
export interface CompileGraph {
|
|
24
|
-
/** Return all vault-relative paths whose wiki pages link TO `docPath`. */
|
|
25
|
-
getBacklinks(docPath: string): string[];
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* LLM provider injection seam.
|
|
29
|
-
* Inject a real provider at runtime; use deterministicStubProvider in tests.
|
|
30
|
-
* Mirrors the EmbeddingProvider injection pattern from src/engine/embed/provider.ts.
|
|
31
|
-
*/
|
|
32
|
-
export interface LLMProvider {
|
|
33
|
-
complete(prompt: string): Promise<string>;
|
|
34
|
-
}
|
|
35
|
-
/** Step 1 output of nashsu 2-step CoT: analysis pass results. */
|
|
36
|
-
export interface CoTStep1Result {
|
|
37
|
-
entities: string[];
|
|
38
|
-
concepts: string[];
|
|
39
|
-
arguments: string[];
|
|
40
|
-
contradictions: string[];
|
|
41
|
-
structure: string;
|
|
42
|
-
}
|
|
43
|
-
/** Full output of the 2-step CoT pipeline (step1 + step2 body). */
|
|
44
|
-
export interface CoTResult {
|
|
45
|
-
step1: CoTStep1Result;
|
|
46
|
-
/** Synthesized Markdown body with [[wikilinks]] (from Step 2). */
|
|
47
|
-
body: string;
|
|
48
|
-
}
|
|
49
|
-
/** Core result produced by the stateless compile worker. */
|
|
50
|
-
export interface CompileResult {
|
|
51
|
-
/** Synthesized page body (Markdown with [[wikilinks]]). Empty string signals a cache-hit skip. */
|
|
52
|
-
body: string;
|
|
53
|
-
/** SHA-256 hex digest of the input-material fingerprint. */
|
|
54
|
-
sha: string;
|
|
55
|
-
/** Provenance grades of the materials that contributed to this compile run. */
|
|
56
|
-
provenance: ProvenanceGrade[];
|
|
57
|
-
}
|
|
58
|
-
/** Extended compile result that includes lucasastorian cascade backlink information. */
|
|
59
|
-
export interface CascadeResult extends CompileResult {
|
|
60
|
-
/** Vault paths of wiki pages that link TO the compiled concept page. */
|
|
61
|
-
affected_backlinks: string[];
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Maps a vault folder prefix (or exact path) to a provenance grade.
|
|
65
|
-
* Resolved at setup time — never hardcoded with vault-specific values.
|
|
66
|
-
*/
|
|
67
|
-
export type FolderGradeMap = Record<string, ProvenanceGrade>;
|
|
68
|
-
/** Output of Phase A (extract-all-without-writing). */
|
|
69
|
-
export interface PhaseAResult {
|
|
70
|
-
materials: Material[];
|
|
71
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local compile types for M2.
|
|
3
|
-
*
|
|
4
|
-
* PARALLEL-SAFETY: These types are LOCAL to src/engine/compile/.
|
|
5
|
-
* Do NOT import from the shared src/engine/types.ts (read-only per plan).
|
|
6
|
-
* Do NOT touch the shared types.ts.
|
|
7
|
-
*/
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engine/compile/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Stateless compile worker — M2 core entry point.
|
|
3
|
-
*
|
|
4
|
-
* compile(opts) → CascadeResult
|
|
5
|
-
*
|
|
6
|
-
* Fully stateless: the only side effect is the SHA cache write to disk.
|
|
7
|
-
* No daemon, no watcher, no persistent process (R2).
|
|
8
|
-
*
|
|
9
|
-
* Flow:
|
|
10
|
-
* 1. Compute input-material fingerprint SHA.
|
|
11
|
-
* 2. Load SHA cache; diff against stored SHA.
|
|
12
|
-
* 3. Unchanged SHA → return skip sentinel (body = "").
|
|
13
|
-
* 4. Changed / new SHA → run nashsu 2-step CoT via cot.ts.
|
|
14
|
-
* 5. Enrich with lucasastorian cascade backlinks.
|
|
15
|
-
* 6. Persist updated SHA to cache.
|
|
16
|
-
*
|
|
17
|
-
* SHA-incremental pattern: bstack `terminology` skill (self-authored, Steps 2-4).
|
|
18
|
-
*/
|
|
19
|
-
import type { CascadeResult, CompileGraph, LLMProvider, Material } from "./types.js";
|
|
20
|
-
/** Options for a single compile run. */
|
|
21
|
-
export interface CompileOptions {
|
|
22
|
-
/** Human-readable concept name (used in LLM prompts). */
|
|
23
|
-
concept: string;
|
|
24
|
-
/** Pre-graded material items. Use phaseA + applyGrades before calling compile(). */
|
|
25
|
-
materials: Material[];
|
|
26
|
-
/** Graph for cascade backlink resolution. Use createNullGraph() when unavailable. */
|
|
27
|
-
graph: CompileGraph;
|
|
28
|
-
/** Injected LLM provider. Use createDeterministicStub() in tests. */
|
|
29
|
-
llm: LLMProvider;
|
|
30
|
-
/** Absolute path to the .llmwiki/ dotfolder (SHA cache location). */
|
|
31
|
-
dotLlmwiki: string;
|
|
32
|
-
/** Stable concept identifier used as SHA cache key (vault-relative path recommended). */
|
|
33
|
-
conceptId: string;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Stateless compile worker.
|
|
37
|
-
*
|
|
38
|
-
* Returns a CascadeResult. If the material fingerprint SHA is unchanged
|
|
39
|
-
* since the last compile, returns a skip sentinel: body === "" and
|
|
40
|
-
* wasSkipped(result) === true.
|
|
41
|
-
*/
|
|
42
|
-
export declare function compile(opts: CompileOptions): Promise<CascadeResult>;
|
|
43
|
-
/**
|
|
44
|
-
* Returns true if the compile output is a cache-hit skip sentinel
|
|
45
|
-
* (i.e., no recompile was performed because the SHA was unchanged).
|
|
46
|
-
*/
|
|
47
|
-
export declare function wasSkipped(output: CascadeResult): boolean;
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Stateless compile worker — M2 core entry point.
|
|
3
|
-
*
|
|
4
|
-
* compile(opts) → CascadeResult
|
|
5
|
-
*
|
|
6
|
-
* Fully stateless: the only side effect is the SHA cache write to disk.
|
|
7
|
-
* No daemon, no watcher, no persistent process (R2).
|
|
8
|
-
*
|
|
9
|
-
* Flow:
|
|
10
|
-
* 1. Compute input-material fingerprint SHA.
|
|
11
|
-
* 2. Load SHA cache; diff against stored SHA.
|
|
12
|
-
* 3. Unchanged SHA → return skip sentinel (body = "").
|
|
13
|
-
* 4. Changed / new SHA → run nashsu 2-step CoT via cot.ts.
|
|
14
|
-
* 5. Enrich with lucasastorian cascade backlinks.
|
|
15
|
-
* 6. Persist updated SHA to cache.
|
|
16
|
-
*
|
|
17
|
-
* SHA-incremental pattern: bstack `terminology` skill (self-authored, Steps 2-4).
|
|
18
|
-
*/
|
|
19
|
-
import { diffSHA, fingerprint, loadSHACache, saveSHACache } from "./sha-cache.js";
|
|
20
|
-
import { formatForSynthesis } from "./provenance.js";
|
|
21
|
-
import { runCoT } from "./cot.js";
|
|
22
|
-
import { withCascade } from "./cascade.js";
|
|
23
|
-
// ---------------------------------------------------------------------------
|
|
24
|
-
// Compile worker
|
|
25
|
-
// ---------------------------------------------------------------------------
|
|
26
|
-
/**
|
|
27
|
-
* Stateless compile worker.
|
|
28
|
-
*
|
|
29
|
-
* Returns a CascadeResult. If the material fingerprint SHA is unchanged
|
|
30
|
-
* since the last compile, returns a skip sentinel: body === "" and
|
|
31
|
-
* wasSkipped(result) === true.
|
|
32
|
-
*/
|
|
33
|
-
export async function compile(opts) {
|
|
34
|
-
const { concept, materials, graph, llm, dotLlmwiki, conceptId } = opts;
|
|
35
|
-
// Step 1: fingerprint the input materials
|
|
36
|
-
const inputSHA = fingerprint(materials);
|
|
37
|
-
// Step 2: load cache and check for changes (R12 incremental)
|
|
38
|
-
const cache = await loadSHACache(dotLlmwiki);
|
|
39
|
-
const status = diffSHA(cache, conceptId, inputSHA);
|
|
40
|
-
if (status === "unchanged") {
|
|
41
|
-
// Skip: material is identical to the last compile; no recompile needed.
|
|
42
|
-
const skipResult = {
|
|
43
|
-
body: "",
|
|
44
|
-
sha: inputSHA,
|
|
45
|
-
provenance: materials.map((m) => m.grade),
|
|
46
|
-
};
|
|
47
|
-
// Still return cascade info so callers can inspect backlinks
|
|
48
|
-
return withCascade(skipResult, conceptId, graph);
|
|
49
|
-
}
|
|
50
|
-
// Step 3: run nashsu 2-step CoT (analysis → synthesis)
|
|
51
|
-
const formattedMaterials = formatForSynthesis(materials);
|
|
52
|
-
const cotResult = await runCoT(concept, formattedMaterials, llm);
|
|
53
|
-
const provenance = materials.map((m) => m.grade);
|
|
54
|
-
const result = {
|
|
55
|
-
body: cotResult.body,
|
|
56
|
-
sha: inputSHA,
|
|
57
|
-
provenance,
|
|
58
|
-
};
|
|
59
|
-
// Step 4: persist updated SHA before returning
|
|
60
|
-
cache[conceptId] = inputSHA;
|
|
61
|
-
await saveSHACache(dotLlmwiki, cache);
|
|
62
|
-
// Step 5: enrich with lucasastorian cascade backlinks
|
|
63
|
-
return withCascade(result, conceptId, graph);
|
|
64
|
-
}
|
|
65
|
-
// ---------------------------------------------------------------------------
|
|
66
|
-
// Skip sentinel helper
|
|
67
|
-
// ---------------------------------------------------------------------------
|
|
68
|
-
/**
|
|
69
|
-
* Returns true if the compile output is a cache-hit skip sentinel
|
|
70
|
-
* (i.e., no recompile was performed because the SHA was unchanged).
|
|
71
|
-
*/
|
|
72
|
-
export function wasSkipped(output) {
|
|
73
|
-
return output.body === "";
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=worker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/engine/compile/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAWH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAsB3C,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAoB;IAChD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAEvE,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAExC,6DAA6D;IAC7D,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEnD,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3B,wEAAwE;QACxE,MAAM,UAAU,GAAkB;YAChC,IAAI,EAAE,EAAE;YACR,GAAG,EAAE,QAAQ;YACb,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SAC1C,CAAC;QACF,6DAA6D;QAC7D,OAAO,WAAW,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,uDAAuD;IACvD,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAsB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,MAAM,GAAkB;QAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,GAAG,EAAE,QAAQ;QACb,UAAU;KACX,CAAC;IAEF,+CAA+C;IAC/C,KAAK,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;IAC5B,MAAM,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAEtC,sDAAsD;IACtD,OAAO,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAAqB;IAC9C,OAAO,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Red-team adversarial analyzer for distill (M4 — C6).
|
|
3
|
-
*
|
|
4
|
-
* Architecture mirrors M1's EmbeddingProvider injection pattern:
|
|
5
|
-
* - AnalyzerProvider interface — the seam for LLM injection.
|
|
6
|
-
* - createStubAnalyzerProvider() — deterministic stub for tests (no network).
|
|
7
|
-
* - runAnalysis() — orchestration: prompt construction → provider call → validation.
|
|
8
|
-
*
|
|
9
|
-
* No hardcoded network calls. Inject a real LLM client in production;
|
|
10
|
-
* inject the stub in tests and dry-run mode.
|
|
11
|
-
*/
|
|
12
|
-
import type { CleanRoomSpec, AnalyzerResult } from "./types.js";
|
|
13
|
-
/**
|
|
14
|
-
* LLM provider seam for the red-team analyzer.
|
|
15
|
-
*
|
|
16
|
-
* Inject a stub via createStubAnalyzerProvider() for tests.
|
|
17
|
-
* Inject a real LLM client (e.g. wrapping Claude API) for production.
|
|
18
|
-
*
|
|
19
|
-
* The provider receives a CleanRoomSpec (system prompt + user content)
|
|
20
|
-
* and returns a structured AnalyzerResult.
|
|
21
|
-
*/
|
|
22
|
-
export interface AnalyzerProvider {
|
|
23
|
-
/** Human-readable identifier for the provider (e.g. "stub" or "claude-sonnet-4"). */
|
|
24
|
-
readonly model: string;
|
|
25
|
-
/**
|
|
26
|
-
* Run adversarial analysis inside the clean-room context.
|
|
27
|
-
*
|
|
28
|
-
* The provider must:
|
|
29
|
-
* - Send systemPrompt as the system message and userContent as the user message.
|
|
30
|
-
* - Parse the LLM response as AnalyzerResult JSON.
|
|
31
|
-
* - Never mutate external state as a side-effect of this call.
|
|
32
|
-
*/
|
|
33
|
-
analyze(spec: CleanRoomSpec): Promise<AnalyzerResult>;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Run adversarial analysis using the given provider.
|
|
37
|
-
*
|
|
38
|
-
* Orchestrates: CleanRoomSpec → provider.analyze() → schema validation.
|
|
39
|
-
* Throws if the provider returns a structurally invalid result.
|
|
40
|
-
*/
|
|
41
|
-
export declare function runAnalysis(spec: CleanRoomSpec, provider: AnalyzerProvider): Promise<AnalyzerResult>;
|
|
42
|
-
/**
|
|
43
|
-
* Create a deterministic stub AnalyzerProvider for use in tests and dry-runs.
|
|
44
|
-
*
|
|
45
|
-
* The stub:
|
|
46
|
-
* - Scans target content for known pattern keywords from the absorption ledger.
|
|
47
|
-
* - Returns a structured AnalyzerResult without any network calls.
|
|
48
|
-
* - Is fully deterministic: same input → same output.
|
|
49
|
-
* - Never mutates external state.
|
|
50
|
-
*/
|
|
51
|
-
export declare function createStubAnalyzerProvider(): AnalyzerProvider;
|
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Red-team adversarial analyzer for distill (M4 — C6).
|
|
3
|
-
*
|
|
4
|
-
* Architecture mirrors M1's EmbeddingProvider injection pattern:
|
|
5
|
-
* - AnalyzerProvider interface — the seam for LLM injection.
|
|
6
|
-
* - createStubAnalyzerProvider() — deterministic stub for tests (no network).
|
|
7
|
-
* - runAnalysis() — orchestration: prompt construction → provider call → validation.
|
|
8
|
-
*
|
|
9
|
-
* No hardcoded network calls. Inject a real LLM client in production;
|
|
10
|
-
* inject the stub in tests and dry-run mode.
|
|
11
|
-
*/
|
|
12
|
-
// ---------------------------------------------------------------------------
|
|
13
|
-
// Orchestration entry-point
|
|
14
|
-
// ---------------------------------------------------------------------------
|
|
15
|
-
/**
|
|
16
|
-
* Run adversarial analysis using the given provider.
|
|
17
|
-
*
|
|
18
|
-
* Orchestrates: CleanRoomSpec → provider.analyze() → schema validation.
|
|
19
|
-
* Throws if the provider returns a structurally invalid result.
|
|
20
|
-
*/
|
|
21
|
-
export async function runAnalysis(spec, provider) {
|
|
22
|
-
const raw = await provider.analyze(spec);
|
|
23
|
-
return validateResult(raw);
|
|
24
|
-
}
|
|
25
|
-
// ---------------------------------------------------------------------------
|
|
26
|
-
// Schema validation
|
|
27
|
-
// ---------------------------------------------------------------------------
|
|
28
|
-
function validateResult(raw) {
|
|
29
|
-
if (!Array.isArray(raw.patterns)) {
|
|
30
|
-
throw new Error("AnalyzerResult.patterns must be an array");
|
|
31
|
-
}
|
|
32
|
-
if (!Array.isArray(raw.risks)) {
|
|
33
|
-
throw new Error("AnalyzerResult.risks must be an array");
|
|
34
|
-
}
|
|
35
|
-
if (!raw.attribution || typeof raw.attribution !== "object") {
|
|
36
|
-
throw new Error("AnalyzerResult.attribution must be an object");
|
|
37
|
-
}
|
|
38
|
-
if (typeof raw.attribution.repo !== "string") {
|
|
39
|
-
throw new Error("AnalyzerResult.attribution.repo must be a string");
|
|
40
|
-
}
|
|
41
|
-
if (typeof raw.attribution.url !== "string") {
|
|
42
|
-
throw new Error("AnalyzerResult.attribution.url must be a string");
|
|
43
|
-
}
|
|
44
|
-
if (typeof raw.attribution.license_note !== "string") {
|
|
45
|
-
throw new Error("AnalyzerResult.attribution.license_note must be a string");
|
|
46
|
-
}
|
|
47
|
-
for (const p of raw.patterns) {
|
|
48
|
-
if (typeof p.file !== "string") {
|
|
49
|
-
throw new Error("Pattern.file must be a string");
|
|
50
|
-
}
|
|
51
|
-
if (typeof p.line !== "number") {
|
|
52
|
-
throw new Error("Pattern.line must be a number");
|
|
53
|
-
}
|
|
54
|
-
if (typeof p.description !== "string") {
|
|
55
|
-
throw new Error("Pattern.description must be a string");
|
|
56
|
-
}
|
|
57
|
-
if (typeof p.absorb_confidence !== "number" ||
|
|
58
|
-
p.absorb_confidence < 0 ||
|
|
59
|
-
p.absorb_confidence > 1) {
|
|
60
|
-
throw new Error(`Pattern.absorb_confidence must be 0.0–1.0; got ${p.absorb_confidence}`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
for (const r of raw.risks) {
|
|
64
|
-
if (typeof r.description !== "string") {
|
|
65
|
-
throw new Error("Risk.description must be a string");
|
|
66
|
-
}
|
|
67
|
-
if (!["low", "medium", "high", "critical"].includes(r.severity)) {
|
|
68
|
-
throw new Error(`Risk.severity must be low|medium|high|critical; got ${r.severity}`);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return raw;
|
|
72
|
-
}
|
|
73
|
-
// ---------------------------------------------------------------------------
|
|
74
|
-
// Deterministic stub provider
|
|
75
|
-
// ---------------------------------------------------------------------------
|
|
76
|
-
/**
|
|
77
|
-
* Known-pattern signatures used by the stub to detect patterns without LLM.
|
|
78
|
-
* Each entry carries the keyword triggers, a human description, and confidence.
|
|
79
|
-
*
|
|
80
|
-
* Derived from docs/research/embedding-pipeline-patterns-mining.md and
|
|
81
|
-
* docs/research/graphify-graph-implementation-mining.md (absorption ledger).
|
|
82
|
-
*/
|
|
83
|
-
const KNOWN_PATTERN_SIGNATURES = [
|
|
84
|
-
// qmd patterns (from embedding-pipeline-patterns-mining.md)
|
|
85
|
-
{
|
|
86
|
-
keywords: ["embedBatch", "Promise.all", "parallel"],
|
|
87
|
-
description: "Hardware-adaptive parallel embedding context pool (P-01) — distributes embed work across parallel LLM contexts via Promise.all",
|
|
88
|
-
absorb_confidence: 0.95,
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
keywords: ["sha256", "SHA-256", "SHA256", "sha-256", "fingerprint", "file_hash"],
|
|
92
|
-
description: "SHA-256 incremental fingerprint for change detection — skip re-embed on unchanged content",
|
|
93
|
-
absorb_confidence: 0.92,
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
keywords: ["sqlite-vec", "vec0", "sqlite_vec", "sqliteVec", "better-sqlite3"],
|
|
97
|
-
description: "sqlite-vec vec0 content-addressable store with lazy-load + 5-min unload guard",
|
|
98
|
-
absorb_confidence: 0.90,
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
keywords: ["chunkDocumentByTokens", "chunk", "token", "overlap"],
|
|
102
|
-
description: "Token-aware chunker with configurable overlap — respects heading boundaries and code-fence protection",
|
|
103
|
-
absorb_confidence: 0.88,
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
keywords: ["retryFailedChunks", "retry", "success-counter"],
|
|
107
|
-
description: "64-success-counter deferred retry pass — accumulates failures during batch, retries after threshold",
|
|
108
|
-
absorb_confidence: 0.75,
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
keywords: ["RRF", "k=60", "reciprocal rank", "rank fusion", "Reciprocal Rank"],
|
|
112
|
-
description: "RRF k=60 rank fusion — gbrain/MS-GraphRAG-parity fusion across lex/vec/hyde/graph sub-types",
|
|
113
|
-
absorb_confidence: 0.90,
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
keywords: ["lex", "vec", "hyde", "typed sub-query", "TypedSubQuery", "sub-query"],
|
|
117
|
-
description: "Typed sub-query dispatcher interface: lex | vec | hyde | graph — mirrors qmd surface",
|
|
118
|
-
absorb_confidence: 0.92,
|
|
119
|
-
},
|
|
120
|
-
// graphify patterns (from graphify-graph-implementation-mining.md)
|
|
121
|
-
{
|
|
122
|
-
keywords: ["deduplicate_entities", "dedup", "MinHash", "Jaro-Winkler", "JaroWinkler", "JW"],
|
|
123
|
-
description: "4-pass entity deduplication pipeline: exact → entropy → MinHash → Jaro-Winkler",
|
|
124
|
-
absorb_confidence: 0.88,
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
keywords: ["Leiden", "Louvain", "community", "cluster", "cohesion"],
|
|
128
|
-
description: "Leiden-first / Louvain-fallback community detection with cohesion-split escape hatch",
|
|
129
|
-
absorb_confidence: 0.85,
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
keywords: ["build_merge", "grow-only", "build_graph", "incremental"],
|
|
133
|
-
description: "Grow-only build_merge strategy — avoids re-extracting unchanged files; incremental graph update",
|
|
134
|
-
absorb_confidence: 0.82,
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
keywords: ["EXTRACTED", "INFERRED", "AMBIGUOUS", "confidence_score"],
|
|
138
|
-
description: "3-tier edge confidence classification: EXTRACTED | INFERRED | AMBIGUOUS — with numeric score",
|
|
139
|
-
absorb_confidence: 0.80,
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
keywords: [
|
|
143
|
-
"ARCHITECTURE.md",
|
|
144
|
-
"detect.py",
|
|
145
|
-
"extract.py",
|
|
146
|
-
"build.py",
|
|
147
|
-
"cluster.py",
|
|
148
|
-
"dedup.py",
|
|
149
|
-
],
|
|
150
|
-
description: "Pipeline-as-independent-modules pattern — each stage is a single-function module with no shared mutable state",
|
|
151
|
-
absorb_confidence: 0.78,
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
keywords: ["tree-sitter", "AST", "semantic", "2-pass", "extract"],
|
|
155
|
-
description: "2-pass extraction: tree-sitter AST (structural) + LLM semantic — used for entity/relation extraction",
|
|
156
|
-
absorb_confidence: 0.76,
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
keywords: ["2-step CoT", "CoT", "step1", "step2", "analysis pass", "synthesis pass"],
|
|
160
|
-
description: "2-step Chain-of-Thought: Step 1 analysis pass (entities/concepts/contradictions) → Step 2 synthesis pass (page + wikilinks)",
|
|
161
|
-
absorb_confidence: 0.88,
|
|
162
|
-
},
|
|
163
|
-
];
|
|
164
|
-
/**
|
|
165
|
-
* Create a deterministic stub AnalyzerProvider for use in tests and dry-runs.
|
|
166
|
-
*
|
|
167
|
-
* The stub:
|
|
168
|
-
* - Scans target content for known pattern keywords from the absorption ledger.
|
|
169
|
-
* - Returns a structured AnalyzerResult without any network calls.
|
|
170
|
-
* - Is fully deterministic: same input → same output.
|
|
171
|
-
* - Never mutates external state.
|
|
172
|
-
*/
|
|
173
|
-
export function createStubAnalyzerProvider() {
|
|
174
|
-
return {
|
|
175
|
-
model: "stub",
|
|
176
|
-
async analyze(spec) {
|
|
177
|
-
return stubAnalyze(spec);
|
|
178
|
-
},
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
// ---------------------------------------------------------------------------
|
|
182
|
-
// Stub analysis implementation
|
|
183
|
-
// ---------------------------------------------------------------------------
|
|
184
|
-
function stubAnalyze(spec) {
|
|
185
|
-
const content = spec.targetContent;
|
|
186
|
-
const lines = content.split("\n");
|
|
187
|
-
const patterns = detectPatterns(lines, spec.targetName);
|
|
188
|
-
const risks = detectRisks(content);
|
|
189
|
-
const attribution = extractAttribution(spec.targetName, content);
|
|
190
|
-
// Sort descending by absorb_confidence (§1 report ranking requirement)
|
|
191
|
-
patterns.sort((a, b) => b.absorb_confidence - a.absorb_confidence);
|
|
192
|
-
return { patterns, risks, attribution };
|
|
193
|
-
}
|
|
194
|
-
function detectPatterns(lines, targetName) {
|
|
195
|
-
const found = [];
|
|
196
|
-
const seenDescriptions = new Set();
|
|
197
|
-
for (const sig of KNOWN_PATTERN_SIGNATURES) {
|
|
198
|
-
for (const keyword of sig.keywords) {
|
|
199
|
-
const matchIdx = lines.findIndex((l) => l.includes(keyword));
|
|
200
|
-
if (matchIdx !== -1 && !seenDescriptions.has(sig.description)) {
|
|
201
|
-
seenDescriptions.add(sig.description);
|
|
202
|
-
found.push({
|
|
203
|
-
file: guessFile(lines, matchIdx, targetName),
|
|
204
|
-
line: matchIdx + 1,
|
|
205
|
-
description: sig.description,
|
|
206
|
-
absorb_confidence: sig.absorb_confidence,
|
|
207
|
-
});
|
|
208
|
-
break;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
return found;
|
|
213
|
-
}
|
|
214
|
-
/** Heuristically determine a file context from surrounding lines. */
|
|
215
|
-
function guessFile(lines, matchLine, targetName) {
|
|
216
|
-
// Look backwards up to 20 lines for a backtick filename or code-fence header
|
|
217
|
-
for (let i = matchLine; i >= Math.max(0, matchLine - 20); i--) {
|
|
218
|
-
const line = lines[i] ?? "";
|
|
219
|
-
const m = line.match(/`([^`]+\.[a-zA-Z]+)`/) ?? line.match(/^```(\S+)/);
|
|
220
|
-
if (m?.[1]) {
|
|
221
|
-
return m[1];
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
return targetName;
|
|
225
|
-
}
|
|
226
|
-
function detectRisks(content) {
|
|
227
|
-
const risks = [];
|
|
228
|
-
if (/GPL-?3\.0|GPL-3/i.test(content)) {
|
|
229
|
-
risks.push({
|
|
230
|
-
description: "GPL-3.0 licensed source — idea-only absorption required; no verbatim code copy permitted",
|
|
231
|
-
severity: "high",
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
if (/license unconfirmed|license:\s*TBD|license TBD/i.test(content)) {
|
|
235
|
-
risks.push({
|
|
236
|
-
description: "License status unconfirmed for at least one source — flag for ACKNOWLEDGMENTS and legal review before absorption",
|
|
237
|
-
severity: "medium",
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
if (/\[OPEN-BUG\]|\[OPEN-RFC\]/i.test(content)) {
|
|
241
|
-
risks.push({
|
|
242
|
-
description: "Open bugs or RFCs referenced — verify the absorbed patterns are from [SHIPPED-IN-CODE] or [MERGED] entries only",
|
|
243
|
-
severity: "medium",
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
if (/\[UNVERIFIED\]/i.test(content)) {
|
|
247
|
-
risks.push({
|
|
248
|
-
description: "[UNVERIFIED] items present in source — these must NOT be absorbed per standing rule",
|
|
249
|
-
severity: "high",
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
if (/setInterval|setTimeout|daemon|watcher|fs\.watch|chokidar/i.test(content)) {
|
|
253
|
-
risks.push({
|
|
254
|
-
description: "Stateful/persistent pattern detected (daemon/watcher/setInterval) — violates R2 stateless constraint if absorbed verbatim",
|
|
255
|
-
severity: "high",
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
if (/hardcoded|hard-coded|HARDCODED/i.test(content)) {
|
|
259
|
-
risks.push({
|
|
260
|
-
description: "Hardcoded values present — violates Non-Sticky/Vault-Agnostic principle (R16) if absorbed without parameterization",
|
|
261
|
-
severity: "medium",
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
return risks;
|
|
265
|
-
}
|
|
266
|
-
function extractAttribution(targetName, content) {
|
|
267
|
-
const repoMatch = content.match(/source_repo:\s*([^\n]+)/);
|
|
268
|
-
const urlMatch = content.match(/https?:\/\/[^\s\)\]]+/);
|
|
269
|
-
const licenseMatch = content.match(/^license[:\s]+([^\n]+)/im) ??
|
|
270
|
-
content.match(/MIT|Apache 2\.0|GPL-?3\.0|Apache-2|BSD/);
|
|
271
|
-
return {
|
|
272
|
-
repo: repoMatch ? repoMatch[1].trim() : targetName,
|
|
273
|
-
url: urlMatch ? urlMatch[0].replace(/[,)]+$/, "") : "",
|
|
274
|
-
license_note: licenseMatch
|
|
275
|
-
? (licenseMatch[1] ?? licenseMatch[0]).trim()
|
|
276
|
-
: "unconfirmed — review before code absorption",
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
//# sourceMappingURL=analyzer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../../src/engine/distill/analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Clean-room mechanism for distill (M4 — C6).
|
|
3
|
-
*
|
|
4
|
-
* Produces a CleanRoomSpec — a pure data structure describing how to invoke
|
|
5
|
-
* a throwaway subagent with the target loaded as inert read-only text.
|
|
6
|
-
* The actual subagent spawn is the CALLER'S responsibility.
|
|
7
|
-
*
|
|
8
|
-
* Design principles:
|
|
9
|
-
* - Pure functions; zero side-effects on main system state (R2/R6).
|
|
10
|
-
* - Target content is embedded as verbatim text; it is never executed.
|
|
11
|
-
* - Mutation-detector helper: SHA snapshot before/after == no mutation.
|
|
12
|
-
*/
|
|
13
|
-
import type { CleanRoomSpec, DistillTarget } from "./types.js";
|
|
14
|
-
/**
|
|
15
|
-
* Returns a SHA-256 hex digest of `content`.
|
|
16
|
-
*
|
|
17
|
-
* Snapshot a piece of state before a distill run with this function,
|
|
18
|
-
* snapshot it again after, then call detectMutation() to confirm nothing
|
|
19
|
-
* changed.
|
|
20
|
-
*/
|
|
21
|
-
export declare function snapshotSha(content: string): string;
|
|
22
|
-
/**
|
|
23
|
-
* Returns true if mutation is detected (before SHA ≠ after SHA).
|
|
24
|
-
* Returns false if content is unchanged — clean run, no mutation.
|
|
25
|
-
*
|
|
26
|
-
* Usage:
|
|
27
|
-
* const before = snapshotSha(someState);
|
|
28
|
-
* await runDistill(...);
|
|
29
|
-
* const after = snapshotSha(someState);
|
|
30
|
-
* if (detectMutation(before, after)) throw new Error("state mutated!");
|
|
31
|
-
*/
|
|
32
|
-
export declare function detectMutation(before: string, after: string): boolean;
|
|
33
|
-
/**
|
|
34
|
-
* Prepare a clean-room invocation spec for the given target.
|
|
35
|
-
*
|
|
36
|
-
* The target content is embedded as inert read-only text — no execution,
|
|
37
|
-
* no live tool calls against the target. Main system state is never mutated.
|
|
38
|
-
*
|
|
39
|
-
* The returned CleanRoomSpec is a pure data structure. Pass it to a
|
|
40
|
-
* throwaway subagent to perform the actual analysis; the result comes back
|
|
41
|
-
* as an AnalyzerResult JSON blob.
|
|
42
|
-
*
|
|
43
|
-
* @param target - The distill target to analyze.
|
|
44
|
-
* @returns CleanRoomSpec — immutable, safe to inspect or log.
|
|
45
|
-
*/
|
|
46
|
-
export declare function prepareCleanRoom(target: DistillTarget): CleanRoomSpec;
|