@thinkingsage/kanon 0.8.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 +410 -0
- package/LICENSE +21 -0
- package/README.md +168 -0
- package/bridge/mcp-server.cjs +14171 -0
- package/package.json +98 -0
- package/src/adapters/capabilities.ts +178 -0
- package/src/adapters/claude-code.ts +110 -0
- package/src/adapters/cline.ts +98 -0
- package/src/adapters/codex.ts +173 -0
- package/src/adapters/copilot.ts +106 -0
- package/src/adapters/cursor.ts +97 -0
- package/src/adapters/degradation.ts +95 -0
- package/src/adapters/index.ts +324 -0
- package/src/adapters/kiro-frontmatter.ts +139 -0
- package/src/adapters/kiro-inclusion.ts +86 -0
- package/src/adapters/kiro.ts +412 -0
- package/src/adapters/qdeveloper.ts +115 -0
- package/src/adapters/types.ts +81 -0
- package/src/adapters/windsurf.ts +96 -0
- package/src/admin.ts +283 -0
- package/src/asset-conventions.ts +118 -0
- package/src/attribution-backfill.ts +319 -0
- package/src/attribution-report.ts +95 -0
- package/src/attribution.ts +239 -0
- package/src/backends/github.ts +194 -0
- package/src/backends/http.ts +122 -0
- package/src/backends/index.ts +39 -0
- package/src/backends/local.ts +47 -0
- package/src/backends/s3.ts +157 -0
- package/src/backends/types.ts +59 -0
- package/src/base-cache.ts +270 -0
- package/src/browse-ui.ts +3754 -0
- package/src/browse.ts +1038 -0
- package/src/build.ts +1108 -0
- package/src/catalog.ts +204 -0
- package/src/cli-deprecated.ts +29 -0
- package/src/cli.ts +773 -0
- package/src/collection-admin.ts +287 -0
- package/src/collection-builder.ts +464 -0
- package/src/collections.ts +116 -0
- package/src/compatibility.ts +105 -0
- package/src/config.ts +743 -0
- package/src/eval/rubrics/kiro-progressive-steering.ts +841 -0
- package/src/eval.ts +1169 -0
- package/src/file-writer.ts +61 -0
- package/src/format-registry.ts +141 -0
- package/src/guild/auto-updater.ts +163 -0
- package/src/guild/backend-resolver.ts +49 -0
- package/src/guild/cli.ts +592 -0
- package/src/guild/collection-expander.ts +47 -0
- package/src/guild/global-cache.ts +247 -0
- package/src/guild/hook-generator.ts +100 -0
- package/src/guild/manifest.ts +154 -0
- package/src/guild/path-utils.ts +12 -0
- package/src/guild/sync.ts +622 -0
- package/src/guild/version-resolver.ts +42 -0
- package/src/help/metadata.ts +445 -0
- package/src/help/renderer.ts +265 -0
- package/src/help/typo-suggester.ts +25 -0
- package/src/hooks/expression.ts +493 -0
- package/src/hooks/pipeline.ts +141 -0
- package/src/import.ts +773 -0
- package/src/importers/claude-code.ts +134 -0
- package/src/importers/cline.ts +103 -0
- package/src/importers/codex.ts +140 -0
- package/src/importers/copilot.ts +103 -0
- package/src/importers/cursor.ts +105 -0
- package/src/importers/index.ts +390 -0
- package/src/importers/kiro.ts +110 -0
- package/src/importers/qdeveloper.ts +103 -0
- package/src/importers/types.ts +54 -0
- package/src/importers/windsurf.ts +104 -0
- package/src/install.ts +1005 -0
- package/src/manifest-admin.ts +306 -0
- package/src/mcp-bridge.ts +240 -0
- package/src/mutation/delta.ts +50 -0
- package/src/mutation/history.ts +66 -0
- package/src/mutation/operators.ts +524 -0
- package/src/mutation/runner.ts +332 -0
- package/src/new.ts +106 -0
- package/src/outcomes/collision.ts +127 -0
- package/src/outcomes/normalize.ts +208 -0
- package/src/outcomes/registry.ts +173 -0
- package/src/parser.ts +446 -0
- package/src/provenance-backfill-cli.ts +319 -0
- package/src/provenance-backfill.ts +520 -0
- package/src/publish.ts +354 -0
- package/src/reconcile-orchestrator.ts +502 -0
- package/src/reconcile-report-renderer.ts +176 -0
- package/src/resolve-body.ts +15 -0
- package/src/rosetta/builtins/compatibility-profiles.ts +297 -0
- package/src/rosetta/builtins/contracts.ts +1033 -0
- package/src/rosetta/builtins/pretty-printers/claude-code-native.ts +122 -0
- package/src/rosetta/builtins/pretty-printers/cline-native.ts +50 -0
- package/src/rosetta/builtins/pretty-printers/codex-native.ts +127 -0
- package/src/rosetta/builtins/pretty-printers/copilot-native.ts +50 -0
- package/src/rosetta/builtins/pretty-printers/cursor-native.ts +50 -0
- package/src/rosetta/builtins/pretty-printers/index.ts +81 -0
- package/src/rosetta/builtins/pretty-printers/kiro-native.ts +166 -0
- package/src/rosetta/builtins/pretty-printers/kiro-power.ts +108 -0
- package/src/rosetta/builtins/pretty-printers/kiro-skill.ts +88 -0
- package/src/rosetta/builtins/pretty-printers/qdeveloper-native.ts +51 -0
- package/src/rosetta/builtins/pretty-printers/superpowers.ts +97 -0
- package/src/rosetta/builtins/pretty-printers/windsurf-native.ts +50 -0
- package/src/rosetta/builtins/sources/claude-code-native.ts +348 -0
- package/src/rosetta/builtins/sources/cline-native.ts +176 -0
- package/src/rosetta/builtins/sources/codex-native.ts +343 -0
- package/src/rosetta/builtins/sources/copilot-native.ts +178 -0
- package/src/rosetta/builtins/sources/cursor-native.ts +176 -0
- package/src/rosetta/builtins/sources/index.ts +95 -0
- package/src/rosetta/builtins/sources/kiro-native.ts +462 -0
- package/src/rosetta/builtins/sources/kiro-power.ts +285 -0
- package/src/rosetta/builtins/sources/kiro-skill.ts +230 -0
- package/src/rosetta/builtins/sources/qdeveloper-native.ts +181 -0
- package/src/rosetta/builtins/sources/superpowers.ts +240 -0
- package/src/rosetta/builtins/sources/windsurf-native.ts +176 -0
- package/src/rosetta/builtins/targets/claude-code.ts +181 -0
- package/src/rosetta/builtins/targets/cline.ts +87 -0
- package/src/rosetta/builtins/targets/codex.ts +226 -0
- package/src/rosetta/builtins/targets/copilot.ts +103 -0
- package/src/rosetta/builtins/targets/cursor.ts +87 -0
- package/src/rosetta/builtins/targets/index.ts +60 -0
- package/src/rosetta/builtins/targets/kiro.ts +278 -0
- package/src/rosetta/builtins/targets/qdeveloper.ts +103 -0
- package/src/rosetta/builtins/targets/windsurf.ts +87 -0
- package/src/rosetta/canonical.ts +729 -0
- package/src/rosetta/compatibility.ts +432 -0
- package/src/rosetta/contracts.ts +329 -0
- package/src/rosetta/detector.ts +724 -0
- package/src/rosetta/diagnostics.ts +630 -0
- package/src/rosetta/engine-bootstrap.ts +103 -0
- package/src/rosetta/engine.ts +744 -0
- package/src/rosetta/index.ts +381 -0
- package/src/rosetta/inspection.ts +530 -0
- package/src/rosetta/plan.ts +448 -0
- package/src/rosetta/provenance-digest.ts +369 -0
- package/src/rosetta/reconcile.ts +812 -0
- package/src/rosetta/redaction.ts +467 -0
- package/src/rosetta/registry.ts +712 -0
- package/src/rosetta/renderers.ts +571 -0
- package/src/rosetta/request-guard.ts +335 -0
- package/src/rosetta/resolution.ts +419 -0
- package/src/rosetta/source-accounting.ts +233 -0
- package/src/rosetta/templates.ts +129 -0
- package/src/rosetta-cli.ts +717 -0
- package/src/rosetta-docs-generator.ts +793 -0
- package/src/rosetta-profiles-cli.ts +367 -0
- package/src/schemas.ts +1712 -0
- package/src/spec-coordination.ts +1141 -0
- package/src/temper.ts +747 -0
- package/src/template-bundle-loader.ts +312 -0
- package/src/template-engine.ts +53 -0
- package/src/translation-application-policy.ts +496 -0
- package/src/translation-orchestrator.ts +1013 -0
- package/src/translation-plan-applier.ts +473 -0
- package/src/tutorial.ts +305 -0
- package/src/validate.ts +1093 -0
- package/src/versioning.ts +553 -0
- package/src/wizard.ts +660 -0
- package/src/workspace.ts +237 -0
- package/templates/eval-contexts/claude-code.md.njk +6 -0
- package/templates/eval-contexts/cline.md.njk +6 -0
- package/templates/eval-contexts/copilot.md.njk +6 -0
- package/templates/eval-contexts/cursor.md.njk +6 -0
- package/templates/eval-contexts/kiro.md.njk +10 -0
- package/templates/eval-contexts/qdeveloper.md.njk +6 -0
- package/templates/eval-contexts/windsurf.md.njk +6 -0
- package/templates/harness-adapters/_base/attribution-footer.md.njk +17 -0
- package/templates/harness-adapters/_base/base.md.njk +16 -0
- package/templates/harness-adapters/claude-code/claude.md.njk +1 -0
- package/templates/harness-adapters/claude-code/mcp.json.njk +1 -0
- package/templates/harness-adapters/claude-code/settings.json.njk +1 -0
- package/templates/harness-adapters/claude-code/skill-library-index.md.njk +13 -0
- package/templates/harness-adapters/claude-code/skill.md.njk +19 -0
- package/templates/harness-adapters/cline/hook.sh.njk +4 -0
- package/templates/harness-adapters/cline/mcp.json.njk +1 -0
- package/templates/harness-adapters/cline/rule.md.njk +1 -0
- package/templates/harness-adapters/codex/agents-md.md.njk +6 -0
- package/templates/harness-adapters/codex/agents-pointer.md.njk +16 -0
- package/templates/harness-adapters/codex/skill.md.njk +27 -0
- package/templates/harness-adapters/copilot/agents.md.njk +1 -0
- package/templates/harness-adapters/copilot/instructions.md.njk +1 -0
- package/templates/harness-adapters/copilot/scoped.md.njk +6 -0
- package/templates/harness-adapters/cursor/mcp.json.njk +1 -0
- package/templates/harness-adapters/cursor/rule.md.njk +6 -0
- package/templates/harness-adapters/kiro/hook.json.njk +1 -0
- package/templates/harness-adapters/kiro/mcp.json.njk +1 -0
- package/templates/harness-adapters/kiro/power-steering.md.njk +3 -0
- package/templates/harness-adapters/kiro/power.md.njk +12 -0
- package/templates/harness-adapters/kiro/steering.md.njk +16 -0
- package/templates/harness-adapters/qdeveloper/agent.md.njk +1 -0
- package/templates/harness-adapters/qdeveloper/mcp.json.njk +1 -0
- package/templates/harness-adapters/qdeveloper/rule.md.njk +1 -0
- package/templates/harness-adapters/windsurf/mcp.json.njk +1 -0
- package/templates/harness-adapters/windsurf/rule.md.njk +1 -0
- package/templates/harness-adapters/windsurf/workflow.md.njk +1 -0
- package/templates/knowledge/hooks.yaml.njk +4 -0
- package/templates/knowledge/knowledge.md.njk +53 -0
- package/templates/knowledge/mcp-servers.yaml.njk +2 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rosetta Stone — Shared Engine Bootstrap
|
|
3
|
+
*
|
|
4
|
+
* A single, lazily-constructed engine instance (registry + templates) shared by
|
|
5
|
+
* every front door into the canonical library: `kanon rosetta translate`,
|
|
6
|
+
* `kanon import`, and any future importer. Extracting the bootstrap here means
|
|
7
|
+
* the `import` facade and the `rosetta translate` command drive the SAME engine
|
|
8
|
+
* pipeline (guard → registry resolution → source translation → canonical
|
|
9
|
+
* validation → plan) instead of two parallel translation paths (ADR-0065).
|
|
10
|
+
*
|
|
11
|
+
* The registry and template bundle are cached process-wide because they are
|
|
12
|
+
* immutable snapshots — building them once and reusing them keeps repeated
|
|
13
|
+
* imports/translations fast and guarantees identical resolution across callers.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { resolve } from "node:path";
|
|
17
|
+
import { loadTemplateBundle } from "../template-bundle-loader";
|
|
18
|
+
import { PRETTY_PRINTERS } from "./builtins/pretty-printers/index";
|
|
19
|
+
import {
|
|
20
|
+
HARNESS_NATIVE_SOURCE_TRANSLATORS,
|
|
21
|
+
PATH_BASED_SOURCE_TRANSLATORS,
|
|
22
|
+
} from "./builtins/sources/index";
|
|
23
|
+
import { TARGET_TRANSLATORS } from "./builtins/targets/index";
|
|
24
|
+
import {
|
|
25
|
+
BUILTIN_FORMAT_CONTRACTS,
|
|
26
|
+
createEngine,
|
|
27
|
+
createRegistryBuilder,
|
|
28
|
+
type RegistryExtension,
|
|
29
|
+
type RosettaStone,
|
|
30
|
+
type TranslationRegistrySnapshot,
|
|
31
|
+
} from "./index";
|
|
32
|
+
import type { ImmutableTemplateBundle } from "./templates";
|
|
33
|
+
|
|
34
|
+
let cachedRegistry: TranslationRegistrySnapshot | null = null;
|
|
35
|
+
let cachedTemplates: ImmutableTemplateBundle | null = null;
|
|
36
|
+
let cachedEngine: RosettaStone | null = null;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Get or create the default registry snapshot with all built-in contracts.
|
|
40
|
+
* Wires source translators, target translators, and pretty-printers from the
|
|
41
|
+
* builtin modules alongside each contract.
|
|
42
|
+
*/
|
|
43
|
+
export function getSharedRegistry(): TranslationRegistrySnapshot {
|
|
44
|
+
if (cachedRegistry !== null) {
|
|
45
|
+
return cachedRegistry;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const builder = createRegistryBuilder("1.0.0");
|
|
49
|
+
for (const contract of BUILTIN_FORMAT_CONTRACTS) {
|
|
50
|
+
const id = contract.id;
|
|
51
|
+
const sourceTranslator =
|
|
52
|
+
PATH_BASED_SOURCE_TRANSLATORS.get(id) ??
|
|
53
|
+
HARNESS_NATIVE_SOURCE_TRANSLATORS.get(id);
|
|
54
|
+
const targetTranslator = TARGET_TRANSLATORS.get(id);
|
|
55
|
+
const prettyPrinter = PRETTY_PRINTERS.get(id);
|
|
56
|
+
|
|
57
|
+
const extension: RegistryExtension = {
|
|
58
|
+
contract,
|
|
59
|
+
...(sourceTranslator ? { sourceTranslator } : {}),
|
|
60
|
+
...(targetTranslator ? { targetTranslator } : {}),
|
|
61
|
+
...(prettyPrinter ? { prettyPrinter } : {}),
|
|
62
|
+
};
|
|
63
|
+
builder.register(extension);
|
|
64
|
+
}
|
|
65
|
+
cachedRegistry = builder.freeze();
|
|
66
|
+
return cachedRegistry;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Get or create the immutable template bundle from the templates directory.
|
|
71
|
+
*/
|
|
72
|
+
export function getSharedTemplates(): ImmutableTemplateBundle {
|
|
73
|
+
if (cachedTemplates !== null) {
|
|
74
|
+
return cachedTemplates;
|
|
75
|
+
}
|
|
76
|
+
const templatesDir = resolve("templates/harness-adapters");
|
|
77
|
+
cachedTemplates = loadTemplateBundle(templatesDir);
|
|
78
|
+
return cachedTemplates;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Get or create the shared, process-wide Rosetta Stone engine. Every caller
|
|
83
|
+
* that translates a source into the canonical form goes through this one engine
|
|
84
|
+
* instance, so `import` and `rosetta translate` share a single pipeline.
|
|
85
|
+
*/
|
|
86
|
+
export function getSharedEngine(): RosettaStone {
|
|
87
|
+
if (cachedEngine !== null) {
|
|
88
|
+
return cachedEngine;
|
|
89
|
+
}
|
|
90
|
+
cachedEngine = createEngine(getSharedRegistry(), getSharedTemplates());
|
|
91
|
+
return cachedEngine;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Reset the cached engine/registry/templates. Test-only seam so a suite that
|
|
96
|
+
* needs a fresh registry (e.g. after mutating templates on disk) is not pinned
|
|
97
|
+
* to a snapshot cached by an earlier test.
|
|
98
|
+
*/
|
|
99
|
+
export function resetSharedEngineCache(): void {
|
|
100
|
+
cachedRegistry = null;
|
|
101
|
+
cachedTemplates = null;
|
|
102
|
+
cachedEngine = null;
|
|
103
|
+
}
|