@design-intelligence/ghost 0.24.0 → 0.25.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.
Files changed (53) hide show
  1. package/README.md +25 -4
  2. package/dist/commands/gather-command.d.ts.map +1 -1
  3. package/dist/commands/gather-command.js +39 -117
  4. package/dist/commands/gather-command.js.map +1 -1
  5. package/dist/commands/pull-command.d.ts.map +1 -1
  6. package/dist/commands/pull-command.js +72 -135
  7. package/dist/commands/pull-command.js.map +1 -1
  8. package/dist/embed/gather.d.ts +9 -0
  9. package/dist/embed/gather.d.ts.map +1 -0
  10. package/dist/embed/gather.js +80 -0
  11. package/dist/embed/gather.js.map +1 -0
  12. package/dist/embed/index.d.ts +9 -0
  13. package/dist/embed/index.d.ts.map +1 -0
  14. package/dist/embed/index.js +6 -0
  15. package/dist/embed/index.js.map +1 -0
  16. package/dist/embed/inspect.d.ts +3 -0
  17. package/dist/embed/inspect.d.ts.map +1 -0
  18. package/dist/embed/inspect.js +155 -0
  19. package/dist/embed/inspect.js.map +1 -0
  20. package/dist/embed/pull.d.ts +8 -0
  21. package/dist/embed/pull.d.ts.map +1 -0
  22. package/dist/embed/pull.js +96 -0
  23. package/dist/embed/pull.js.map +1 -0
  24. package/dist/embed/readonly-map.d.ts +3 -0
  25. package/dist/embed/readonly-map.d.ts.map +1 -0
  26. package/dist/embed/readonly-map.js +33 -0
  27. package/dist/embed/readonly-map.js.map +1 -0
  28. package/dist/embed/snapshot.d.ts +4 -0
  29. package/dist/embed/snapshot.d.ts.map +1 -0
  30. package/dist/embed/snapshot.js +105 -0
  31. package/dist/embed/snapshot.js.map +1 -0
  32. package/dist/embed/types.d.ts +156 -0
  33. package/dist/embed/types.d.ts.map +1 -0
  34. package/dist/embed/types.js +2 -0
  35. package/dist/embed/types.js.map +1 -0
  36. package/dist/ghost-core/index.d.ts +1 -1
  37. package/dist/ghost-core/index.d.ts.map +1 -1
  38. package/dist/ghost-core/index.js +1 -1
  39. package/dist/ghost-core/index.js.map +1 -1
  40. package/dist/ghost-core/material-transport.d.ts +11 -0
  41. package/dist/ghost-core/material-transport.d.ts.map +1 -1
  42. package/dist/ghost-core/material-transport.js +80 -8
  43. package/dist/ghost-core/material-transport.js.map +1 -1
  44. package/dist/observability-events.d.ts +1 -0
  45. package/dist/observability-events.d.ts.map +1 -1
  46. package/dist/observability-events.js +4 -1
  47. package/dist/observability-events.js.map +1 -1
  48. package/dist/scan/templates.d.ts.map +1 -1
  49. package/dist/scan/templates.js +0 -280
  50. package/dist/scan/templates.js.map +1 -1
  51. package/dist/skill-bundle/SKILL.md +1 -1
  52. package/dist/skill-bundle/references/capture.md +1 -2
  53. package/package.json +5 -1
package/README.md CHANGED
@@ -64,17 +64,38 @@ covers the full model. Stuck? See
64
64
 
65
65
  ```ts
66
66
  import {
67
- initghostPackage,
68
- lintghostPackage,
69
- loadghostPackage,
67
+ initGhostPackage,
68
+ lintGhostPackage,
69
+ loadGhostPackage,
70
70
  } from "@design-intelligence/ghost/package";
71
71
  import { buildCatalogMenu } from "@design-intelligence/ghost/core";
72
+ import {
73
+ gatherGhostPackage,
74
+ inspectGhostMaterial,
75
+ loadGhostSnapshot,
76
+ pullGhostNodes,
77
+ } from "@design-intelligence/ghost/embed";
72
78
  import { buildCli } from "@design-intelligence/ghost/cli";
73
79
  ```
