ctxr-cli 0.5.0 → 0.6.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 (200) hide show
  1. package/dist/adapter.d.ts +0 -1
  2. package/dist/adapter.d.ts.map +1 -1
  3. package/dist/adapter.js.map +1 -1
  4. package/dist/adapters/builtin/index.d.ts.map +1 -1
  5. package/dist/adapters/builtin/index.js +2 -2
  6. package/dist/adapters/builtin/index.js.map +1 -1
  7. package/dist/adapters/harness/claude-code.d.ts.map +1 -1
  8. package/dist/adapters/harness/claude-code.js +30 -14
  9. package/dist/adapters/harness/claude-code.js.map +1 -1
  10. package/dist/adapters/harness/hermes-agent.d.ts +9 -0
  11. package/dist/adapters/harness/hermes-agent.d.ts.map +1 -0
  12. package/dist/adapters/harness/hermes-agent.js +13 -0
  13. package/dist/adapters/harness/hermes-agent.js.map +1 -0
  14. package/dist/adapters/types.d.ts +39 -18
  15. package/dist/adapters/types.d.ts.map +1 -1
  16. package/dist/adapters/types.js +3 -3
  17. package/dist/adapters/types.js.map +1 -1
  18. package/dist/commands/adapters-generate.d.ts +4 -2
  19. package/dist/commands/adapters-generate.d.ts.map +1 -1
  20. package/dist/commands/adapters-generate.js +14 -6
  21. package/dist/commands/adapters-generate.js.map +1 -1
  22. package/dist/commands/archive.d.ts +4 -2
  23. package/dist/commands/archive.d.ts.map +1 -1
  24. package/dist/commands/archive.js +5 -3
  25. package/dist/commands/archive.js.map +1 -1
  26. package/dist/commands/check.d.ts.map +1 -1
  27. package/dist/commands/check.js +1 -6
  28. package/dist/commands/check.js.map +1 -1
  29. package/dist/commands/init.d.ts +2 -0
  30. package/dist/commands/init.d.ts.map +1 -1
  31. package/dist/commands/init.js +84 -18
  32. package/dist/commands/init.js.map +1 -1
  33. package/dist/commands/publish-check.d.ts +23 -0
  34. package/dist/commands/publish-check.d.ts.map +1 -0
  35. package/dist/commands/publish-check.js +116 -0
  36. package/dist/commands/publish-check.js.map +1 -0
  37. package/dist/commands/publish-gather.d.ts +37 -0
  38. package/dist/commands/publish-gather.d.ts.map +1 -0
  39. package/dist/commands/publish-gather.js +92 -0
  40. package/dist/commands/publish-gather.js.map +1 -0
  41. package/dist/commands/publish-new.d.ts +18 -0
  42. package/dist/commands/publish-new.d.ts.map +1 -0
  43. package/dist/commands/publish-new.js +86 -0
  44. package/dist/commands/publish-new.js.map +1 -0
  45. package/dist/commands/serve.d.ts +32 -0
  46. package/dist/commands/serve.d.ts.map +1 -0
  47. package/dist/commands/serve.js +170 -0
  48. package/dist/commands/serve.js.map +1 -0
  49. package/dist/commands/update.js +3 -3
  50. package/dist/commands/update.js.map +1 -1
  51. package/dist/config/defaults.d.ts +39 -17
  52. package/dist/config/defaults.d.ts.map +1 -1
  53. package/dist/config/defaults.js +40 -21
  54. package/dist/config/defaults.js.map +1 -1
  55. package/dist/config/schema.d.ts +36 -9
  56. package/dist/config/schema.d.ts.map +1 -1
  57. package/dist/config/schema.js +71 -15
  58. package/dist/config/schema.js.map +1 -1
  59. package/dist/core/browse/link-resolver.d.ts +12 -0
  60. package/dist/core/browse/link-resolver.d.ts.map +1 -0
  61. package/dist/core/browse/link-resolver.js +12 -0
  62. package/dist/core/browse/link-resolver.js.map +1 -0
  63. package/dist/core/browse/render.d.ts +5 -0
  64. package/dist/core/browse/render.d.ts.map +1 -0
  65. package/dist/core/browse/render.js +66 -0
  66. package/dist/core/browse/render.js.map +1 -0
  67. package/dist/core/browse/routes.d.ts +31 -0
  68. package/dist/core/browse/routes.d.ts.map +1 -0
  69. package/dist/core/browse/routes.js +56 -0
  70. package/dist/core/browse/routes.js.map +1 -0
  71. package/dist/core/browse/templates.d.ts +4 -0
  72. package/dist/core/browse/templates.d.ts.map +1 -0
  73. package/dist/core/browse/templates.js +26 -0
  74. package/dist/core/browse/templates.js.map +1 -0
  75. package/dist/core/checks/integrity-checks.d.ts +18 -2
  76. package/dist/core/checks/integrity-checks.d.ts.map +1 -1
  77. package/dist/core/checks/integrity-checks.js +55 -10
  78. package/dist/core/checks/integrity-checks.js.map +1 -1
  79. package/dist/core/checks/organize-checks.d.ts +9 -1
  80. package/dist/core/checks/organize-checks.d.ts.map +1 -1
  81. package/dist/core/checks/organize-checks.js +13 -3
  82. package/dist/core/checks/organize-checks.js.map +1 -1
  83. package/dist/core/convention-doc.d.ts +8 -9
  84. package/dist/core/convention-doc.d.ts.map +1 -1
  85. package/dist/core/convention-doc.js +45 -18
  86. package/dist/core/convention-doc.js.map +1 -1
  87. package/dist/core/conventions.d.ts +2 -2
  88. package/dist/core/conventions.js +2 -2
  89. package/dist/core/disclosure/model.d.ts +11 -0
  90. package/dist/core/disclosure/model.d.ts.map +1 -1
  91. package/dist/core/disclosure/model.js +24 -0
  92. package/dist/core/disclosure/model.js.map +1 -1
  93. package/dist/core/errors.d.ts +27 -41
  94. package/dist/core/errors.d.ts.map +1 -1
  95. package/dist/core/errors.js +76 -119
  96. package/dist/core/errors.js.map +1 -1
  97. package/dist/core/git/repo.d.ts +0 -6
  98. package/dist/core/git/repo.d.ts.map +1 -1
  99. package/dist/core/git/repo.js +0 -13
  100. package/dist/core/git/repo.js.map +1 -1
  101. package/dist/core/git/worktree.d.ts +4 -7
  102. package/dist/core/git/worktree.d.ts.map +1 -1
  103. package/dist/core/git/worktree.js +4 -10
  104. package/dist/core/git/worktree.js.map +1 -1
  105. package/dist/core/graph/model.d.ts +14 -0
  106. package/dist/core/graph/model.d.ts.map +1 -1
  107. package/dist/core/graph/model.js +30 -14
  108. package/dist/core/graph/model.js.map +1 -1
  109. package/dist/core/harness/bridge.d.ts +30 -0
  110. package/dist/core/harness/bridge.d.ts.map +1 -0
  111. package/dist/core/harness/bridge.js +178 -0
  112. package/dist/core/harness/bridge.js.map +1 -0
  113. package/dist/core/json-config-merge.d.ts.map +1 -1
  114. package/dist/core/json-config-merge.js +30 -7
  115. package/dist/core/json-config-merge.js.map +1 -1
  116. package/dist/core/migrations/archive-destination-from-taxonomy.d.ts +35 -0
  117. package/dist/core/migrations/archive-destination-from-taxonomy.d.ts.map +1 -0
  118. package/dist/core/migrations/archive-destination-from-taxonomy.js +109 -0
  119. package/dist/core/migrations/archive-destination-from-taxonomy.js.map +1 -0
  120. package/dist/core/migrations/drop-forge-and-workspaces-external.d.ts +19 -0
  121. package/dist/core/migrations/drop-forge-and-workspaces-external.d.ts.map +1 -0
  122. package/dist/core/migrations/drop-forge-and-workspaces-external.js +49 -0
  123. package/dist/core/migrations/drop-forge-and-workspaces-external.js.map +1 -0
  124. package/dist/core/migrations/registry.d.ts.map +1 -1
  125. package/dist/core/migrations/registry.js +4 -0
  126. package/dist/core/migrations/registry.js.map +1 -1
  127. package/dist/core/notes/list.d.ts.map +1 -1
  128. package/dist/core/notes/list.js +5 -1
  129. package/dist/core/notes/list.js.map +1 -1
  130. package/dist/core/publish/script-check.d.ts +12 -0
  131. package/dist/core/publish/script-check.d.ts.map +1 -0
  132. package/dist/core/publish/script-check.js +39 -0
  133. package/dist/core/publish/script-check.js.map +1 -0
  134. package/dist/core/reconcile.d.ts +3 -0
  135. package/dist/core/reconcile.d.ts.map +1 -1
  136. package/dist/core/reconcile.js +15 -5
  137. package/dist/core/reconcile.js.map +1 -1
  138. package/dist/core/session.d.ts +9 -9
  139. package/dist/core/session.js +9 -9
  140. package/dist/core/skills.d.ts +36 -0
  141. package/dist/core/skills.d.ts.map +1 -1
  142. package/dist/core/skills.js +154 -29
  143. package/dist/core/skills.js.map +1 -1
  144. package/dist/core/write-lifecycle/path-gate.d.ts.map +1 -1
  145. package/dist/core/write-lifecycle/path-gate.js +4 -2
  146. package/dist/core/write-lifecycle/path-gate.js.map +1 -1
  147. package/dist/prompt/inquirer-prompter.d.ts.map +1 -1
  148. package/dist/prompt/inquirer-prompter.js +11 -1
  149. package/dist/prompt/inquirer-prompter.js.map +1 -1
  150. package/dist/prompt/prompter.d.ts +16 -0
  151. package/dist/prompt/prompter.d.ts.map +1 -1
  152. package/dist/run.d.ts.map +1 -1
  153. package/dist/run.js +61 -55
  154. package/dist/run.js.map +1 -1
  155. package/dist/taxonomy/profiles.d.ts +11 -0
  156. package/dist/taxonomy/profiles.d.ts.map +1 -1
  157. package/dist/taxonomy/profiles.js +1 -0
  158. package/dist/taxonomy/profiles.js.map +1 -1
  159. package/dist/version.d.ts +1 -1
  160. package/dist/version.js +1 -1
  161. package/package.json +3 -1
  162. package/templates/agents/canonical.md +1 -1
  163. package/templates/conventions/{baseline-convention.md → baseline-conventions.md} +4 -4
  164. package/templates/conventions/{custom-convention-seed.md → house-conventions-seed.md} +15 -2
  165. package/templates/hooks/pre-push.sh +1 -1
  166. package/templates/serve/shell.html +15 -0
  167. package/templates/serve/style.css +88 -0
  168. package/templates/skills/ctxr-land.md +32 -18
  169. package/templates/skills/ctxr-organize-audit.md +1 -1
  170. package/templates/skills/ctxr-publish.md +79 -0
  171. package/templates/skills/ctxr-session-capture.md +44 -1
  172. package/templates/skills/ctxr-session-lifecycle.md +20 -1
  173. package/templates/skills/ctxr-submit.md +15 -11
  174. package/templates/vendor/frontend-design/LICENSE.txt +177 -0
  175. package/templates/vendor/frontend-design/SKILL.md +55 -0
  176. package/templates/vendor/frontend-design/provenance.json +7 -0
  177. package/dist/adapters/forge/github.d.ts +0 -12
  178. package/dist/adapters/forge/github.d.ts.map +0 -1
  179. package/dist/adapters/forge/github.js +0 -76
  180. package/dist/adapters/forge/github.js.map +0 -1
  181. package/dist/adapters/forge/types.d.ts +0 -46
  182. package/dist/adapters/forge/types.d.ts.map +0 -1
  183. package/dist/adapters/forge/types.js +0 -2
  184. package/dist/adapters/forge/types.js.map +0 -1
  185. package/dist/commands/session-abandon.d.ts +0 -13
  186. package/dist/commands/session-abandon.d.ts.map +0 -1
  187. package/dist/commands/session-abandon.js +0 -22
  188. package/dist/commands/session-abandon.js.map +0 -1
  189. package/dist/commands/session-land.d.ts +0 -45
  190. package/dist/commands/session-land.d.ts.map +0 -1
  191. package/dist/commands/session-land.js +0 -171
  192. package/dist/commands/session-land.js.map +0 -1
  193. package/dist/commands/session-reap.d.ts +0 -22
  194. package/dist/commands/session-reap.d.ts.map +0 -1
  195. package/dist/commands/session-reap.js +0 -52
  196. package/dist/commands/session-reap.js.map +0 -1
  197. package/dist/commands/session-submit.d.ts +0 -29
  198. package/dist/commands/session-submit.d.ts.map +0 -1
  199. package/dist/commands/session-submit.js +0 -72
  200. package/dist/commands/session-submit.js.map +0 -1
