renma 0.18.2 → 0.18.3

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +55 -1
  2. package/architecture.md +4 -0
  3. package/dist/catalog.d.ts +1 -1
  4. package/dist/catalog.d.ts.map +1 -1
  5. package/dist/catalog.js +5 -2
  6. package/dist/catalog.js.map +1 -1
  7. package/dist/commands/inspect.d.ts +2 -66
  8. package/dist/commands/inspect.d.ts.map +1 -1
  9. package/dist/commands/inspect.js +45 -295
  10. package/dist/commands/inspect.js.map +1 -1
  11. package/dist/commands/readiness.d.ts +3 -0
  12. package/dist/commands/readiness.d.ts.map +1 -1
  13. package/dist/commands/readiness.js +9 -6
  14. package/dist/commands/readiness.js.map +1 -1
  15. package/dist/commands/suggest-metadata.d.ts +4 -21
  16. package/dist/commands/suggest-metadata.d.ts.map +1 -1
  17. package/dist/commands/suggest-metadata.js +65 -514
  18. package/dist/commands/suggest-metadata.js.map +1 -1
  19. package/dist/decisions/metadata-suggestion.d.ts +60 -0
  20. package/dist/decisions/metadata-suggestion.d.ts.map +1 -0
  21. package/dist/decisions/metadata-suggestion.js +176 -0
  22. package/dist/decisions/metadata-suggestion.js.map +1 -0
  23. package/dist/discovery.d.ts.map +1 -1
  24. package/dist/discovery.js +4 -0
  25. package/dist/discovery.js.map +1 -1
  26. package/dist/evidence/classification.d.ts +4 -0
  27. package/dist/evidence/classification.d.ts.map +1 -0
  28. package/dist/evidence/classification.js +15 -0
  29. package/dist/evidence/classification.js.map +1 -0
  30. package/dist/evidence/inspect.d.ts +68 -0
  31. package/dist/evidence/inspect.d.ts.map +1 -0
  32. package/dist/evidence/inspect.js +2 -0
  33. package/dist/evidence/inspect.js.map +1 -0
  34. package/dist/evidence/target.d.ts +51 -0
  35. package/dist/evidence/target.d.ts.map +1 -0
  36. package/dist/evidence/target.js +161 -0
  37. package/dist/evidence/target.js.map +1 -0
  38. package/dist/renderers/inspect.d.ts +3 -0
  39. package/dist/renderers/inspect.d.ts.map +1 -0
  40. package/dist/renderers/inspect.js +159 -0
  41. package/dist/renderers/inspect.js.map +1 -0
  42. package/dist/renderers/metadata-suggestion.d.ts +3 -0
  43. package/dist/renderers/metadata-suggestion.d.ts.map +1 -0
  44. package/dist/renderers/metadata-suggestion.js +320 -0
  45. package/dist/renderers/metadata-suggestion.js.map +1 -0
  46. package/dist/repository-evidence.d.ts +7 -1
  47. package/dist/repository-evidence.d.ts.map +1 -1
  48. package/dist/repository-evidence.js +10 -2
  49. package/dist/repository-evidence.js.map +1 -1
  50. package/dist/scanner.d.ts.map +1 -1
  51. package/dist/scanner.js +3 -13
  52. package/dist/scanner.js.map +1 -1
  53. package/docs/README.md +2 -0
  54. package/docs/internal-architecture.md +296 -0
  55. package/package.json +1 -1
  56. package/scripts/verify-package.mjs +154 -9