74
80
 
81
+ Embedded hosts can use `@design-intelligence/ghost/embed` for the same semantic
82
+ contract as CLI `gather` and `pull` without CLI-only presentation fields or event
83
+ side effects. `loadGhostSnapshot` reads the package, resolved/absent/dangling
84
+ cover state, glossary kinds, and checks. `gatherGhostPackage` returns the
85
+ complete unfiltered menu with the resolved cover separated from selectable
86
+ nodes; checks stay separate. `pullGhostNodes` validates and de-duplicates ids,
87
+ returns misses with suggestions, stable cover/concrete/prose ordering, stripped
88
+ node bodies, extracted Skeletons, and material transport packets. Use
89
+ `inspectGhostMaterial` only for materials declared by a pulled node; it is local
90
+ and bundled-only by default, with explicit host policy required for referenced
91
+ files. HTTPS inspection is always rejected. Returned text is source data, not
92
+ render-safe markup. Embedded operations do not write `.ghost/.events`; hosts may
93
+ persist exported observability events in their own telemetry.
94
+
75
95
  Available subpath exports: `@design-intelligence/ghost`,
76
96
  `@design-intelligence/ghost/package`,
77
- `@design-intelligence/ghost/core`, and
97
+ `@design-intelligence/ghost/core`,
98
+ `@design-intelligence/ghost/embed`, and
78
99
  `@design-intelligence/ghost/cli`. The former package API remains available as
79
100
  an explicitly deprecated compatibility alias.
80
101
 
@@ -1 +1 @@
1
- {"version":3,"file":"gather-command.d.ts","sourceRoot":"","sources":["../../src/commands/gather-command.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAsB/B,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAgGpD"}
1
+ {"version":3,"file":"gather-command.d.ts","sourceRoot":"","sources":["../../src/commands/gather-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAQ/B,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAoDpD"}
@@ -1,9 +1,6 @@
1
- import { readFile } from "node:fs/promises";
2
- import { buildCatalogMenu, parseGlossary, } from "#ghost-core";
3
- import { isMissingPathError } from "../internal/fs.js";
1
+ import { gatherGhostPackage, loadGhostSnapshot } from "../embed/index.js";
4
2
  import { appendGhostEvent, resolveRunId } from "../observability-events.js";
5
3
  import { resolveGhostPackage } from "../package.js";
6
- import { loadGhostPackage } from "../scan/fingerprint-package.js";
7
4
  import { failFromError } from "./errors.js";
8
5
  export function registerGatherCommand(cli) {
9
6
  cli
@@ -20,60 +17,25 @@ export function registerGatherCommand(cli) {
20
17
  process.exit(2);
21
18
  return;
22
19
  }
23
- const ask = normalizeAsk(askParts);
20
+ const ask = normalizeAskParts(askParts);
24
21
  const paths = resolveGhostPackage(opts.package, process.cwd());
25
- const loaded = await loadGhostPackage(paths);
26
- const coverId = loaded.manifest.cover;
27
- const coverNode = coverId
28
- ? loaded.catalog.nodes.get(coverId)
29
- : undefined;
30
- const menu = buildCatalogMenu(loaded.catalog).filter((entry) => entry.id !== coverNode?.id);
31
- const kinds = await readMenuKinds(paths.glossary);
22
+ const snapshot = await loadGhostSnapshot(paths);
23
+ const menu = gatherGhostPackage(snapshot, { ask });
32
24
  const runId = resolveRunId(opts.run);
33
25
  await appendGhostEvent(paths.packageDir, {
34
26
  event: "gather",
35
27
  ...(runId ? { run: runId } : {}),
36
- ...(ask ? { ask } : {}),
37
- menu: menu.map((entry) => entry.id),
28
+ ...(menu.ask ? { ask: menu.ask } : {}),
29
+ menu: menu.nodes.map((entry) => entry.id),
38
30
  });
39
31
  // ghost does no selection. It emits the complete catalog; the agent
40
32
  // reads the ask against it and pulls the nodes whose described
41
33
  // conditions apply.
42
34
  if (opts.format === "json") {
43
- process.stdout.write(`${JSON.stringify({
44
- kind: "menu",
45
- ...(ask ? { ask } : {}),
46
- source: {
47
- artifact: "ghost package",
48
- list: "Available guidance",
49
- },
50
- contract: gatherContract(ask),
51
- ...(coverNode
52
- ? {
53
- cover: {
54
- id: coverNode.id,
55
- body: coverNode.body,
56
- inContext: true,
57
- selectable: false,
58
- },
59
- }
60
- : {}),
61
- next: { command: "ghost pull <id> [<id>…]" },
62
- silence: {
63
- ifNoneApply: "Name the package's silence, follow the cover silence posture when present, and do not invent ghost-backed guidance.",
64
- },
65
- coverage: menuCoverage(menu),
66
- ...(kinds.length > 0 ? { kinds } : {}),
67
- nodes: menu,
68
- }, null, 2)}\n`);
35
+ process.stdout.write(`${JSON.stringify(formatGatherJson(menu), null, 2)}\n`);
69
36
  }
70
37
  else {
71
- process.stdout.write(formatMenuMarkdown(menu, kinds, {
72
- ask,
73
- cover: coverNode
74
- ? { id: coverNode.id, body: coverNode.body }
75
- : undefined,
76
- }));
38
+ process.stdout.write(formatMenuMarkdown(menu));
77
39
  }
78
40
  process.exit(0);
79
41
  }
@@ -82,75 +44,35 @@ export function registerGatherCommand(cli) {
82
44
  }
83
45
  });