@@ -3,16 +3,18 @@ import { mkdir, readFile } from 'node:fs/promises';
3
3
  import path from 'node:path';
4
4
  import { parse as parseYaml } from 'yaml';
5
5
  import { z } from 'zod';
6
- import { DEFAULT_ADAPTERS, DEFAULT_ARCHIVE_PATH, DEFAULT_ROLLUP_STALE_DAYS, DEFAULT_CATALOG_PATH, DEFAULT_CATALOG_SECTION_MAX_BYTES, DEFAULT_BASELINE_CONVENTION_FILE_NAME, DEFAULT_CUSTOM_CONVENTION_FILE_NAME, DEFAULT_GUIDANCE_PATH, DEFAULT_DERIVED_PATHS, DEFAULT_DIFF_SIZE_CEILING_LINES, DEFAULT_EXCLUDE_PATHS, DEFAULT_HARD_WALLS, DEFAULT_INBOX_PATH, DEFAULT_TRACKING_PARAMS, DEFAULT_INTERNAL_AUDIENCES, DEFAULT_MISSION_PATH, DEFAULT_SKILLS_PATH, DEFAULT_RELATIONS, DEFAULT_GRAPH_SETTINGS, DEFAULT_SESSION_BRANCH_PREFIX, DEFAULT_VISIBILITY_CONTEXT, DEFAULT_VISIBILITY_FIELD_KEY, DEFAULT_WORKSPACES_EXTERNAL, DEFAULT_WORKTREES_PATH, } from '../config/defaults.js';
6
+ import { DEFAULT_ADAPTERS, DEFAULT_ARCHIVE_DESTINATION, DEFAULT_ROLLUP_STALE_DAYS, DEFAULT_CATALOG_PATH, DEFAULT_CATALOG_SECTION_MAX_BYTES, DEFAULT_PUBLISH_PATH, DEFAULT_VENDORED_SKILLS, DEFAULT_BASELINE_CONVENTIONS_FILE_NAME, DEFAULT_HOUSE_CONVENTIONS_FILE_NAME, DEFAULT_GUIDANCE_PATH, DEFAULT_DERIVED_PATHS, DEFAULT_DIFF_SIZE_CEILING_LINES, DEFAULT_EXCLUDE_PATHS, DEFAULT_HARD_WALLS, DEFAULT_INBOX_PATH, DEFAULT_TRACKING_PARAMS, DEFAULT_INTERNAL_AUDIENCES, DEFAULT_MISSION_PATH, DEFAULT_SKILLS_PATH, DEFAULT_RELATIONS, DEFAULT_GRAPH_SETTINGS, DEFAULT_SESSION_BRANCH_PREFIX, DEFAULT_VISIBILITY_CONTEXT, DEFAULT_VISIBILITY_FIELD_KEY, DEFAULT_WORKTREES_PATH, } from '../config/defaults.js';
7
7
  import { configPathFor, readConfig } from '../config/load.js';