@@ -0,0 +1,51 @@
1
+ import { type SkillParentIndex, type SkillParentResolution } from "../catalog.js";
2
+ import { type RepositoryClassificationPathResolution, type SkillEntrypointPath } from "../discovery.js";
3
+ import type { AssetMetadata, CatalogEntry } from "../model.js";
4
+ import { type RepositorySnapshot } from "../repository-evidence.js";
5
+ import type { SecurityPolicyAssetEvidence } from "../security-policy-inventory.js";
6
+ import type { AssetClassificationEvidence, AssetGovernanceEvidence, ParsedDocument } from "../types.js";
7
+ export interface TargetDocumentEvidence {
8
+ absolutePath: string;
9
+ outputPath: string;
10
+ content: string;
11
+ document: ParsedDocument;
12
+ metadata: AssetMetadata;
13
+ repositoryBoundary: RepositoryClassificationPathResolution;
14
+ repositoryRoot?: string;
15
+ repositoryRelativePath: string;
16
+ entrypoint?: SkillEntrypointPath;
17
+ classification: AssetClassificationEvidence;
18
+ }
19
+ export type TargetRepositoryEvidence = {
20
+ state: "resolved";
21
+ snapshot: RepositorySnapshot;
22
+ skillParents: SkillParentIndex;
23
+ parent: SkillParentResolution;
24
+ entry?: CatalogEntry;
25
+ policy?: SecurityPolicyAssetEvidence;
26
+ classification: AssetClassificationEvidence;
27
+ governance: AssetGovernanceEvidence | null;
28
+ } | {
29
+ state: "unavailable";
30
+ reason: "repository-boundary-unresolved" | "repository-boundary-ambiguous" | "snapshot-unavailable";
31
+ classification: AssetClassificationEvidence;
32
+ };
33
+ export interface CollectTargetDocumentOptions {
34
+ /** Preserve each command's established unresolved-path evidence shape. */
35
+ unresolvedArtifactPath: "absolute" | "input";
36
+ }
37
+ /**
38
+ * Read and structurally classify one command target.
39
+ *
40
+ * This stage does not claim parent inheritance or other repository-backed
41
+ * governance. Those facts require a snapshot and are attached separately.
42
+ */
43
+ export declare function collectTargetDocumentEvidence(target: string, options: CollectTargetDocumentOptions): Promise<TargetDocumentEvidence>;
44
+ /**
45
+ * Enrich structural target evidence from one repository snapshot.
46
+ *
47
+ * Snapshot failures intentionally remain unavailable. Falling back to path
48
+ * guesses here would manufacture catalog identity or inherited governance.
49
+ */
50
+ export declare function collectTargetRepositoryEvidence(target: TargetDocumentEvidence): Promise<TargetRepositoryEvidence>;
51
+ //# sourceMappingURL=target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../../src/evidence/target.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAC;AACvB,OAAO,EAIL,KAAK,sCAAsC,EAC3C,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,KAAK,EAEV,2BAA2B,EAC3B,uBAAuB,EACvB,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,aAAa,CAAC;IACxB,kBAAkB,EAAE,sCAAsC,CAAC;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,cAAc,EAAE,2BAA2B,CAAC;CAC7C;AAED,MAAM,MAAM,wBAAwB,GAChC;IACE,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,YAAY,EAAE,gBAAgB,CAAC;IAC/B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,cAAc,EAAE,2BAA2B,CAAC;IAC5C,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAAC;CAC5C,GACD;IACE,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EACF,gCAAgC,GAChC,+BAA+B,GAC/B,sBAAsB,CAAC;IAC3B,cAAc,EAAE,2BAA2B,CAAC;CAC7C,CAAC;AAEN,MAAM,WAAW,4BAA4B;IAC3C,0EAA0E;IAC1E,sBAAsB,EAAE,UAAU,GAAG,OAAO,CAAC;CAC9C;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,sBAAsB,CAAC,CA+CjC;AAED;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,wBAAwB,CAAC,CAyDnC"}
@@ -0,0 +1,161 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { resolveSkillSupportParent, withResolvedSkillParent, } from "../catalog.js";
4
+ import { classifyAssetPath, classifyRepositorySkillEntrypointPath, repositoryClassificationPath, } from "../discovery.js";
5
+ import { parseDocument } from "../markdown.js";
6
+ import { parseAssetMetadata } from "../metadata.js";
7
+ import { collectRepositorySnapshot, } from "../repository-evidence.js";
8
+ /**
9
+ * Read and structurally classify one command target.
10
+ *
11
+ * This stage does not claim parent inheritance or other repository-backed
12
+ * governance. Those facts require a snapshot and are attached separately.
13
+ */
14
+ export async function collectTargetDocumentEvidence(target, options) {
15
+ const absolutePath = path.resolve(target);
16
+ const content = await readFile(absolutePath, "utf8");
17
+ const outputPath = target.replaceAll("\\", "/");
18
+ const repositoryBoundary = repositoryClassificationPath(target);
19
+ const repositoryRelativePath = repositoryBoundary.state === "resolved"
20
+ ? repositoryBoundary.relativePath
21
+ : "";
22
+ // Keep repository-relative paths in public evidence and migration semantics.
23
+ // The absolute path is reserved for filesystem I/O and exact entry matching.
24
+ const repositoryRoot = repositoryBoundary.state === "resolved"
25
+ ? repositoryBoundary.root
26
+ : undefined;
27
+ const initialClassification = classifyAssetPath(repositoryRelativePath);
28
+ const unresolvedPath = options.unresolvedArtifactPath === "absolute" ? absolutePath : outputPath;
29
+ const document = parseDocument({
30
+ absolutePath,
31
+ content,
32
+ kind: initialClassification.kind,
33
+ path: repositoryRelativePath || unresolvedPath,
34
+ sizeBytes: Buffer.byteLength(content),
35
+ contentClassification: "text",
36
+ markdownParserEligible: /\.mdx?$/i.test(unresolvedPath),
37
+ });
38
+ const metadata = parseAssetMetadata(document).metadata;
39
+ const classification = classifyAssetPath(repositoryRelativePath, {
40
+ ...(metadata.type ? { metadataType: metadata.type } : {}),
41
+ });
42
+ const entrypoint = repositoryRelativePath
43
+ ? classifyRepositorySkillEntrypointPath(repositoryRelativePath)
44
+ : undefined;
45
+ return {
46
+ absolutePath,
47
+ outputPath,
48
+ content,
49
+ document,
50
+ metadata,
51
+ repositoryBoundary,
52
+ ...(repositoryRoot ? { repositoryRoot } : {}),
53
+ repositoryRelativePath,
54
+ ...(entrypoint ? { entrypoint } : {}),
55
+ classification,
56
+ };
57
+ }
58
+ /**
59
+ * Enrich structural target evidence from one repository snapshot.
60
+ *
61
+ * Snapshot failures intentionally remain unavailable. Falling back to path
62
+ * guesses here would manufacture catalog identity or inherited governance.
63
+ */
64
+ export async function collectTargetRepositoryEvidence(target) {
65
+ if (!target.repositoryRoot) {
66
+ return {
67
+ state: "unavailable",
68
+ reason: target.repositoryBoundary.state === "unresolved"
69
+ ? target.repositoryBoundary.reasonCode
70
+ : "repository-boundary-unresolved",
71
+ classification: target.classification,
72
+ };
73
+ }
74
+ try {
75
+ const snapshot = await collectRepositorySnapshot(target.repositoryRoot);
76
+ const skillParents = snapshot.skillParents;
77
+ const parent = resolveSkillSupportParent(target.repositoryRelativePath, skillParents);
78
+ const classification = withResolvedSkillParent(target.classification, target.repositoryRelativePath, skillParents);
79
+ const entry = snapshot.catalog.entries.find((candidate) => path.resolve(snapshot.root, candidate.sourcePath) ===
80
+ target.absolutePath);
81
+ const policy = snapshot.securityPolicies.find((candidate) => candidate.path === target.repositoryRelativePath);
82
+ const governance = buildTargetGovernance(target, classification, parent, entry, policy);
83
+ return {
84
+ state: "resolved",
85
+ snapshot,
86
+ skillParents,
87
+ parent,
88
+ ...(entry ? { entry } : {}),
89
+ ...(policy ? { policy } : {}),
90
+ classification,
91
+ governance,
92
+ };
93
+ }
94
+ catch {
95
+ return {
96
+ state: "unavailable",
97
+ reason: "snapshot-unavailable",
98
+ classification: target.classification,
99
+ };
100
+ }
101
+ }
102
+ function buildTargetGovernance(target, classification, parent, entry, policy) {
103
+ if (entry) {
104
+ return {
105
+ ownership: entry.ownership,
106
+ policySource: policySource(policy),
107
+ ...(policy?.inheritedFrom
108
+ ? { policyInheritedFrom: policy.inheritedFrom.sourcePath }
109
+ : {}),
110
+ metadataState: targetMetadataState(target, classification),
111
+ };
112
+ }
113
+ if (classification.scope !== "skill-local")
114
+ return null;
115
+ const declaredOwner = target.metadata.owner?.trim();
116
+ const ownership = declaredOwner
117
+ ? {
118
+ declaredOwner,
119
+ effectiveOwner: declaredOwner,
120
+ source: "declared",
121
+ }
122
+ : parent.state === "resolved" && parent.parent.owner
123
+ ? {
124
+ declaredOwner: null,
125
+ effectiveOwner: parent.parent.owner,
126
+ source: "inherited",
127
+ inheritedFrom: {
128
+ id: parent.parent.id,
129
+ sourcePath: parent.parent.sourcePath,
130
+ },
131
+ }
132
+ : {
133
+ declaredOwner: null,
134
+ effectiveOwner: null,
135
+ source: "unowned",
136
+ };
137
+ return {
138
+ ownership,
139
+ policySource: "missing",
140
+ metadataState: targetMetadataState(target, classification),
141
+ };
142
+ }
143
+ function policySource(policy) {
144
+ if (!policy?.hasEffectivePolicy)
145
+ return "missing";
146
+ if (policy.hasLocalPolicyMetadata)
147
+ return "declared";
148
+ return "inherited";
149
+ }
150
+ function targetMetadataState(target, classification) {
151
+ const hasMetadata = Object.keys(target.document.metadata).length > 0;
152
+ if (classification.scope === "skill-local" && !hasMetadata) {
153
+ return "not-required";
154
+ }
155
+ if (!hasMetadata)
156
+ return "missing";
157
+ if (target.metadata.id && target.metadata.owner)
158
+ return "declared";
159
+ return "partial";
160
+ }
161
+ //# sourceMappingURL=target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/evidence/target.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { InspectOutline } from "../evidence/inspect.js";
2
+ export declare function renderTextOutline(outline: InspectOutline): string;
3
+ //# sourceMappingURL=inspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/renderers/inspect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,cAAc,EAEf,MAAM,wBAAwB,CAAC;AAOhC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAuCjE"}
@@ -0,0 +1,159 @@
1
+ // Rendering must preserve the collected evidence instead of reinterpreting it.
2
+ export function renderTextOutline(outline) {
3
+ const lines = [
4
+ `Path: ${outline.path}`,
5
+ `Lines: ${outline.lineCount}`,
6
+ `Bytes: ${outline.bytes}`,
7
+ `Frontmatter: ${outline.frontmatterRange ?? "none"}`,
8
+ "",
9
+ "Repository boundary:",
10
+ ...renderRepositoryBoundary(outline.repositoryBoundary),
11
+ "",
12
+ "Classification:",
13
+ ...renderClassification(outline.classification),
14
+ "",
15
+ "Governance:",
16
+ ...renderGovernance(outline.governance),
17
+ ...(outline.asset
18
+ ? ["", "Asset:", ...renderAssetSummary(outline.asset)]
19
+ : []),
20
+ "",
21
+ "Context Lens:",
22
+ ...renderContextLensSummary(outline.contextLens),
23
+ "",
24
+ "Headings:",
25
+ ...outline.headings.flatMap((heading) => [
26
+ `- ${"#".repeat(heading.depth)} ${heading.text} ${heading.range}`,
27
+ ...heading.preview.map((line) => ` ${line}`),
28
+ ]),
29
+ "",
30
+ "Code fences:",
31
+ ...outline.codeFences.map((fence) => `- ${fence.range} ${fence.language || "(no language)"}`),
32
+ "",
33
+ "Links:",
34
+ ...outline.links.map((link) => `- L${link.line}: ${link.target}`),
35
+ "",
36
+ ];
37
+ return `${lines.join("\n")}\n`;
38
+ }
39
+ function renderRepositoryBoundary(boundary) {
40
+ if (boundary.state === "resolved") {
41
+ return [
42
+ `- State: ${boundary.state}`,
43
+ `- Source: ${boundary.source}`,
44
+ `- Root: ${boundary.root}`,
45
+ `- Relative path: ${boundary.relativePath}`,
46
+ ];
47
+ }
48
+ return [
49
+ `- State: ${boundary.state}`,
50
+ `- Reason code: ${boundary.reasonCode}`,
51
+ `- Reason: ${boundary.reason}`,
52
+ `- Candidate roots: ${boundary.candidateRoots.join(", ") || "(none)"}`,
53
+ ];
54
+ }
55
+ function renderClassification(classification) {
56
+ return [
57
+ `- Kind: ${classification.kind}`,
58
+ `- Scope: ${classification.scope}`,
59
+ `- Matched rule: ${classification.matchedRule}`,
60
+ `- Reason code: ${classification.reasonCode}`,
61
+ ...(classification.recognizedRoot
62
+ ? [`- Recognized root: ${classification.recognizedRoot}`]
63
+ : []),
64
+ ...(classification.parentAssetPath
65
+ ? [`- Parent asset: ${classification.parentAssetPath}`]
66
+ : []),
67
+ ...(classification.parentAssetCandidatePath
68
+ ? [
69
+ `- Parent candidate: ${classification.parentAssetCandidatePath}`,
70
+ `- Parent resolution: ${classification.parentResolution ?? "structural-candidate"}`,
71
+ ]
72
+ : []),
73
+ ...(classification.parentAssetCandidates?.length
74
+ ? [
75
+ `- Parent candidates: ${classification.parentAssetCandidates.join(", ")}`,
76
+ ]
77
+ : []),
78
+ ...(classification.supportDirectory
79
+ ? [`- Support directory: ${classification.supportDirectory}`]
80
+ : []),
81
+ ...(classification.ignoredNestedSegments?.length
82
+ ? [
83
+ `- Ignored nested segments: ${classification.ignoredNestedSegments.join(", ")}`,
84
+ ]
85
+ : []),
86
+ `- Reason: ${classification.reason}`,
87
+ ...(classification.competingRules?.flatMap((competing) => [
88
+ `- Competing rule: ${competing.rule} (${competing.reasonCode})`,
89
+ ` ${competing.reason}`,
90
+ ]) ?? []),
91
+ ];
92
+ }
93
+ function renderGovernance(governance) {
94
+ if (!governance)
95
+ return ["- Unresolved: target is not a catalog entry."];
96
+ const inheritedOwner = governance.ownership.inheritedFrom?.sourcePath;
97
+ return [
98
+ `- Declared owner: ${governance.ownership.declaredOwner ?? "(none)"}`,
99
+ `- Effective owner: ${governance.ownership.effectiveOwner ?? "(unowned)"}`,
100
+ `- Ownership source: ${governance.ownership.source}`,
101
+ ...(inheritedOwner
102
+ ? [`- Ownership inherited from: ${inheritedOwner}`]
103
+ : []),
104
+ `- Policy source: ${governance.policySource ?? "missing"}`,
105
+ ...(governance.policyInheritedFrom
106
+ ? [`- Policy inherited from: ${governance.policyInheritedFrom}`]
107
+ : []),
108
+ `- Metadata state: ${governance.metadataState ?? "missing"}`,
109
+ ];
110
+ }
111
+ function renderContextLensSummary(contextLens) {
112
+ return [
113
+ `- Enabled: ${contextLens.enabled ? "yes" : "no"}`,
114
+ `- Detected: ${contextLens.detected ? "yes" : "no"}`,
115
+ `- Lenses: ${contextLens.validLensCount}/${contextLens.totalLensCount} valid (${contextLens.invalidLensCount} invalid)`,
116
+ `- Diagnostics: error ${contextLens.diagnosticCounts.error}, warning ${contextLens.diagnosticCounts.warning}, info ${contextLens.diagnosticCounts.info}`,
117
+ `- Representative diagnostic: ${contextLens.representativeDiagnosticCode ?? "(none)"}`,
118
+ `- Definition paths: ${list(contextLens.definitionPaths)}`,
119
+ `- Target references: ${list(contextLens.targetReferences)}`,
120
+ ];
121
+ }
122
+ function renderAssetSummary(asset) {
123
+ return [
124
+ `- ID: ${asset.id}`,
125
+ `- Kind: ${asset.kind}`,
126
+ ...(asset.owner ? [`- Owner: ${asset.owner}`] : []),
127
+ ...(asset.status ? [`- Status: ${asset.status}`] : []),
128
+ `- Tags: ${list(asset.tags)}`,
129
+ ...(asset.kind === "context_lens"
130
+ ? [
131
+ ...(asset.purpose ? [`- Purpose: ${asset.purpose}`] : []),
132
+ `- Applies to: ${list(asset.appliesTo)}`,
133
+ `- Focus: ${list(asset.focus)}`,
134
+ `- Expected outputs: ${list(asset.expectedOutputs)}`,
135
+ ]
136
+ : []),
137
+ "",
138
+ "Relationships:",
139
+ "- Inbound dependents:",
140
+ ...relationshipLines(asset.inboundDependents),
141
+ "- Outbound dependencies:",
142
+ ...relationshipLines(asset.outboundDependencies),
143
+ ...(asset.relationshipChains.length > 0
144
+ ? [
145
+ "- Relationship chains:",
146
+ ...asset.relationshipChains.map((chain) => ` - ${chain.skill} -> ${chain.lens} -> ${chain.context}`),
147
+ ]
148
+ : []),
149
+ ];
150
+ }
151
+ function relationshipLines(relationships) {
152
+ if (relationships.length === 0)
153
+ return [" - (none)"];
154
+ return relationships.map((relationship) => ` - ${relationship.from} ${relationship.kind} -> ${relationship.to}`);
155
+ }
156
+ function list(values) {
157
+ return values.length > 0 ? values.join(", ") : "(none)";
158
+ }
159
+ //# sourceMappingURL=inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/renderers/inspect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { MetadataSuggestion } from "../decisions/metadata-suggestion.js";
2
+ export declare function renderMetadataPrompt(suggestion: MetadataSuggestion): string;
3
+ //# sourceMappingURL=metadata-suggestion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-suggestion.d.ts","sourceRoot":"","sources":["../../src/renderers/metadata-suggestion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAI9E,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAsG3E"}