84
46
  }
85
- function normalizeAsk(askParts) {
47
+ function normalizeAskParts(askParts) {
86
48
  const ask = (askParts ?? []).join(" ").trim();
87
49
  return ask.length > 0 ? ask : undefined;
88
50
  }
89
- /**
90
- * Read the glossary's declared kinds and their prose purposes for the menu
91
- * header. Missing or malformed glossaries degrade to no legend — the menu
92
- * itself never depends on the glossary being present.
93
- */
94
- async function readMenuKinds(glossaryPath) {
95
- let raw;
96
- try {
97
- raw = await readFile(glossaryPath, "utf-8");
98
- }
99
- catch (err) {
100
- if (isMissingPathError(err))
101
- return [];
102
- throw err;
103
- }
104
- const result = parseGlossary(raw);
105
- if (result.glossary === null)
106
- return [];
107
- return result.glossary.kinds
108
- .filter((kind) => kind.purpose.length > 0)
109
- .map((kind) => ({
110
- name: kind.name,
111
- // Legend entries are one line each: keep the section's first paragraph
112
- // and collapse internal wrapping.
113
- purpose: (kind.purpose.split(/\n\s*\n/, 1)[0] ?? "")
114
- .replace(/\s+/g, " ")
115
- .trim(),
116
- }));
117
- }
118
- function gatherContract(ask) {
51
+ function formatGatherJson(menu) {
119
52
  return {
120
- completeness: {
121
- complete: true,
122
- filtered: false,
123
- ranked: false,
124
- selectedByGhost: false,
125
- },
126
- selection: {
127
- basis: "applicability",
128
- instruction: ask
129
- ? "Pull every node whose description indicates its stated situation applies and whose guidance, material, structure, or refusal governs the work; skip inapplicable nodes."
130
- : "Bare gather is catalog inspection. Do not treat the menu as task grounding until an ask is supplied; when grounding a task, pull every applicable node and skip inapplicable nodes.",
131
- topicOverlapAloneIsApplicability: false,
132
- addForCompleteness: false,
133
- omitApplicableForCount: false,
134
- },
135
- noAsk: "Bare gather is catalog inspection and does not imply task grounding.",
136
- };
137
- }
138
- function menuCoverage(menu) {
139
- return {
140
- nodes: menu.length,
141
- concrete: menu.filter((entry) => entry.concrete).length,
142
- payloads: {
143
- materials: menu.filter((entry) => entry.materials !== undefined).length,
144
- fencedExamples: menu.filter((entry) => entry.hasFencedExample).length,
145
- skeletons: menu.filter((entry) => entry.hasSkeleton).length,
146
- },
147
- // A node without a description is a bare id the agent cannot select
148
- // against; surface the count where selection happens.
149
- undescribed: menu.filter((entry) => !entry.description || entry.description.trim().length === 0).length,
53
+ kind: menu.kind,
54
+ ...(menu.ask ? { ask: menu.ask } : {}),
55
+ source: menu.source,
56
+ contract: menu.contract,
57
+ ...(menu.cover.state === "resolved"
58
+ ? {
59
+ cover: {
60
+ id: menu.cover.id,
61
+ body: menu.cover.node.body,
62
+ inContext: true,
63
+ selectable: false,
64
+ },
65
+ }
66
+ : {}),
67
+ next: { command: "ghost pull <id> [<id>…]" },
68
+ silence: menu.silence,
69
+ coverage: menu.coverage,
70
+ ...(menu.kinds !== undefined ? { kinds: menu.kinds } : {}),
71
+ nodes: menu.nodes,
150
72
  };
151
73
  }
152
74
  function menuCoverageLine(menu) {
153
- const coverage = menuCoverage(menu);
75
+ const coverage = menu.coverage;
154
76
  const payloadParts = [
155
77
  `${coverage.payloads.materials} with materials`,
156
78
  `${coverage.payloads.fencedExamples} with substantial fenced examples`,
@@ -165,28 +87,28 @@ function menuCoverageLine(menu) {
165
87
  }
166
88
  return parts.join(" · ");
167
89
  }
168
- function formatMenuMarkdown(menu, kinds, options = {}) {
90
+ function formatMenuMarkdown(menu) {
169
91
  const lines = ["# ghost package", ""];
170
- if (options.ask)
171
- lines.push(`Ask: ${options.ask}`, "");
172
- if (options.cover) {
173
- lines.push(`## Cover in context: \`${options.cover.id}\``, "", options.cover.body, "", "Cover status: already in context; outside selection; do not pull again.", "", "---", "");
92
+ if (menu.ask)
93
+ lines.push(`Ask: ${menu.ask}`, "");
94
+ if (menu.cover.state === "resolved") {
95
+ lines.push(`## Cover in context: \`${menu.cover.id}\``, "", menu.cover.node.body, "", "Cover status: already in context; outside selection; do not pull again.", "", "---", "");
174
96
  }
175
97
  lines.push("## Available guidance", "", menuCoverageLine(menu), "");
176
- if (options.ask) {
98
+ if (menu.ask) {
177
99
  lines.push("Complete, unfiltered, unranked list from the ghost package. ghost has not selected nodes for this ask.", "Pull every node whose description indicates its stated situation applies and whose guidance, material, structure, or refusal governs the work. Skip inapplicable nodes. Topic overlap alone is not applicability. Do not add nodes for completeness or omit applicable nodes to meet a count.", "Next: `ghost pull <id> [<id>…]`.", "If nothing applies, name the package's silence, follow the cover silence posture, and do not invent ghost-backed guidance.", "");
178
100
  }
179
101
  else {
180
102
  lines.push("Complete, unfiltered, unranked list from the ghost package. Bare gather is catalog inspection; ghost has not grounded a task or selected nodes.", "When grounding an ask, pull every applicable node with `ghost pull <id> [<id>…]`. Skip inapplicable nodes and do not invent ghost-backed guidance when the ghost package is silent.", "");
181
103
  }
182
- if (kinds.length > 0) {
104
+ if (menu.kinds !== undefined && menu.kinds.length > 0) {
183
105
  lines.push("Kinds:", "");
184
- for (const kind of kinds) {
106
+ for (const kind of menu.kinds) {
185
107
  lines.push(`- **${kind.name}** — ${kind.purpose}`);
186
108
  }
187
109
  lines.push("");
188
110
  }
189
- for (const entry of menu) {
111
+ for (const entry of menu.nodes) {
190
112
  const kind = entry.kind ? ` _(${entry.kind})_` : "";
191
113
  lines.push(`- \`${entry.id}\`${kind}`);
192
114
  if (entry.description)
@@ -1 +1 @@
1
- {"version":3,"file":"gather-command.js","sourceRoot":"","sources":["../../src/commands/gather-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gather-command.js","sourceRoot":"","sources":["../../src/commands/gather-command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,UAAU,qBAAqB,CAAC,GAAQ;IAC5C,GAAG;SACA,OAAO,CACN,iBAAiB,EACjB,mFAAmF,CACpF;SACA,MAAM,CACL,iBAAiB,EACjB,sDAAsD,CACvD;SACA,MAAM,CAAC,gBAAgB,EAAE,iCAAiC,EAAE;QAC3D,OAAO,EAAE,UAAU;KACpB,CAAC;SACD,MAAM,CACL,YAAY,EACZ,iEAAiE,CAClE;SACA,MAAM,CAAC,KAAK,EAAE,QAA8B,EAAE,IAAI,EAAE,EAAE;QACrD,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACzD,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE;gBACvC,KAAK,EAAE,QAAQ;gBACf,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;aAC1C,CAAC,CAAC;YAEH,oEAAoE;YACpE,+DAA+D;YAC/D,oBAAoB;YACpB,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACvD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,iBAAiB,CAAC,QAA8B;IACvD,MAAM,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1C,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAuB;IAC/C,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU;YACjC,CAAC,CAAC;gBACE,KAAK,EAAE;oBACL,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;oBACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;oBAC1B,SAAS,EAAE,IAAI;oBACf,UAAU,EAAE,KAAK;iBAClB;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE;QAC5C,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAuB;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,YAAY,GAAG;QACnB,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,iBAAiB;QAC/C,GAAG,QAAQ,CAAC,QAAQ,CAAC,cAAc,mCAAmC;QACtE,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,iBAAiB;KAChD,CAAC;IACF,MAAM,KAAK,GAAG;QACZ,GAAG,QAAQ,CAAC,KAAK,QAAQ;QACzB,GAAG,QAAQ,CAAC,QAAQ,oBAAoB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;KACnE,CAAC;IACF,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,WAAW,oBAAoB,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAuB;IACjD,MAAM,KAAK,GAAa,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,IAAI,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CACR,0BAA0B,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAC3C,EAAE,EACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EACpB,EAAE,EACF,yEAAyE,EACzE,EAAE,EACF,KAAK,EACL,EAAE,CACH,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CACR,wGAAwG,EACxG,+RAA+R,EAC/R,kCAAkC,EAClC,4HAA4H,EAC5H,EAAE,CACH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,iJAAiJ,EACjJ,qLAAqL,EACrL,EAAE,CACH,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,iBAAiB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAuB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,KAAK,CAAC,gBAAgB;QAAE,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACrE,IAAI,KAAK,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pull-command.d.ts","sourceRoot":"","sources":["../../src/commands/pull-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAqC/B,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CA+HlD"}
1
+ {"version":3,"file":"pull-command.d.ts","sourceRoot":"","sources":["../../src/commands/pull-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAU/B,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAwFlD"}
@@ -1,8 +1,7 @@
1
- import { classifyMaterialLocator, closestIds, extractSkeletonFences, resolveLocalMaterialLocator, stripSkeletonSections, transportMaterials, } from "#ghost-core";
2
- import { appendGhostEvent, resolveRunId, } from "../observability-events.js";
1
+ import { loadGhostSnapshot, pullGhostNodes } from "../embed/index.js";
2
+ import { appendGhostEvent, resolveRunId } from "../observability-events.js";
3
3
  import { resolveGhostPackage } from "../package.js";
4
- import { GHOST_EVENTS_FILENAME, GHOST_MATERIALS_DIR, } from "../scan/constants.js";
5
- import { loadGhostPackage } from "../scan/fingerprint-package.js";
4
+ import { GHOST_EVENTS_FILENAME } from "../scan/constants.js";
6
5
  import { resolveGitRoot } from "../scan/package-paths.js";
7
6
  import { failFromError } from "./errors.js";
8
7
  export function registerPullCommand(cli) {
@@ -31,68 +30,43 @@ export function registerPullCommand(cli) {
31
30
  return;
32
31
  }
33
32
  const paths = resolveGhostPackage(opts.package, process.cwd());
34
- const loaded = await loadGhostPackage(paths);
35
- const catalog = loaded.catalog;
36
- const requested = [...new Set(ids)];
37
- const allIds = [...catalog.nodes.keys()];
38
- const known = requested.filter((id) => catalog.nodes.has(id));
39
- const missed = requested
40
- .filter((id) => !catalog.nodes.has(id))
41
- .map((id) => ({ requested: id, suggested: closestIds(id, allIds) }));
42
- for (const miss of missed) {
33
+ const snapshot = await loadGhostSnapshot(paths);
34
+ const repoRoot = await resolveGitRoot(process.cwd());
35
+ const result = await pullGhostNodes(snapshot, {
36
+ ids,
37
+ repoRoot,
38
+ inlineMaterials: opts.materials !== false,
39
+ order: opts.order,
40
+ });
41
+ for (const miss of result.missed) {
43
42
  const hint = miss.suggested.length > 0
44
43
  ? ` (did you mean ${miss.suggested.map((s) => `\`${s}\``).join(", ")}?)`
45
44
  : "";
46
45
  console.error(`Warning: unknown node \`${miss.requested}\`${hint}`);
47
46
  }
48
- if (missed.length > 0) {
47
+ if (result.missed.length > 0) {
49
48
  console.error("Run `ghost gather` to list every node.");
50
49
  }
51
- const givenNodes = known.map((id) => catalog.nodes.get(id));
52
- const nodes = opts.order === "given"
53
- ? givenNodes
54
- : orderPulledNodes(givenNodes, loaded.manifest.cover);
55
- const pulledNodes = await resolvePulledNodes(nodes, paths.packageDir, opts.materials !== false);
56
- const counts = sumMaterialCounts(pulledNodes);
57
50
  if (opts.events !== false) {
58
51
  const runId = resolveRunId(opts.run);
59
52
  await appendGhostEvent(paths.packageDir, {
60
53
  event: "pull",
61
54
  ...(runId ? { run: runId } : {}),
62
- ids: known,
63
- inlinedMaterials: counts.inlined,
64
- omittedMaterials: counts.omitted,
65
- ...(missed.length > 0 ? { missed } : {}),
55
+ ids: [...result.ids],
56
+ inlinedMaterials: result.materialCounts.inlined,
57
+ omittedMaterials: result.materialCounts.omitted,
58
+ ...(result.missed.length > 0 ? { missed: [...result.missed] } : {}),
66
59
  });
67
60
  }
68
- if (known.length === 0) {
61
+ if (result.ids.length === 0) {
69
62
  process.exit(2);
70
63
  return;
71
64
  }
72
65
  if (opts.format === "json") {
73
- process.stdout.write(`${JSON.stringify({
74
- kind: "pull",
75
- ...(missed.length > 0 ? { missed } : {}),
76
- nodes: pulledNodes.map(({ node, materials }) => ({
77
- id: node.id,
78
- ...(node.kind !== undefined ? { kind: node.kind } : {}),
79
- ...(node.description
80
- ? { description: node.description }
81
- : {}),
82
- ...(node.materials !== undefined
83
- ? {
84
- materials: opts.materials === false
85
- ? node.materials
86
- : materials.materials.map(formatJsonMaterial),
87
- }
88
- : {}),
89
- body: stripSkeletonSections(node.body),
90
- })),
91
- skeletons: pulledSkeletons(pulledNodes),
92
- }, null, 2)}\n`);
66
+ process.stdout.write(`${JSON.stringify(formatPullJson(result, opts.materials !== false), null, 2)}\n`);
93
67
  }
94
68
  else {
95
- process.stdout.write(formatPullMarkdown(pulledNodes));
69
+ process.stdout.write(formatPullMarkdown(result));
96
70
  }
97
71
  process.exit(0);
98
72
  }
@@ -101,114 +75,49 @@ export function registerPullCommand(cli) {
101
75
  }
102
76
  });
103
77
  }
104
- async function resolvePulledNodes(nodes, packageDir, inlineMaterials) {
105
- const repoRoot = await resolveGitRoot(process.cwd());
106
- return Promise.all(nodes.map(async (node) => ({
107
- node,
108
- materials: inlineMaterials
109
- ? await transportMaterials(node.materials, {
110
- repoRoot,
111
- packageDir,
112
- materialsDir: GHOST_MATERIALS_DIR,
113
- })
114
- : locatorOnlyMaterials(node.materials, repoRoot, packageDir),
115
- })));
116
- }
117
- function orderPulledNodes(nodes, coverId) {
118
- return nodes
119
- .map((node, index) => ({
120
- node,
121
- index,
122
- bucket: steeringBucket(node, coverId),
123
- }))
124
- .sort((a, b) => a.bucket - b.bucket || a.index - b.index)
125
- .map((entry) => entry.node);
126
- }
127
- function steeringBucket(node, coverId) {
128
- if (coverId !== undefined && node.id === coverId)
129
- return 0;
130
- if (node.concrete)
131
- return 1;
132
- return 2;
133
- }
134
- function locatorOnlyMaterials(locators, repoRoot, packageDir) {
78
+ function formatPullJson(result, inlineMaterials) {
135
79
  return {
136
- materials: (locators ?? []).map((locator) => ({
137
- locator,
138
- tier: classifyMaterialLocator(locator).kind === "url"
139
- ? "url"
140
- : resolveLocalMaterialLocator(locator, {
141
- repoRoot,
142
- packageDir,
143
- materialsDir: GHOST_MATERIALS_DIR,
144
- }).tier,
80
+ kind: "pull",
81
+ ...(result.missed.length > 0 ? { missed: result.missed } : {}),
82
+ nodes: result.nodes.map((node) => ({
83
+ id: node.id,
84
+ ...(node.kind !== undefined ? { kind: node.kind } : {}),
85
+ ...(node.description ? { description: node.description } : {}),
86
+ ...(node.declaredMaterials !== undefined
87
+ ? {
88
+ materials: inlineMaterials
89
+ ? (node.materials ?? []).map(formatJsonMaterial)
90
+ : node.declaredMaterials,
91
+ }
92
+ : {}),
93
+ body: node.body,
145
94
  })),
146
- inlined: 0,
147
- omitted: 0,
148
- };
149
- }
150
- function sumMaterialCounts(nodes) {
151
- return nodes.reduce((sum, { materials }) => ({
152
- inlined: sum.inlined + materials.inlined,
153
- omitted: sum.omitted + materials.omitted,
154
- }), { inlined: 0, omitted: 0 });
155
- }
156
- function pulledSkeletons(nodes) {
157
- return nodes.flatMap(({ node }) => extractSkeletonFences(node.body).map((fence) => ({
158
- nodeId: node.id,
159
- ...(fence.info ? { info: fence.info } : {}),
160
- content: fence.content,
161
- })));
162
- }
163
- function formatJsonMaterial(material) {
164
- return {
165
- locator: material.locator,
166
- tier: material.tier,
167
- ...(material.inlined !== undefined ? { inlined: material.inlined } : {}),
168
- ...(material.omitted
169
- ? { omitted: true, reason: material.reason ?? "not inlined" }
170
- : {}),
171
- ...(material.reason === "binary inspect-pointer"
172
- ? { inspect: material.path ?? material.locator }
173
- : {}),
95
+ skeletons: result.skeletons,
174
96
  };
175
97
  }
176
- function formatPullMarkdown(nodes) {
98
+ function formatPullMarkdown(result) {
177
99
  const sections = [];
178
- for (const { node, materials } of nodes) {
100
+ for (const node of result.nodes) {
179
101
  const kind = node.kind ? ` _(${node.kind})_` : "";
180
102
  const lines = [`# \`${node.id}\`${kind}`];
181
103
  if (node.description)
182
104
  lines.push("", `> ${node.description}`);
183
- lines.push("", stripSkeletonSections(node.body).trim());
184
- if (materials.materials.length > 0) {
105
+ lines.push("", node.body.trim());
106
+ if (node.materials !== undefined && node.materials.length > 0) {
185
107
  lines.push("", "Materials:");
186
- for (const material of materials.materials) {
187
- if (material.inlined !== undefined) {
188
- const info = material.path ?? material.locator;
189
- lines.push("", fencedMarkdown(material.inlined.trimEnd(), info));
190
- }
191
- else if (material.reason === "binary inspect-pointer") {
192
- lines.push(`- inspect: ${material.path ?? material.locator} — view this image before generating`);
193
- }
194
- else {
195
- const reason = material.omitted
196
- ? ` — ${material.reason ?? "not inlined"}`
197
- : "";
198
- lines.push(`- ${material.locator}${reason}`);
199
- }
108
+ for (const material of node.materials) {
109
+ appendMaterialMarkdown(lines, material);
200
110
  }
201
111
  }
202
112
  sections.push(lines.join("\n"));
203
113
  }
204
- const skeletons = pulledSkeletons(nodes);
205
- if (skeletons.length > 0) {
114
+ if (result.skeletons.length > 0) {
206
115
  const lines = [
207
116
  "# Skeletons — begin the artifact from this structure",
208
117
  "",
209
118
  "Begin the artifact from the matching structure below verbatim, then fill it.",
210
119
  ];
211
- for (const skeleton of skeletons) {
120
+ for (const skeleton of result.skeletons) {
212
121
  lines.push("", `## From \`${skeleton.nodeId}\``, "");
213
122
  lines.push(fencedMarkdown(skeleton.content.trimEnd(), skeleton.info));
214
123
  }
@@ -216,6 +125,34 @@ function formatPullMarkdown(nodes) {
216
125
  }
217
126
  return `${sections.join("\n\n---\n\n")}\n`;
218
127
  }
128
+ function appendMaterialMarkdown(lines, material) {
129
+ if (material.inlined !== undefined) {
130
+ const info = material.path ?? material.locator;
131
+ lines.push("", fencedMarkdown(material.inlined.trimEnd(), info));
132
+ }
133
+ else if (material.reason === "binary inspect-pointer") {
134
+ lines.push(`- inspect: ${material.path ?? material.locator} — view this image before generating`);
135
+ }
136
+ else {
137
+ const reason = material.omitted
138
+ ? ` — ${material.reason ?? "not inlined"}`
139
+ : "";
140
+ lines.push(`- ${material.locator}${reason}`);
141
+ }
142
+ }
143
+ function formatJsonMaterial(material) {
144
+ return {
145
+ locator: material.locator,
146
+ tier: material.tier,
147
+ ...(material.inlined !== undefined ? { inlined: material.inlined } : {}),
148
+ ...(material.omitted
149
+ ? { omitted: true, reason: material.reason ?? "not inlined" }
150
+ : {}),
151
+ ...(material.reason === "binary inspect-pointer"
152
+ ? { inspect: material.path ?? material.locator }
153
+ : {}),
154
+ };
155
+ }
219
156
  function fencedMarkdown(content, info) {
220
157
  const fence = "`".repeat(Math.max(3, longestBacktickRun(content) + 1));
221
158
  return `${fence}${info ?? ""}\n${content}\n${fence}`;
@@ -1 +1 @@
1
- {"version":3,"file":"pull-command.js","sourceRoot":"","sources":["../../src/commands/pull-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pull-command.js","sourceRoot":"","sources":["../../src/commands/pull-command.ts"],"names":[],"mappings":"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"}