8
8
  import { renderStoreConfig } from '../config/render.js';
9
- import { SUPPORTED_SCHEMA_VERSION, TaxonomyLayerSchema } from '../config/schema.js';
9
+ import { SUPPORTED_SCHEMA_VERSION, TaxonomyLayerSchema, } from '../config/schema.js';
10
10
  import { buildAgentsCanonicalSection, buildAgentsCaptureSection, buildAgentsConventionsSection, buildAgentsLegRoutingSection, buildAgentsMissionSection, buildAgentsPlacementSection, agentsMdPath, } from '../core/agents-doc.js';
11
- import { seedCustomConventionFile, syncBaselineConvention } from '../core/convention-doc.js';
12
- import { syncShippedSkills } from '../core/skills.js';
11
+ import { seedHouseConventionsFile, syncBaselineConventions } from '../core/convention-doc.js';
12
+ import { syncShippedSkills, syncVendoredSkills } from '../core/skills.js';
13
+ import { bridgeHarnessSkills } from '../core/harness/bridge.js';
13
14
  import { reconcileStore, WORKTREES_GITIGNORE_FENCE } from '../core/reconcile.js';
14
15
  import { isInteractive } from '../core/env.js';
15
- import { GitIdentityMissingError, InvalidTaxonomyFileError, TaxonomySelectionConflictError, UnknownTaxonomyProfileError, } from '../core/errors.js';
16
+ import { CLI_VERSION } from '../version.js';
17
+ import { GitIdentityMissingError, InvalidTaxonomyFileError, TaxonomySelectionConflictError, UnknownHarnessError, UnknownTaxonomyProfileError, } from '../core/errors.js';
16
18
  import { ExitCode } from '../core/exit-codes.js';
17
19
  import { writeFileAtomic } from '../core/fs/atomic.js';
18
20
  import { upsertFencedRegionInFile } from '../core/fs/fenced-region.js';
@@ -23,6 +25,18 @@ import { resolveRootForInit } from '../core/root.js';
23
25
  import { defaultProfile, DEFAULT_PROFILE_ID, profileById, SHIPPED_PROFILES } from '../taxonomy/profiles.js';
24
26
  export const requires = { store: 'absent' };
25
27
  const CustomTaxonomyFileSchema = z.object({ layers: z.array(TaxonomyLayerSchema) });
28
+ /**
29
+ * Spread rather than a plain key, so `archiveDestination` stays genuinely
30
+ * optional on `ResolvedTaxonomy` rather than always-present-but-possibly-
31
+ * undefined, matching how the config schema keeps its own optional fields.
32
+ */
33
+ function fromProfile(profile) {
34
+ return {
35
+ profileId: profile.id,
36
+ layers: [...profile.layers],
37
+ ...(profile.archiveDestination !== undefined ? { archiveDestination: profile.archiveDestination } : {}),
38
+ };
39
+ }
26
40
  async function resolveTaxonomy(env, flags) {
27
41
  if (flags.profile && flags.taxonomy) {
28
42
  throw new TaxonomySelectionConflictError();
@@ -45,7 +59,7 @@ async function resolveTaxonomy(env, flags) {
45
59
  if (!profile) {
46
60
  throw new UnknownTaxonomyProfileError(flags.profile, SHIPPED_PROFILES.map((p) => p.id));
47
61
  }
48
- return { profileId: profile.id, layers: [...profile.layers] };
62
+ return fromProfile(profile);
49
63
  }
50
64
  if (isInteractive(env)) {
51
65
  const selectedId = await env.prompter.selectProfile({
@@ -54,11 +68,43 @@ async function resolveTaxonomy(env, flags) {
54
68
  defaultId: DEFAULT_PROFILE_ID,
55
69
  });
56
70
  const profile = profileById(selectedId) ?? defaultProfile();
57
- return { profileId: profile.id, layers: [...profile.layers] };
71
+ return fromProfile(profile);
58
72
  }
59
73
  // Non-interactive, nothing specified: PARA immediately — never prompt, never block.
60
- const profile = defaultProfile();
61
- return { profileId: profile.id, layers: [...profile.layers] };
74
+ return fromProfile(defaultProfile());
75
+ }
76
+ /**
77
+ * vendored-craft-skills spec ("the operator declares which harnesses a
78
+ * store targets, at setup"): the selectable harness-generation adapters,
79
+ * presented at init and never inferred by inspecting the host machine.
80
+ */
81
+ const SELECTABLE_HARNESSES = [
82
+ { id: 'claude-code', name: 'Claude Code', description: 'Generates CLAUDE.md importing AGENTS.md, plus a permission config with the write-gate hook.' },
83
+ { id: 'hermes-agent', name: 'Hermes', description: 'Reads AGENTS.md directly — no entry file generated.' },
84
+ ];
85
+ const DEFAULT_HARNESS_IDS = ['claude-code'];
86
+ async function resolveHarnesses(env, flags) {
87
+ if (flags.harness !== undefined) {
88
+ const trimmed = flags.harness.trim();
89
+ if (trimmed === '' || trimmed === 'none')
90
+ return [];
91
+ const ids = trimmed.split(',').map((s) => s.trim()).filter((s) => s.length > 0);
92
+ const known = new Set(SELECTABLE_HARNESSES.map((h) => h.id));
93
+ for (const id of ids) {
94
+ if (!known.has(id))
95
+ throw new UnknownHarnessError(id, [...known]);
96
+ }
97
+ return [...new Set(ids)];
98
+ }
99
+ if (isInteractive(env)) {
100
+ return env.prompter.selectHarnesses({
101
+ message: 'Which agent harnesses should this store target? (their skills directory is bridged to the canonical one)',
102
+ choices: SELECTABLE_HARNESSES,
103
+ defaultIds: DEFAULT_HARNESS_IDS,
104
+ });
105
+ }
106
+ // Non-interactive, nothing specified: the default set immediately — never prompt, never block.
107
+ return [...DEFAULT_HARNESS_IDS];
62
108
  }
63
109
  async function safeCurrentBranch(env, root) {
64
110
  try {
@@ -93,7 +139,7 @@ async function runInitCore(env, flags) {
93
139
  if (existsSync(configPath)) {
94
140
  const config = await readConfig(root); // validates + gates schema_version
95
141
  // Reconciling an existing store is exactly `ctxr update`'s job — one shared implementation.
96
- await reconcileStore(env, root, config);
142
+ const { findings: reconcileFindings } = await reconcileStore(env, root, config);
97
143
  return {
98
144
  data: {
99
145
  root,
@@ -111,11 +157,12 @@ async function runInitCore(env, flags) {
111
157
  },
112
158
  schema_version: config.schema_version,
113
159
  },
114
- findings: [],
160
+ findings: reconcileFindings,
115
161
  };
116
162
  }
117
163
  // --- Resolve taxonomy in memory, no writes yet -------------------------
118
164
  const taxonomy = await resolveTaxonomy(env, flags);
165
+ const harnessIds = await resolveHarnesses(env, flags);
119
166
  // --- Git preflight, still no writes -------------------------------------
120
167
  const toplevel = await findToplevel(env.git, root);
121
168
  const findings = [];
@@ -137,6 +184,12 @@ async function runInitCore(env, flags) {
137
184
  }
138
185
  // Works even pre-commit: git init leaves HEAD pointing at an unborn branch.
139
186
  const defaultBranch = (await safeCurrentBranch(env, root)) ?? 'main';
187
+ // The default forge adapter is untouched by --harness, which selects
188
+ // only harness-generation adapters (vendored-craft-skills spec).
189
+ const resolvedAdapters = [
190
+ ...DEFAULT_ADAPTERS.filter((a) => a.kind !== 'harness-generation'),
191
+ ...harnessIds.map((id) => ({ id, kind: 'harness-generation' })),
192
+ ];
140
193
  const config = {
141
194
  schema_version: SUPPORTED_SCHEMA_VERSION,
142
195
  taxonomy: { profile: taxonomy.profileId, layers: taxonomy.layers },
@@ -145,14 +198,16 @@ async function runInitCore(env, flags) {
145
198
  derived: { paths: [...DEFAULT_DERIVED_PATHS] },
146
199
  retrieval: { exclude_paths: [...DEFAULT_EXCLUDE_PATHS], relations: [...DEFAULT_RELATIONS], graph: { ...DEFAULT_GRAPH_SETTINGS, orphan_exempt_clusters: [] } },
147
200
  git: { default_branch: defaultBranch },
148
- session: { branch_prefix: DEFAULT_SESSION_BRANCH_PREFIX, worktrees_path: DEFAULT_WORKTREES_PATH, workspaces_external: DEFAULT_WORKSPACES_EXTERNAL },
201
+ session: { branch_prefix: DEFAULT_SESSION_BRANCH_PREFIX, worktrees_path: DEFAULT_WORKTREES_PATH },
149
202
  write_lifecycle: { diff_size_ceiling_lines: DEFAULT_DIFF_SIZE_CEILING_LINES, writable_paths: [] },
150
203
  catalog: { path: DEFAULT_CATALOG_PATH, section_max_bytes: DEFAULT_CATALOG_SECTION_MAX_BYTES },
204
+ publish: { path: DEFAULT_PUBLISH_PATH },
205
+ skills: { vendored: [...DEFAULT_VENDORED_SKILLS] },
151
206
  disclosure: { internal_audiences: [...DEFAULT_INTERNAL_AUDIENCES], hard_walls: [...DEFAULT_HARD_WALLS], leak_markers: {} },
152
207
  ingest: { inbox_path: DEFAULT_INBOX_PATH, tracking_params: [...DEFAULT_TRACKING_PARAMS] },
153
- organize: { archive_path: DEFAULT_ARCHIVE_PATH, rollup_stale_days: DEFAULT_ROLLUP_STALE_DAYS, mission_path: DEFAULT_MISSION_PATH },
208
+ organize: { archive_destination: taxonomy.archiveDestination ?? DEFAULT_ARCHIVE_DESTINATION, rollup_stale_days: DEFAULT_ROLLUP_STALE_DAYS, mission_path: DEFAULT_MISSION_PATH },
154
209
  harness: { skills_path: DEFAULT_SKILLS_PATH, guidance_path: DEFAULT_GUIDANCE_PATH },
155
- adapters: [...DEFAULT_ADAPTERS],
210
+ adapters: resolvedAdapters,
156
211
  };
157
212
  // Round-trips through the schema internally; throws before any byte is written if it doesn't.
158
213
  const configText = renderStoreConfig(config);
@@ -162,8 +217,8 @@ async function runInitCore(env, flags) {
162
217
  await upsertFencedRegionInFile(gitignorePath, WORKTREES_GITIGNORE_FENCE, [config.session.worktrees_path]);
163
218
  // Guidance-directory content must be current BEFORE the AGENTS.md sections
164
219
  // that read it (mission, store conventions) are built below.
165
- await syncBaselineConvention(root, config);
166
- const customConventionSeeded = await seedCustomConventionFile(root, config);
220
+ await syncBaselineConventions(root, config);
221
+ const houseConventionsSeeded = await seedHouseConventionsFile(root, config);
167
222
  const missionSeeded = config.organize.mission_path ? await seedMissionDocument(root, config.organize.mission_path) : null;
168
223
  // harness-portability spec "Generated sections render in a fixed order":
169
224
  // called in that order directly — a fresh AGENTS.md has no existing fences
@@ -174,10 +229,13 @@ async function runInitCore(env, flags) {
174
229
  await buildAgentsCaptureSection(root, config);
175
230
  await buildAgentsPlacementSection(root, config);
176
231
  const skillFilesCreated = await syncShippedSkills(root, config);
232
+ const { changed: vendoredSkillFilesCreated, findings: vendoredFindings } = await syncVendoredSkills(root, config, CLI_VERSION);
233
+ findings.push(...vendoredFindings);
234
+ const bridged = await bridgeHarnessSkills(root, config);
177
235
  await buildAgentsConventionsSection(root, config);
178
236
  const guidanceFilesCreated = [
179
- path.join(config.harness.guidance_path, DEFAULT_BASELINE_CONVENTION_FILE_NAME),
180
- ...(customConventionSeeded.created ? [path.join(config.harness.guidance_path, DEFAULT_CUSTOM_CONVENTION_FILE_NAME)] : []),
237
+ path.join(config.harness.guidance_path, DEFAULT_BASELINE_CONVENTIONS_FILE_NAME),
238
+ ...(houseConventionsSeeded.created ? [path.join(config.harness.guidance_path, DEFAULT_HOUSE_CONVENTIONS_FILE_NAME)] : []),
181
239
  ...(missionSeeded ? [missionSeeded] : []),
182
240
  ].map((p) => p.split(path.sep).join('/'));
183
241
  // One directory per configured layer with a .gitkeep — makes Zettelkasten's
@@ -197,12 +255,18 @@ async function runInitCore(env, flags) {
197
255
  const { changed: hookFiles } = await installHooks(root, defaultBranch);
198
256
  await configureHooksPath(env.git, root);
199
257
  const relConfigPath = path.relative(root, configPath);
258
+ // No trailing slash: `git add` refuses a directory pathspec ending in "/"
259
+ // when that path is a symlink ("pathspec is beyond a symbolic link"), which
260
+ // a symlink-mode bridge always is. The bare path stages the link itself.
261
+ const bridgedPaths = bridged.map((r) => r.path.replace(/\/+$/, ''));
200
262
  await addPaths(env.git, root, [
201
263
  relConfigPath,
202
264
  '.gitignore',
203
265
  path.relative(root, agentsMdPath(root)),
204
266
  ...layerGitkeeps,
205
267
  ...skillFilesCreated,
268
+ ...vendoredSkillFilesCreated,
269
+ ...bridgedPaths,
206
270
  ...guidanceFilesCreated,
207
271
  ...hookFiles,
208
272
  ]);
@@ -217,6 +281,8 @@ async function runInitCore(env, flags) {
217
281
  path.relative(root, agentsMdPath(root)),
218
282
  ...layerGitkeeps,
219
283
  ...skillFilesCreated,
284
+ ...vendoredSkillFilesCreated,
285
+ ...bridgedPaths,
220
286
  ...guidanceFilesCreated,
221
287
  ...hookFiles,
222
288
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,yBAAyB,EACzB,oBAAoB,EACpB,iCAAiC,EACjC,oBAAoB,EACpB,uBAAuB,EACvB,sCAAsC,EACtC,mCAAmC,EACnC,qBAAqB,EACrB,qBAAqB,EACrB,+BAA+B,EAC/B,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GAIpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,YAAY,GACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAe,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrH,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,gBAAgB,EAAwB,MAAM,yBAAyB,CAAC;AAElI,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAqB7D,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;AAepF;;;;GAIG;AACH,SAAS,WAAW,CAAC,OAAwB;IAC3C,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,GAAG,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxG,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,KAAgB;IAC1D,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,8BAA8B,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAY,CAAC;QACvC,MAAM,MAAM,GAAG,wBAAwB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACjD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ;gBACtC,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC,CAAC;YACJ,MAAM,IAAI,wBAAwB,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7D,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,2BAA2B,CACnC,KAAK,CAAC,OAAO,EACb,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAClC,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;YAClD,OAAO,EAAE,2CAA2C;YACpD,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9F,SAAS,EAAE,kBAAkB;SAC9B,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,cAAc,EAAE,CAAC;QAC5D,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,oFAAoF;IACpF,OAAO,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,oBAAoB,GAAiE;IACzF,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,6FAA6F,EAAE;IACtJ,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAE;CAC3G,CAAC;AAEF,MAAM,mBAAmB,GAAsB,CAAC,aAAa,CAAC,CAAC;AAE/D,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,KAAgB;IAC3D,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,MAAM;YAAE,OAAO,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,MAAM,IAAI,mBAAmB,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;YAClC,OAAO,EAAE,0GAA0G;YACnH,OAAO,EAAE,oBAAoB;YAC7B,UAAU,EAAE,mBAAmB;SAChC,CAAC,CAAC;IACL,CAAC;IAED,+FAA+F;IAC/F,OAAO,CAAC,GAAG,mBAAmB,CAAC,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,IAAY;IACxD,IAAI,CAAC;QACH,OAAO,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,WAAmB;IAClE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,eAAe,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAAC;IACvE,OAAO,WAAW,CAAC;AACrB,CAAC;AAOD,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,KAAgB;IACtD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAEvC,yEAAyE;IACzE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,mCAAmC;QAC1E,4FAA4F;QAC5F,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAChF,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI;gBACJ,mBAAmB,EAAE,IAAI;gBACzB,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,EAAE;gBACb,GAAG,EAAE;oBACH,kBAAkB,EAAE,KAAK;oBACzB,MAAM,EAAE,IAAI;oBACZ,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc;iBAC1C;gBACD,QAAQ,EAAE;oBACR,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO;oBAC9E,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;iBAC/B;gBACD,cAAc,EAAE,MAAM,CAAC,cAAc;aACtC;YACD,QAAQ,EAAE,iBAAiB;SAC5B,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAEtD,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,yBAAyB;YAC/B,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,IAAI,IAAI,qDAAqD,QAAQ,CAAC,QAAQ,IAAI;YAC3F,OAAO,EAAE,QAAQ,CAAC,QAAQ;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,uBAAuB,EAAE,CAAC;IACtC,CAAC;IAED,2EAA2E;IAC3E,MAAM,uBAAuB,GAAG,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC;IAC7D,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC7B,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,4EAA4E;IAC5E,MAAM,aAAa,GAAG,CAAC,MAAM,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC;IAErE,qEAAqE;IACrE,iEAAiE;IACjE,MAAM,gBAAgB,GAAyB;QAC7C,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC;QAClE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAsB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;KACpF,CAAC;IAEF,MAAM,MAAM,GAAgB;QAC1B,cAAc,EAAE,wBAAwB;QACxC,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;QAClE,MAAM,EAAE,EAAE,UAAU,EAAE,4BAA4B,EAAE;QACpD,UAAU,EAAE,EAAE,eAAe,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACjG,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,qBAAqB,CAAC,EAAE;QAC9C,SAAS,EAAE,EAAE,aAAa,EAAE,CAAC,GAAG,qBAAqB,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,sBAAsB,EAAE,sBAAsB,EAAE,EAAE,EAAE,EAAE;QAC7J,GAAG,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE;QACtC,OAAO,EAAE,EAAE,aAAa,EAAE,6BAA6B,EAAE,cAAc,EAAE,sBAAsB,EAAE;QACjG,eAAe,EAAE,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,cAAc,EAAE,EAAE,EAAE;QACjG,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,iCAAiC,EAAE;QAC7F,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE;QACvC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,uBAAuB,CAAC,EAAE;QAClD,UAAU,EAAE,EAAE,kBAAkB,EAAE,CAAC,GAAG,0BAA0B,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,kBAAkB,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;QAC1H,MAAM,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC,GAAG,uBAAuB,CAAC,EAAE;QACzF,QAAQ,EAAE,EAAE,mBAAmB,EAAE,QAAQ,CAAC,kBAAkB,IAAI,2BAA2B,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,YAAY,EAAE,oBAAoB,EAAE;QAC/K,OAAO,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,qBAAqB,EAAE;QACnF,QAAQ,EAAE,gBAAgB;KAC3B,CAAC;IACF,8FAA8F;IAC9F,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE7C,MAAM,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,wBAAwB,CAAC,aAAa,EAAE,uBAAuB,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7F,MAAM,wBAAwB,CAAC,aAAa,EAAE,yBAAyB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAE1G,2EAA2E;IAC3E,6DAA6D;IAC7D,MAAM,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,sBAAsB,GAAG,MAAM,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE1H,yEAAyE;IACzE,2EAA2E;IAC3E,uEAAuE;IACvE,MAAM,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,4BAA4B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC/H,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,6BAA6B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAElD,MAAM,oBAAoB,GAAG;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,sCAAsC,CAAC;QAC/E,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzH,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAE1C,4EAA4E;IAC5E,wEAAwE;IACxE,uEAAuE;IACvE,iCAAiC;IACjC,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC/C,MAAM,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACvC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,yEAAyE;IACzE,0DAA0D;IAC1D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACvE,MAAM,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAExC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtD,0EAA0E;IAC1E,4EAA4E;IAC5E,yEAAyE;IACzE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE;QAC5B,aAAa;QACb,YAAY;QACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QACvC,GAAG,aAAa;QAChB,GAAG,iBAAiB;QACpB,GAAG,yBAAyB;QAC5B,GAAG,YAAY;QACf,GAAG,oBAAoB;QACvB,GAAG,SAAS;KACb,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,oCAAoC,CAAC,CAAC;IAEnH,OAAO;QACL,IAAI,EAAE;YACJ,IAAI;YACJ,mBAAmB,EAAE,KAAK;YAC1B,OAAO,EAAE;gBACP,aAAa;gBACb,YAAY;gBACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;gBACvC,GAAG,aAAa;gBAChB,GAAG,iBAAiB;gBACpB,GAAG,yBAAyB;gBAC5B,GAAG,YAAY;gBACf,GAAG,oBAAoB;gBACvB,GAAG,SAAS;aACb;YACD,SAAS,EAAE,EAAE;YACb,GAAG,EAAE,EAAE,kBAAkB,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE;YACvG,QAAQ,EAAE;gBACR,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO;gBAC9E,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;aAC/B;YACD,cAAc,EAAE,MAAM,CAAC,cAAc;SACtC;QACD,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,KAAgB;IACzD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB;YAC3C,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,oCAAoC;YAC1D,CAAC,CAAC,oCAAoC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI;QAC5D,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;QAC3B,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc;KAC1C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
+ import type { Store } from '../core/store.js';
3
+ export declare const requires: CommandRequires;
4
+ export interface PublishCheckFlags {
5
+ path: string;
6
+ }
7
+ export interface PublishCheckFailure {
8
+ check: string;
9
+ message: string;
10
+ }
11
+ export interface PublishCheckData {
12
+ path: string;
13
+ passed: boolean;
14
+ failures: PublishCheckFailure[];
15
+ }
16
+ /**
17
+ * publish spec: the mechanized half of the page-checklist — every check
18
+ * answerable from the file and its sibling README alone, never a caller-
19
+ * supplied assertion (the source convention's `--expect NEEDLE=COUNT` mode
20
+ * is deliberately not carried forward; see design.md).
21
+ */
22
+ export declare function execute(store: Store, flags: PublishCheckFlags): Promise<CommandOutcome<PublishCheckData>>;
23
+ //# sourceMappingURL=publish-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-check.d.ts","sourceRoot":"","sources":["../../src/commands/publish-check.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAK1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AA8DD;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAgD/G"}
@@ -0,0 +1,116 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { readFile } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { PublishPageNotFoundError } from '../core/errors.js';
5
+ import { ExitCode } from '../core/exit-codes.js';
6
+ import { parseNoteText } from '../core/notes/parse.js';
7
+ import { checkScriptSyntax } from '../core/publish/script-check.js';
8
+ export const requires = { store: 'required' };
9
+ /** publish spec: the fixed tag list a tag-balance pass counts, matching the source convention's checker. */
10
+ const BALANCE_TAGS = ['section', 'div', 'h1', 'h2', 'h3', 'h4', 'article', 'header', 'main', 'nav', 'aside', 'footer', 'ul', 'ol', 'li', 'p', 'table', 'tr', 'td', 'th'];
11
+ function stripNonStructural(html) {
12
+ return html.replace(/<!--[\s\S]*?-->/g, '').replace(/<script[\s\S]*?<\/script>/gi, '').replace(/<style[\s\S]*?<\/style>/gi, '');
13
+ }
14
+ function checkNoExternalReferences(html) {
15
+ const match = /(?:src|href)\s*=\s*["']https?:\/\/[^"']*["']/i.exec(html);
16
+ if (!match)
17
+ return [];
18
+ return [{ check: 'no-external-references', message: `references an external network resource: ${match[0]}` }];
19
+ }
20
+ function checkViewportMeta(html) {
21
+ if (/<meta[^>]*name\s*=\s*["']viewport["']/i.test(html))
22
+ return [];
23
+ return [{ check: 'viewport-meta', message: 'no <meta name="viewport"> tag' }];
24
+ }
25
+ function checkPrintRule(html) {
26
+ if (/@media\s+print/i.test(html))
27
+ return [];
28
+ return [{ check: 'print-rule', message: 'no @media print rule' }];
29
+ }
30
+ function checkProvenanceLine(html) {
31
+ const hasDate = /\d{4}-\d{2}-\d{2}/.test(html);
32
+ const hasReadmeLink = /href\s*=\s*["'][^"']*readme[^"']*["']/i.test(html);
33
+ if (hasDate && hasReadmeLink)
34
+ return [];
35
+ return [{ check: 'provenance-line', message: 'no provenance line pairing a date with a link to the sibling README' }];
36
+ }
37
+ function checkTagBalance(html) {
38
+ const stripped = stripNonStructural(html);
39
+ const failures = [];
40
+ for (const tag of BALANCE_TAGS) {
41
+ const open = (stripped.match(new RegExp(`<${tag}(?:\\s[^>]*)?>`, 'gi')) ?? []).length;
42
+ const close = (stripped.match(new RegExp(`</${tag}\\s*>`, 'gi')) ?? []).length;
43
+ if (open !== close)
44
+ failures.push({ check: 'tag-balance', message: `<${tag}>: open=${open} close=${close}` });
45
+ }
46
+ return failures;
47
+ }
48
+ function extractInlineScripts(html) {
49
+ const blocks = [];
50
+ const re = /<script([^>]*)>([\s\S]*?)<\/script>/gi;
51
+ let match;
52
+ while ((match = re.exec(html))) {
53
+ const attrs = match[1] ?? '';
54
+ if (/\bsrc\s*=/i.test(attrs))
55
+ continue; // external — already caught by checkNoExternalReferences if http(s)
56
+ const body = (match[2] ?? '').trim();
57
+ if (body.length > 0)
58
+ blocks.push(body);
59
+ }
60
+ return blocks;
61
+ }
62
+ async function checkInlineScriptSyntax(html) {
63
+ const scripts = extractInlineScripts(html);
64
+ const errors = await checkScriptSyntax(scripts);
65
+ return errors.map((e) => ({ check: 'script-syntax', message: `script block #${e.index}: ${e.message}` }));
66
+ }
67
+ /**
68
+ * publish spec: the mechanized half of the page-checklist — every check
69
+ * answerable from the file and its sibling README alone, never a caller-
70
+ * supplied assertion (the source convention's `--expect NEEDLE=COUNT` mode
71
+ * is deliberately not carried forward; see design.md).
72
+ */
73
+ export async function execute(store, flags) {
74
+ const absolutePath = path.isAbsolute(flags.path) ? flags.path : path.resolve(store.root, flags.path);
75
+ const relativePath = path.relative(store.root, absolutePath).split(path.sep).join('/');
76
+ if (!existsSync(absolutePath)) {
77
+ throw new PublishPageNotFoundError(relativePath);
78
+ }
79
+ const html = await readFile(absolutePath, 'utf8');
80
+ const pageDir = path.dirname(absolutePath);
81
+ const readmePath = path.join(pageDir, 'README.md');
82
+ const readmeRelativePath = path.relative(store.root, readmePath).split(path.sep).join('/');
83
+ const failures = [
84
+ ...checkNoExternalReferences(html),
85
+ ...checkViewportMeta(html),
86
+ ...checkPrintRule(html),
87
+ ...checkProvenanceLine(html),
88
+ ...checkTagBalance(html),
89
+ ];
90
+ if (!existsSync(readmePath)) {
91
+ failures.push({ check: 'sibling-readme', message: `no sibling README at "${readmeRelativePath}"` });
92
+ }
93
+ else {
94
+ const readmeRaw = await readFile(readmePath, 'utf8');
95
+ const readmeNote = parseNoteText(readmeRaw, readmeRelativePath);
96
+ const visibilityKey = store.config.fields.visibility;
97
+ if (readmeNote.frontmatter?.[visibilityKey] !== undefined) {
98
+ failures.push({ check: 'readme-frontmatter', message: `README declares the visibility field ("${visibilityKey}") — a published page is never a note` });
99
+ }
100
+ if (readmeNote.frontmatter?.kind !== undefined) {
101
+ failures.push({ check: 'readme-frontmatter', message: 'README declares a "kind" field — a page\'s kind is the folder name alone' });
102
+ }
103
+ }
104
+ failures.push(...(await checkInlineScriptSyntax(html)));
105
+ return {
106
+ exitCode: failures.length === 0 ? ExitCode.Ok : ExitCode.CheckFailed,
107
+ data: { path: relativePath, passed: failures.length === 0, failures },
108
+ findings: [],
109
+ humanSummary: failures.length === 0
110
+ ? `${relativePath}: all checks passed.`
111
+ : `${relativePath}: ${failures.length} failing check(s): ${failures.map((f) => f.check).join(', ')}.`,
112
+ storeRoot: store.root,
113
+ schemaVersion: store.config.schema_version,
114
+ };
115
+ }
116
+ //# sourceMappingURL=publish-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-check.js","sourceRoot":"","sources":["../../src/commands/publish-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
+ import { type DisclosureRung, type DisclosureVerdict } from '../core/disclosure/model.js';
3
+ import { type LeakFinding } from '../core/disclosure/leak-scan.js';
4
+ import type { RunEnv } from '../core/env.js';
5
+ import type { Store } from '../core/store.js';
6
+ export declare const requires: CommandRequires;
7
+ export interface PublishGatherFlags {
8
+ under?: string;
9
+ note?: string;
10
+ entity?: string;
11
+ as?: string;
12
+ audience?: string;
13
+ }
14
+ export interface PublishGatherEntry {
15
+ path: string;
16
+ verdict: DisclosureVerdict;
17
+ rung: DisclosureRung;
18
+ leaks: LeakFinding[];
19
+ }
20
+ export interface PublishGatherData {
21
+ selector: 'under' | 'note' | 'entity' | 'as';
22
+ subject: string;
23
+ audience: string;
24
+ count: number;
25
+ notes: PublishGatherEntry[];
26
+ verdict: DisclosureVerdict;
27
+ }
28
+ /**
29
+ * publish spec: agent-facing enumeration-and-gate only, matching rollup
30
+ * gather's shape — resolves a subject to its note set (one of four
31
+ * selectors), evaluates every note through the same tri-state disclosure
32
+ * evaluation `ctxr check <note> --audience <audience>` uses, and exits with
33
+ * the aggregate (most-restrictive-member) verdict. It renders nothing;
34
+ * building the page is the agent's and its craft skill's work.
35
+ */
36
+ export declare function execute(env: RunEnv, store: Store, flags: PublishGatherFlags): Promise<CommandOutcome<PublishGatherData>>;
37
+ //# sourceMappingURL=publish-gather.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-gather.d.ts","sourceRoot":"","sources":["../../src/commands/publish-gather.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAuD,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC/I,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAO7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAyDD;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAoB9H"}
@@ -0,0 +1,92 @@
1
+ import { existsSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { evaluateDisclosure, VERDICT_EXIT_CODE, worstVerdict } from '../core/disclosure/model.js';
4
+ import { scanNoteForLeaks } from '../core/disclosure/leak-scan.js';
5
+ import { NoteNotFoundError, PublishAudienceRequiredError, PublishSelectorConflictError, PublishSelectorRequiredError } from '../core/errors.js';
6
+ import { ExitCode } from '../core/exit-codes.js';
7
+ import { extractLinkTargets } from '../core/graph/model.js';
8
+ import { listNotes } from '../core/notes/list.js';
9
+ import { parseNote } from '../core/notes/parse.js';
10
+ import { canSee, resolveVisibility } from '../core/notes/visibility.js';
11
+ export const requires = { store: 'required' };
12
+ function toStoreRelativePath(env, store, givenPath) {
13
+ const absolute = path.isAbsolute(givenPath) ? givenPath : path.resolve(env.cwd, givenPath);
14
+ return path.relative(store.root, absolute).split(path.sep).join('/');
15
+ }
16
+ /** publish spec: --entity resolves to the same backlink enumeration `ctxr rollup gather` uses. */
17
+ async function resolveEntityNotes(env, store, entity) {
18
+ const relativePath = toStoreRelativePath(env, store, entity);
19
+ if (!existsSync(path.join(store.root, relativePath)))
20
+ throw new NoteNotFoundError(relativePath);
21
+ const stem = path.basename(relativePath, '.md');
22
+ const notes = await listNotes(store.root, store.config);
23
+ return notes.filter((n) => n.path !== relativePath && extractLinkTargets(n.body).includes(stem));
24
+ }
25
+ /** publish spec: --as resolves to every note the named context's configured visible-values list admits. */
26
+ async function resolveContextNotes(store, context) {
27
+ const notes = await listNotes(store.root, store.config);
28
+ return notes.filter((note) => canSee(store.config, context, resolveVisibility(store.config, note).value));
29
+ }
30
+ async function resolveNoteSet(env, store, flags) {
31
+ const given = ['under', 'note', 'entity', 'as'].filter((key) => flags[key] !== undefined);
32
+ if (given.length === 0)
33
+ throw new PublishSelectorRequiredError();
34
+ if (given.length > 1)
35
+ throw new PublishSelectorConflictError(given.map((key) => `--${key}`));
36
+ const selector = given[0];
37
+ switch (selector) {
38
+ case 'under': {
39
+ const notes = await listNotes(store.root, store.config, { underPrefix: flags.under });
40
+ return { selector, subject: flags.under, notes };
41
+ }
42
+ case 'note': {
43
+ const relativePath = toStoreRelativePath(env, store, flags.note);
44
+ const absolutePath = path.join(store.root, relativePath);
45
+ let note;
46
+ try {
47
+ note = await parseNote(absolutePath, relativePath);
48
+ }
49
+ catch (err) {
50
+ if (err.code === 'ENOENT')
51
+ throw new NoteNotFoundError(relativePath);
52
+ throw err;
53
+ }
54
+ return { selector, subject: relativePath, notes: [note] };
55
+ }
56
+ case 'entity': {
57
+ const notes = await resolveEntityNotes(env, store, flags.entity);
58
+ return { selector, subject: flags.entity, notes };
59
+ }
60
+ case 'as': {
61
+ const notes = await resolveContextNotes(store, flags.as);
62
+ return { selector, subject: flags.as, notes };
63
+ }
64
+ }
65
+ }
66
+ /**
67
+ * publish spec: agent-facing enumeration-and-gate only, matching rollup
68
+ * gather's shape — resolves a subject to its note set (one of four
69
+ * selectors), evaluates every note through the same tri-state disclosure
70
+ * evaluation `ctxr check <note> --audience <audience>` uses, and exits with
71
+ * the aggregate (most-restrictive-member) verdict. It renders nothing;
72
+ * building the page is the agent's and its craft skill's work.
73
+ */
74
+ export async function execute(env, store, flags) {
75
+ if (!flags.audience)
76
+ throw new PublishAudienceRequiredError();
77
+ const { selector, subject, notes } = await resolveNoteSet(env, store, flags);
78
+ const entries = notes.map((note) => {
79
+ const { verdict, rung } = evaluateDisclosure(store.config, note, flags.audience);
80
+ return { path: note.path, verdict, rung, leaks: scanNoteForLeaks(store.config, note) };
81
+ });
82
+ const verdict = worstVerdict(entries.map((e) => e.verdict));
83
+ return {
84
+ exitCode: VERDICT_EXIT_CODE[verdict],
85
+ data: { selector, subject, audience: flags.audience, count: entries.length, notes: entries, verdict },
86
+ findings: [],
87
+ humanSummary: `${entries.length} note(s) resolved for audience "${flags.audience}": aggregate ${verdict.toUpperCase()}`,
88
+ storeRoot: store.root,
89
+ schemaVersion: store.config.schema_version,
90
+ };
91
+ }
92
+ //# sourceMappingURL=publish-gather.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-gather.js","sourceRoot":"","sources":["../../src/commands/publish-gather.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
+ import type { Store } from '../core/store.js';
3
+ export declare const requires: CommandRequires;
4
+ export interface PublishNewFlags {
5
+ slug: string;
6
+ }
7
+ export interface PublishNewData {
8
+ slug: string;
9
+ path: string;
10
+ }
11
+ /**
12
+ * publish spec: fixes a page's identity once. Refuses a slug that collides
13
+ * with the reserved dated-snapshot naming pattern, and never overwrites an
14
+ * existing page folder — the caller updates in place by editing the
15
+ * existing files directly, never by re-running this command.
16
+ */
17
+ export declare function execute(store: Store, flags: PublishNewFlags): Promise<CommandOutcome<PublishNewData>>;
18
+ //# sourceMappingURL=publish-new.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-new.d.ts","sourceRoot":"","sources":["../../src/commands/publish-new.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAuDD;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAwB3G"}