@encore-os/eos-spec 0.5.1 → 0.7.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.
@@ -0,0 +1,20 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * `eos-spec build-embeddings` — build the committed semantic-precedent embedding
4
+ * index from the current specs/spec-index.json.
5
+ *
6
+ * Reads the generated (gitignored) spec-index.json, embeds every non-archived spec,
7
+ * and writes:
8
+ * - `<dataDir>/spec-embeddings.bin` (row-major Float32 matrix)
9
+ * - `<dataDir>/spec-embeddings.manifest.json` (dims, model, instruction, count, surfaceHash)
10
+ * - `<dataDir>/recall-query-vectors.json` (recall benchmark query vectors)
11
+ *
12
+ * Requires a running Ollama instance unless an `embed` function is injected
13
+ * (used in tests and custom callers). The data dir defaults to what is configured
14
+ * in specs/config.yaml (`embeddings.data_dir`), falling back to tools/eos-spec/data.
15
+ *
16
+ * Generate specs/spec-index.json first via your repo's spec-index step.
17
+ */
18
+ export declare function registerBuildEmbeddings(program: Command,
19
+ /** Injectable embedder — defaults to ollamaEmbed. Receives raw texts. */
20
+ embed?: (texts: string[]) => Promise<number[][]>): void;
@@ -0,0 +1,69 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { buildSpecEmbeddings } from '../lib/build-embeddings.js';
4
+ import { resolveEmbeddingsPaths } from '../lib/embeddings-source.js';
5
+ import { ErrorCode, emit, getGlobalOptions } from '../lib/output.js';
6
+ import { getRepoRoot } from '../lib/repo.js';
7
+ /**
8
+ * `eos-spec build-embeddings` — build the committed semantic-precedent embedding
9
+ * index from the current specs/spec-index.json.
10
+ *
11
+ * Reads the generated (gitignored) spec-index.json, embeds every non-archived spec,
12
+ * and writes:
13
+ * - `<dataDir>/spec-embeddings.bin` (row-major Float32 matrix)
14
+ * - `<dataDir>/spec-embeddings.manifest.json` (dims, model, instruction, count, surfaceHash)
15
+ * - `<dataDir>/recall-query-vectors.json` (recall benchmark query vectors)
16
+ *
17
+ * Requires a running Ollama instance unless an `embed` function is injected
18
+ * (used in tests and custom callers). The data dir defaults to what is configured
19
+ * in specs/config.yaml (`embeddings.data_dir`), falling back to tools/eos-spec/data.
20
+ *
21
+ * Generate specs/spec-index.json first via your repo's spec-index step.
22
+ */
23
+ export function registerBuildEmbeddings(program,
24
+ /** Injectable embedder — defaults to ollamaEmbed. Receives raw texts. */
25
+ embed) {
26
+ program
27
+ .command('build-embeddings')
28
+ .description('Build the committed semantic-precedent embedding index from specs/spec-index.json. Writes spec-embeddings.bin, spec-embeddings.manifest.json, and recall-query-vectors.json to the configured data dir. Requires Ollama unless --embed is injected. Generate specs/spec-index.json first.')
29
+ .option('--data-dir <path>', 'Override the embeddings data dir (default: embeddings.data_dir from specs/config.yaml, or tools/eos-spec/data)')
30
+ .action(async (options, cmd) => {
31
+ const global = getGlobalOptions(cmd);
32
+ const repoRoot = getRepoRoot(global.repoRoot);
33
+ const { specIndexPath, dataDir: configDataDir } = resolveEmbeddingsPaths(repoRoot, global.config);
34
+ const dataDir = options.dataDir ?? configDataDir;
35
+ const indexPath = join(repoRoot, specIndexPath);
36
+ if (!existsSync(indexPath)) {
37
+ emit(global, {
38
+ ok: false,
39
+ error: {
40
+ code: ErrorCode.IO_ERROR,
41
+ message: `build-embeddings: spec-index.json not found at ${indexPath} — generate the spec index first`,
42
+ },
43
+ text: `build-embeddings: spec-index.json not found at ${indexPath}.\nGenerate it first (your repo's spec-index step).`,
44
+ });
45
+ }
46
+ let raw;
47
+ try {
48
+ raw = JSON.parse(readFileSync(indexPath, 'utf8'));
49
+ }
50
+ catch (err) {
51
+ emit(global, {
52
+ ok: false,
53
+ error: {
54
+ code: ErrorCode.IO_ERROR,
55
+ message: `build-embeddings: failed to parse spec-index.json: ${err instanceof Error ? err.message : String(err)}`,
56
+ },
57
+ text: 'build-embeddings: failed to parse spec-index.json.',
58
+ });
59
+ }
60
+ const specs = Array.isArray(raw?.specs) ? raw.specs : [];
61
+ const result = await buildSpecEmbeddings({ repoRoot, specIndex: specs, dataDir, embed });
62
+ emit(global, {
63
+ ok: true,
64
+ data: { count: result.count, surfaceHash: result.surfaceHash, manifestPath: result.manifestPath },
65
+ text: `build-embeddings: built ${result.count} vectors — ${result.surfaceHash.slice(0, 12)}… → ${result.manifestPath}`,
66
+ });
67
+ });
68
+ }
69
+ //# sourceMappingURL=build-embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-embeddings.js","sourceRoot":"","sources":["../../src/commands/build-embeddings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerProfile(program: Command): void;
@@ -0,0 +1,33 @@
1
+ import { loadConfig } from '../lib/config.js';
2
+ import { emit, getGlobalOptions } from '../lib/output.js';
3
+ import { resolvePipelineSchema } from '../lib/pipeline-config.js';
4
+ import { buildRepoProfile } from '../lib/profile.js';
5
+ import { getRepoRoot } from '../lib/repo.js';
6
+ import { ENGINE_VERSION } from '../lib/version.js';
7
+ export function registerProfile(program) {
8
+ program
9
+ .command('profile')
10
+ .description('Emit the lean, stable repo-profile contract (specs root, cores, spec-id grammar, resolved pipeline schema, paths, commands) so a repo-agnostic consumer can drive this repo. Supports --json on the subcommand.')
11
+ .option('--json', 'Output JSON (also accepted as root-level flag)', false)
12
+ .action(async (options, cmd) => {
13
+ const global = getGlobalOptions(cmd);
14
+ if (options.json)
15
+ global.json = true;
16
+ const repoRoot = getRepoRoot(global.repoRoot);
17
+ const config = loadConfig(repoRoot, global.config);
18
+ const schema = resolvePipelineSchema(config);
19
+ const profile = buildRepoProfile(config, schema, ENGINE_VERSION);
20
+ emit(global, {
21
+ ok: true,
22
+ data: profile,
23
+ text: [
24
+ `eos-spec profile (schemaVersion ${profile.schemaVersion})`,
25
+ ` engine: ${profile.engine.package}@${profile.engine.version}`,
26
+ ` specsRoot: ${profile.specsRoot} (perCoreSubdir=${profile.perCoreSubdir})`,
27
+ ` cores: ${profile.cores.map((c) => `${c.id}${c.regulated ? '*' : ''}`).join(', ')}`,
28
+ ` pipeline: ${profile.pipeline.statusOrder.join(' → ')}`,
29
+ ].join('\n'),
30
+ });
31
+ });
32
+ }
33
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/commands/profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CACV,iNAAiN,CAClN;SACA,MAAM,CAAC,QAAQ,EAAE,gDAAgD,EAAE,KAAK,CAAC;SACzE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,OAAO,CAAC,IAAI;YAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,EAAE;YACX,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,OAAO;YACb,IAAI,EAAE;gBACJ,mCAAmC,OAAO,CAAC,aAAa,GAAG;gBAC3D,gBAAgB,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;gBAClE,gBAAgB,OAAO,CAAC,SAAS,mBAAmB,OAAO,CAAC,aAAa,GAAG;gBAC5E,gBAAgB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACzF,gBAAgB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;aAC3D,CAAC,IAAI,CAAC,IAAI,CAAC;SACb,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -5,6 +5,21 @@ export type ValidateIssue = {
5
5
  rule: string;
6
6
  message: string;
7
7
  };
8
+ export type TemplateValidatorDecision = {
9
+ run: true;
10
+ } | {
11
+ run: false;
12
+ reason: 'flag-skip' | 'absent';
13
+ };
14
+ /** Decide whether to invoke the consumer-local template-structure validator.
15
+ * Skips when `--no-templates` is passed (commander maps it to options.templates ===
16
+ * false) OR when scripts/audit/validate-specs-templates.ts is absent (builder has
17
+ * none) — so a repo without the validator passes `validate` cleanly instead of
18
+ * pushing a spurious `templates` issue. The flag is the explicit override for a
19
+ * repo that HAS the script but wants to skip it. */
20
+ export declare function templateValidatorDecision(repoRoot: string, options: {
21
+ templates?: boolean;
22
+ }): TemplateValidatorDecision;
8
23
  /**
9
24
  * Group an already-listed corpus by upper-cased spec id. Built once per run so
10
25
  * per-spec validation is a Map lookup instead of the old existsSync probe on an
@@ -1,7 +1,23 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
1
3
  import { runScript } from '../lib/exec.js';
2
4
  import { ErrorCode, emit, emitContinuing, getGlobalOptions } from '../lib/output.js';
3
5
  import { getRepoRoot } from '../lib/repo.js';
4
6
  import { findSpec, listSpecs } from '../lib/specs.js';
7
+ /** Decide whether to invoke the consumer-local template-structure validator.
8
+ * Skips when `--no-templates` is passed (commander maps it to options.templates ===
9
+ * false) OR when scripts/audit/validate-specs-templates.ts is absent (builder has
10
+ * none) — so a repo without the validator passes `validate` cleanly instead of
11
+ * pushing a spurious `templates` issue. The flag is the explicit override for a
12
+ * repo that HAS the script but wants to skip it. */
13
+ export function templateValidatorDecision(repoRoot, options) {
14
+ if (options.templates === false)
15
+ return { run: false, reason: 'flag-skip' };
16
+ if (!existsSync(join(repoRoot, 'scripts/audit/validate-specs-templates.ts'))) {
17
+ return { run: false, reason: 'absent' };
18
+ }
19
+ return { run: true };
20
+ }
5
21
  /**
6
22
  * Group an already-listed corpus by upper-cased spec id. Built once per run so
7
23
  * per-spec validation is a Map lookup instead of the old existsSync probe on an
@@ -33,6 +49,7 @@ export function registerValidate(program) {
33
49
  .description('Validate specs, plans, and tasks. Wraps the validate-specs-templates audit.')
34
50
  .option('--core <core>', 'Limit to one core (pf|cl|pm|hr|fa|...)')
35
51
  .option('--spec <id>', 'Limit to one spec id (e.g. PF-37)')
52
+ .option('--no-templates', 'Skip the consumer-local template-structure validation')
36
53
  .action(async (options, cmd) => {
37
54
  const global = getGlobalOptions(cmd);
38
55
  const repoRoot = getRepoRoot(global.repoRoot);
@@ -62,15 +79,25 @@ export function registerValidate(program) {
62
79
  for (const s of specs) {
63
80
  allIssues.push(...validateSpecFromIndex(s.id, index));
64
81
  }
65
- // Run the repo-wide template-structure validator
66
- emitContinuing(global, 'Running scripts/audit/validate-specs-templates.ts ...');
67
- const tplResult = runScript(['npx', 'tsx', 'scripts/audit/validate-specs-templates.ts'], repoRoot);
68
- if (tplResult.exitCode !== 0) {
69
- allIssues.push({
70
- file: 'scripts/audit/validate-specs-templates.ts',
71
- rule: 'templates',
72
- message: tplResult.stdout || tplResult.stderr,
73
- });
82
+ // Run the repo-wide template-structure validator, gated by --no-templates and a
83
+ // root-cause existence guard (a repo without the script is not a `templates` issue).
84
+ const tplDecision = templateValidatorDecision(repoRoot, options);
85
+ if (tplDecision.run) {
86
+ emitContinuing(global, 'Running scripts/audit/validate-specs-templates.ts ...');
87
+ const tplResult = runScript(['npx', 'tsx', 'scripts/audit/validate-specs-templates.ts'], repoRoot);
88
+ if (tplResult.exitCode !== 0) {
89
+ allIssues.push({
90
+ file: 'scripts/audit/validate-specs-templates.ts',
91
+ rule: 'templates',
92
+ message: tplResult.stdout || tplResult.stderr,
93
+ });
94
+ }
95
+ }
96
+ else if (tplDecision.reason === 'absent') {
97
+ emitContinuing(global, 'Skipping template validation: scripts/audit/validate-specs-templates.ts not present.');
98
+ }
99
+ else {
100
+ emitContinuing(global, 'Skipping template validation (--no-templates).');
74
101
  }
75
102
  const exitCode = allIssues.length === 0 ? 0 : 1;
76
103
  emit(global, {
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `@encore-os/eos-spec/embeddings` — the semantic/recall engine surface.
3
+ * Node/fs-bound (Ollama, vector files); NOT client-safe — keep it off `/pure`.
4
+ * Consumers (encoreos build-embeddings + recall ratchet + skill-coverage --suggest)
5
+ * import from here instead of vendoring the engine.
6
+ */
7
+ export * from './lib/embedding-store.js';
8
+ export * from './lib/ollama-embed.js';
9
+ export * from './lib/semantic-search.js';
10
+ export * from './lib/precedent-search.js';
11
+ export * from './lib/embeddings-source.js';
12
+ export * from './lib/recall-cases.js';
13
+ export * from './lib/build-embeddings.js';
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `@encore-os/eos-spec/embeddings` — the semantic/recall engine surface.
3
+ * Node/fs-bound (Ollama, vector files); NOT client-safe — keep it off `/pure`.
4
+ * Consumers (encoreos build-embeddings + recall ratchet + skill-coverage --suggest)
5
+ * import from here instead of vendoring the engine.
6
+ */
7
+ export * from './lib/embedding-store.js';
8
+ export * from './lib/ollama-embed.js';
9
+ export * from './lib/semantic-search.js';
10
+ export * from './lib/precedent-search.js';
11
+ export * from './lib/embeddings-source.js';
12
+ export * from './lib/recall-cases.js';
13
+ export * from './lib/build-embeddings.js';
14
+ //# sourceMappingURL=embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../src/embeddings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -9,6 +9,7 @@ export type { NextAction } from './lib/next-action.js';
9
9
  export { getRepoRoot, coresList } from './lib/repo.js';
10
10
  export { buildScorecardForCore } from './lib/scorecard-run.js';
11
11
  export { scanVerifies } from './lib/verifies-scan.js';
12
+ export { deriveCodeEvidence } from './lib/code-evidence.js';
12
13
  export { computeStage, PIPELINE, buildPipeline, stageApplies, isComplianceGated, isSupersededGate, SUPERSEDE_SOFT_GATES, rank, type ActorType, type Transition, } from './lib/pipeline-map.js';
13
14
  export { isCompleteStatus, collectSpecIds } from './lib/blockers.js';
14
15
  export { uiEvidenceGate } from './lib/completion-gate.js';
package/dist/index.js CHANGED
@@ -12,6 +12,7 @@ import { registerConformance } from './commands/conformance.js';
12
12
  import { registerCreate } from './commands/create.js';
13
13
  import { registerDeferred } from './commands/deferred.js';
14
14
  import { registerDelta } from './commands/delta.js';
15
+ import { registerBuildEmbeddings } from './commands/build-embeddings.js';
15
16
  import { registerFreshness } from './commands/freshness.js';
16
17
  import { registerFunnel } from './commands/funnel.js';
17
18
  import { registerGenTests } from './commands/gen-tests.js';
@@ -20,6 +21,7 @@ import { registerList } from './commands/list.js';
20
21
  import { registerMetrics } from './commands/metrics.js';
21
22
  import { registerNext } from './commands/next.js';
22
23
  import { registerPrecedent } from './commands/precedent.js';
24
+ import { registerProfile } from './commands/profile.js';
23
25
  import { registerReady } from './commands/ready.js';
24
26
  import { registerReconcile } from './commands/reconcile.js';
25
27
  import { registerReadinessRollup } from './commands/rollup.js';
@@ -46,6 +48,7 @@ export { recommendAction } from './commands/next.js';
46
48
  export { getRepoRoot, coresList } from './lib/repo.js';
47
49
  export { buildScorecardForCore } from './lib/scorecard-run.js';
48
50
  export { scanVerifies } from './lib/verifies-scan.js';
51
+ export { deriveCodeEvidence } from './lib/code-evidence.js';
49
52
  // The deterministic pipeline engine. `computeStage`/`PIPELINE` are the everyday
50
53
  // leaves; the rest (`buildPipeline`, `stageApplies`, `isComplianceGated`,
51
54
  // `isSupersededGate`, `SUPERSEDE_SOFT_GATES`, `rank`, `Transition`) are the
@@ -60,6 +63,7 @@ export { parseComplianceSignoff } from './lib/compliance-signoff.js';
60
63
  // Shared with encoreos's validate-pipeline-status: the core-enforcement allowlist
61
64
  // reader (block/warn cores), so the gate's escalation policy lives in ONE place.
62
65
  export { loadEnforcementAllowlist } from './lib/enforcement-allowlist.js';
66
+ import { ENGINE_VERSION } from './lib/version.js';
63
67
  /** The fully-registered CLI program. Exported (not parsed on import — the parse
64
68
  * call below is guarded by the main-module check) so the command-surface gate
65
69
  * and conformance pack can enumerate the registered command set. */
@@ -67,7 +71,7 @@ export const program = new Command();
67
71
  program
68
72
  .name('eos-spec')
69
73
  .description('Encore OS spec workflow CLI — agent-friendly wrapper around the existing spec, audit, and validation scripts. All commands accept `--json` for machine-readable output.')
70
- .version('0.5.0')
74
+ .version(ENGINE_VERSION)
71
75
  .option('--repo-root <path>', 'Override repo root (defaults to git rev-parse --show-toplevel)')
72
76
  .option('--config <path>', 'Override specs/config.yaml path (consumed by init, create, delta, verify-rollout; validated for all commands)')
73
77
  .option('--json', 'Output JSON instead of human-readable text', false)
@@ -94,6 +98,7 @@ registerComplete(program);
94
98
  registerArchive(program);
95
99
  registerDeferred(program);
96
100
  registerDelta(program);
101
+ registerBuildEmbeddings(program);
97
102
  registerFreshness(program);
98
103
  registerFunnel(program);
99
104
  registerScorecard(program);
@@ -109,6 +114,7 @@ registerVerifyAcs(program);
109
114
  registerGenTests(program);
110
115
  registerAudit(program);
111
116
  registerConformance(program);
117
+ registerProfile(program);
112
118
  program.addHelpText('after', `
113
119
  Examples:
114
120
  $ eos-spec validate # Validate every spec across the repo
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /** Minimal spec-index row consumed by the build function. */
2
+ export interface IndexSpec {
3
+ id: string;
4
+ title?: string | null;
5
+ file?: string | null;
6
+ status?: string | null;
7
+ summary?: string | null;
8
+ }
9
+ /**
10
+ * Build the committed semantic-precedent embedding index from an in-memory
11
+ * spec array. Writes:
12
+ * - `<dataDir>/spec-embeddings.bin` (row-major Float32 matrix)
13
+ * - `<dataDir>/spec-embeddings.manifest.json` (dims, model, instruction, entries, count, surfaceHash)
14
+ * - `<dataDir>/recall-query-vectors.json` (recall benchmark queries embedded WITH instruction)
15
+ *
16
+ * @param opts.repoRoot Absolute path to the repository root.
17
+ * @param opts.specIndex Full spec-index array (filter applied internally).
18
+ * @param opts.dataDir Override data dir (defaults to `resolveEmbeddingsPaths` result).
19
+ * @param opts.embed Injectable embedder — defaults to `ollamaEmbed`. Receives raw
20
+ * texts (no instruction prefix added internally for doc vectors;
21
+ * the instruction prefix IS prepended for recall query vectors).
22
+ * @param opts.batch Batch size for the embedder (default 64).
23
+ */
24
+ export declare function buildSpecEmbeddings(opts: {
25
+ repoRoot: string;
26
+ specIndex: IndexSpec[];
27
+ dataDir?: string;
28
+ embed?: (texts: string[]) => Promise<number[][]>;
29
+ batch?: number;
30
+ }): Promise<{
31
+ manifestPath: string;
32
+ matrixPath: string;
33
+ recallVectorsPath: string;
34
+ count: number;
35
+ surfaceHash: string;
36
+ }>;
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Portable `buildSpecEmbeddings` primitive — ports the fork's
3
+ * `scripts/build-spec-embeddings.ts` main body into an injectable function so
4
+ * the package can build its own spec-embedding vectors without a fork-local
5
+ * script. The `embed` seam lets callers mock Ollama in tests; it defaults to
6
+ * the real `ollamaEmbed`. Dims are derived dynamically from `rows[0].length`
7
+ * (same as `serializeMatrix`) so no `EMBED_DIMS` constant is needed.
8
+ */
9
+ import { mkdirSync, writeFileSync } from 'node:fs';
10
+ import { dirname } from 'node:path';
11
+ import { MANIFEST_FILE, MATRIX_FILE, RECALL_VECTORS_FILE, computeSurfaceHash, dataPath, embedDocText, isEmbeddableSpec, normalize, serializeMatrix, } from './embedding-store.js';
12
+ import { EMBED_MODEL, QUERY_INSTRUCTION, ollamaEmbed } from './ollama-embed.js';
13
+ import { RECALL_CASES } from './recall-cases.js';
14
+ import { resolveEmbeddingsPaths } from './embeddings-source.js';
15
+ const DEFAULT_BATCH = 64;
16
+ /**
17
+ * Build the committed semantic-precedent embedding index from an in-memory
18
+ * spec array. Writes:
19
+ * - `<dataDir>/spec-embeddings.bin` (row-major Float32 matrix)
20
+ * - `<dataDir>/spec-embeddings.manifest.json` (dims, model, instruction, entries, count, surfaceHash)
21
+ * - `<dataDir>/recall-query-vectors.json` (recall benchmark queries embedded WITH instruction)
22
+ *
23
+ * @param opts.repoRoot Absolute path to the repository root.
24
+ * @param opts.specIndex Full spec-index array (filter applied internally).
25
+ * @param opts.dataDir Override data dir (defaults to `resolveEmbeddingsPaths` result).
26
+ * @param opts.embed Injectable embedder — defaults to `ollamaEmbed`. Receives raw
27
+ * texts (no instruction prefix added internally for doc vectors;
28
+ * the instruction prefix IS prepended for recall query vectors).
29
+ * @param opts.batch Batch size for the embedder (default 64).
30
+ */
31
+ export async function buildSpecEmbeddings(opts) {
32
+ const embedFn = opts.embed ?? ((texts) => ollamaEmbed(texts));
33
+ const batch = opts.batch ?? DEFAULT_BATCH;
34
+ const dataDir = opts.dataDir ?? resolveEmbeddingsPaths(opts.repoRoot).dataDir;
35
+ // Filter to embeddable specs (non-archived, has a file path)
36
+ const specs = opts.specIndex.filter((s) => isEmbeddableSpec(s));
37
+ // --- Document embeddings (NO instruction prefix) ---
38
+ const docTexts = specs.map(embedDocText);
39
+ const matrix = [];
40
+ for (let i = 0; i < docTexts.length; i += batch) {
41
+ const vecs = await embedFn(docTexts.slice(i, i + batch));
42
+ for (const v of vecs)
43
+ matrix.push(normalize(Float32Array.from(v)));
44
+ }
45
+ const entries = specs.map((s) => ({
46
+ id: s.id,
47
+ file: s.file,
48
+ title: s.title ?? '',
49
+ }));
50
+ // Surface hash computed over the full unfiltered index (mirrors the fork exactly
51
+ // so `eos-spec freshness` recomputes the same hash from spec-index.json).
52
+ const surfaceHash = computeSurfaceHash(opts.specIndex);
53
+ // dims derived dynamically from actual vector length (no EMBED_DIMS constant needed)
54
+ const dims = matrix.length > 0 ? matrix[0].length : 0;
55
+ const manifest = {
56
+ model: EMBED_MODEL,
57
+ dims,
58
+ instruction: QUERY_INSTRUCTION,
59
+ surfaceHash,
60
+ built: process.env.EMBED_BUILD_DATE ?? new Date().toISOString().slice(0, 10),
61
+ entries,
62
+ };
63
+ // Resolve output paths and ensure the directory exists
64
+ const manifestPath = dataPath(opts.repoRoot, MANIFEST_FILE, dataDir);
65
+ const matrixPath = dataPath(opts.repoRoot, MATRIX_FILE, dataDir);
66
+ const recallVectorsPath = dataPath(opts.repoRoot, RECALL_VECTORS_FILE, dataDir);
67
+ mkdirSync(dirname(manifestPath), { recursive: true });
68
+ writeFileSync(matrixPath, serializeMatrix(matrix));
69
+ // Include `count` in the on-disk JSON (same as `entries.length`) for quick inspection
70
+ writeFileSync(manifestPath, `${JSON.stringify({ ...manifest, count: specs.length }, null, 2)}\n`);
71
+ // --- Recall benchmark query vectors (WITH instruction prefix) ---
72
+ const queries = RECALL_CASES.flatMap((c) => [
73
+ { kind: 'exact', query: c.exact, targetFile: c.targetFile },
74
+ { kind: 'paraphrase', query: c.paraphrase, targetFile: c.targetFile },
75
+ ]);
76
+ const qVecs = [];
77
+ for (let i = 0; i < queries.length; i += batch) {
78
+ const vecs = await embedFn(queries.slice(i, i + batch).map((q) => `${QUERY_INSTRUCTION}${q.query}`));
79
+ for (const v of vecs)
80
+ qVecs.push(normalize(Float32Array.from(v)));
81
+ }
82
+ const recall = queries.map((q, i) => ({ ...q, vec: Array.from(qVecs[i]) }));
83
+ writeFileSync(recallVectorsPath, `${JSON.stringify({ model: EMBED_MODEL, instruction: QUERY_INSTRUCTION, queries: recall }, null, 2)}\n`);
84
+ return { manifestPath, matrixPath, recallVectorsPath, count: specs.length, surfaceHash };
85
+ }
86
+ //# sourceMappingURL=build-embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-embeddings.js","sourceRoot":"","sources":["../../src/lib/build-embeddings.ts"],"names":[],"mappings":"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"}
@@ -64,6 +64,12 @@ export type SpecConfig = {
64
64
  /** Path to the generated spec-index.json (freshness corpus), relative to repo root. */
65
65
  spec_index_path?: string;
66
66
  };
67
+ /** Which built-in pipeline layout `profile --json` projects. Absent ⇒ 'encore1'
68
+ * (the engine's active default); 'builder' selects the 6-stage / no-caps layout.
69
+ * The first config-driven layout selector — additive, back-compatible. */
70
+ pipeline?: {
71
+ layout?: 'encore1' | 'builder';
72
+ };
67
73
  };
68
74
  export declare function loadConfig(repoRoot: string, configOverride?: string): SpecConfig;
69
75
  export declare function resetConfigCache(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { SpecConfig } from './config.js';
1
2
  import type { PipelineSchema } from './pipeline-schema.js';
2
3
  /** The canonical encoreos-1 spec/test pipeline as config-driven data. This is a
3
4
  * faithful transcription of the imperative `PIPELINE`/`STATUS_ORDER`/`computeStage`
@@ -18,3 +19,7 @@ export declare const ENCORE1_PIPELINE_SCHEMA: PipelineSchema;
18
19
  * their predicate polarity cannot affect stage parity. Proven against the captured
19
20
  * builder baseline by `pipeline-parity.builder.test.ts`. */
20
21
  export declare const BUILDER_PIPELINE_SCHEMA: PipelineSchema;
22
+ /** Resolve the pipeline schema a repo's config selects. Pure. Absent/unknown
23
+ * `pipeline.layout` ⇒ ENCORE1 (the engine's active default); 'builder' ⇒ the
24
+ * 6-stage / no-caps builder layout. Consumed by `eos-spec profile --json`. */
25
+ export declare function resolvePipelineSchema(config: SpecConfig): PipelineSchema;
@@ -248,4 +248,10 @@ export const BUILDER_PIPELINE_SCHEMA = {
248
248
  ],
249
249
  caps: [],
250
250
  };
251
+ /** Resolve the pipeline schema a repo's config selects. Pure. Absent/unknown
252
+ * `pipeline.layout` ⇒ ENCORE1 (the engine's active default); 'builder' ⇒ the
253
+ * 6-stage / no-caps builder layout. Consumed by `eos-spec profile --json`. */
254
+ export function resolvePipelineSchema(config) {
255
+ return config.pipeline?.layout === 'builder' ? BUILDER_PIPELINE_SCHEMA : ENCORE1_PIPELINE_SCHEMA;
256
+ }
251
257
  //# sourceMappingURL=pipeline-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline-config.js","sourceRoot":"","sources":["../../src/lib/pipeline-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline-config.js","sourceRoot":"","sources":["../../src/lib/pipeline-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * The lean, stable repo-profile contract (`schemaVersion: 1`) emitted by
3
+ * `eos-spec profile --json`. PURE projection: it takes an already-loaded config +
4
+ * the resolved pipeline schema + the engine version and assembles the object; the
5
+ * fs read (loadConfig) stays in the command (commands/profile.ts). Every field is a
6
+ * projection of something the engine already owns — no new modelling. LEAN by
7
+ * design: only what a GENERIC navigator needs; encoreos healthcare-domain logic
8
+ * stays out of the contract (design §2a).
9
+ */
10
+ import { type SpecConfig } from './config.js';
11
+ import type { PipelineSchema } from './pipeline-schema.js';
12
+ export type RepoProfile = {
13
+ schemaVersion: 1;
14
+ engine: {
15
+ package: string;
16
+ version: string;
17
+ cli: string;
18
+ };
19
+ specsRoot: string;
20
+ perCoreSubdir: true;
21
+ cores: Array<{
22
+ id: string;
23
+ name: string;
24
+ regulated: boolean;
25
+ }>;
26
+ specIdGrammar: {
27
+ pattern: string;
28
+ caseInsensitive: boolean;
29
+ };
30
+ pipeline: {
31
+ statusOrder: string[];
32
+ stages: Array<{
33
+ id: string;
34
+ gate: string;
35
+ invocation: string;
36
+ regulatedOnly: boolean;
37
+ optional: boolean;
38
+ }>;
39
+ caps: Array<{
40
+ unless: string;
41
+ capBelow: string;
42
+ whenRegulated: boolean;
43
+ }>;
44
+ };
45
+ paths: {
46
+ plans: string;
47
+ tasks: string;
48
+ archive: string;
49
+ migrations: string;
50
+ generatedTests: string;
51
+ verifiesScanRoots: string[];
52
+ };
53
+ commands: Record<string, string>;
54
+ };
55
+ /** Project a consumer repo's config + resolved pipeline schema into the lean
56
+ * RepoProfile contract. PURE — no filesystem access. */
57
+ export declare function buildRepoProfile(config: SpecConfig, schema: PipelineSchema, engineVersion: string): RepoProfile;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * The lean, stable repo-profile contract (`schemaVersion: 1`) emitted by
3
+ * `eos-spec profile --json`. PURE projection: it takes an already-loaded config +
4
+ * the resolved pipeline schema + the engine version and assembles the object; the
5
+ * fs read (loadConfig) stays in the command (commands/profile.ts). Every field is a
6
+ * projection of something the engine already owns — no new modelling. LEAN by
7
+ * design: only what a GENERIC navigator needs; encoreos healthcare-domain logic
8
+ * stays out of the contract (design §2a).
9
+ */
10
+ import { generatedTestsDir, migrationsDir, verifiesScanRoots } from './config.js';
11
+ import { REGULATED_CORES, SPEC_ID_GRAMMAR } from './spec-pure.js';
12
+ const PACKAGE_NAME = '@encore-os/eos-spec';
13
+ /** Project a consumer repo's config + resolved pipeline schema into the lean
14
+ * RepoProfile contract. PURE — no filesystem access. */
15
+ export function buildRepoProfile(config, schema, engineVersion) {
16
+ return {
17
+ schemaVersion: 1,
18
+ engine: { package: PACKAGE_NAME, version: engineVersion, cli: `npx ${PACKAGE_NAME}` },
19
+ specsRoot: config.paths?.specs ?? 'specs',
20
+ perCoreSubdir: true,
21
+ cores: config.cores.map((c) => ({
22
+ id: c.id,
23
+ name: c.name,
24
+ regulated: REGULATED_CORES.has(c.id.toLowerCase()),
25
+ })),
26
+ specIdGrammar: { pattern: SPEC_ID_GRAMMAR.pattern, caseInsensitive: SPEC_ID_GRAMMAR.caseInsensitive },
27
+ pipeline: {
28
+ statusOrder: [...schema.statusOrder],
29
+ stages: schema.stages.map((s) => ({
30
+ id: s.id,
31
+ gate: s.gate,
32
+ invocation: s.invocation,
33
+ regulatedOnly: Boolean(s.regulatedOnly),
34
+ optional: Boolean(s.optional),
35
+ })),
36
+ caps: schema.caps.map((c) => ({
37
+ unless: c.unless,
38
+ capBelow: c.capBelow,
39
+ whenRegulated: Boolean(c.whenRegulated),
40
+ })),
41
+ },
42
+ paths: {
43
+ plans: config.paths?.plans ?? 'plans',
44
+ tasks: config.paths?.tasks ?? 'tasks',
45
+ archive: config.paths?.archive ?? 'archive',
46
+ migrations: migrationsDir(config),
47
+ generatedTests: generatedTestsDir(config),
48
+ verifiesScanRoots: verifiesScanRoots(config),
49
+ },
50
+ commands: { ...(config.commands?.unified ?? {}) },
51
+ };
52
+ }
53
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/lib/profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAmB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEnG,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAElE,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAyB3C;yDACyD;AACzD,MAAM,UAAU,gBAAgB,CAAC,MAAkB,EAAE,MAAsB,EAAE,aAAqB;IAChG,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,YAAY,EAAE,EAAE;QACrF,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,OAAO;QACzC,aAAa,EAAE,IAAI;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;SACnD,CAAC,CAAC;QACH,aAAa,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,CAAC,eAAe,EAAE;QACrG,QAAQ,EAAE;YACR,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;YACpC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;gBACvC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;aAC9B,CAAC,CAAC;YACH,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5B,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;aACxC,CAAC,CAAC;SACJ;QACD,KAAK,EAAE;YACL,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,OAAO;YACrC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,OAAO;YACrC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS;YAC3C,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC;YACjC,cAAc,EAAE,iBAAiB,CAAC,MAAM,CAAC;YACzC,iBAAiB,EAAE,iBAAiB,CAAC,MAAM,CAAC;SAC7C;QACD,QAAQ,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE;KAClD,CAAC;AACJ,CAAC"}
@@ -1,6 +1,13 @@
1
1
  import type { SpecSignals } from './specs.js';
2
2
  /** Cores requiring regulatory grounding + compliance review. */
3
3
  export declare const REGULATED_CORES: Set<string>;
4
+ /** Human-readable projection of the {@link extractSpecId} id grammar, surfaced by
5
+ * `eos-spec profile --json` so a repo-agnostic consumer can describe spec ids
6
+ * without re-deriving the regex. Kept in step with the regex in extractSpecId. */
7
+ export declare const SPEC_ID_GRAMMAR: {
8
+ readonly pattern: "<core>(-[A-Z]{1,4})?-<n>(.<n>)?(-(EN-<n>|E<n>|P<n>(.<n>)?(-EN-<n>)?))?";
9
+ readonly caseInsensitive: true;
10
+ };
4
11
  /** True when a generated test source has ≥1 ACTIVE `test(` block (not `test.fixme`/
5
12
  * `test.describe`) and is not an AC-less placeholder. Pure (operates on source text). */
6
13
  export declare function hasActiveGeneratedTestSource(source: string): boolean;
@@ -18,6 +18,13 @@ import { readFrontmatter } from './frontmatter.js';
18
18
  import { acStatusCounts, allAcceptanceCriteriaTerminal } from './requirements.js';
19
19
  /** Cores requiring regulatory grounding + compliance review. */
20
20
  export const REGULATED_CORES = new Set(['cl', 'pm', 'hr', 'rh', 'gr']);
21
+ /** Human-readable projection of the {@link extractSpecId} id grammar, surfaced by
22
+ * `eos-spec profile --json` so a repo-agnostic consumer can describe spec ids
23
+ * without re-deriving the regex. Kept in step with the regex in extractSpecId. */
24
+ export const SPEC_ID_GRAMMAR = {
25
+ pattern: '<core>(-[A-Z]{1,4})?-<n>(.<n>)?(-(EN-<n>|E<n>|P<n>(.<n>)?(-EN-<n>)?))?',
26
+ caseInsensitive: true,
27
+ };
21
28
  /** The marker the generator emits for an AC-less spec. */
22
29
  const GENERATED_NO_AC_MARKER = 'no acceptance_criteria — run encore-spec-ac-draft first';
23
30
  /** Keywords that mark a spec as carrying sensitive data — PHI/PII/billing/
@@ -1 +1 @@
1
- {"version":3,"file":"spec-pure.js","sourceRoot":"","sources":["../../src/lib/spec-pure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec-pure.js","sourceRoot":"","sources":["../../src/lib/spec-pure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** The single source of truth for the published engine version. Kept in lockstep
2
+ * with package.json `version` by version.test.ts; consumed by the CLI `.version()`
3
+ * registration (index.ts) and the `profile --json` engine.version field. Bump this
4
+ * together with package.json on release. */
5
+ export declare const ENGINE_VERSION = "0.7.0";
@@ -0,0 +1,6 @@
1
+ /** The single source of truth for the published engine version. Kept in lockstep
2
+ * with package.json `version` by version.test.ts; consumed by the CLI `.version()`
3
+ * registration (index.ts) and the `profile --json` engine.version field. Bump this
4
+ * together with package.json on release. */
5
+ export const ENGINE_VERSION = '0.7.0';
6
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA;;;6CAG6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@encore-os/eos-spec",
3
- "version": "0.5.1",
3
+ "version": "0.7.0",
4
4
  "description": "Portable, config-driven spec-pipeline engine + quality harness. One canonical engine consumed as a library (with a client-safe /pure subpath) by every Encore-OS repo.",
5
5
  "private": false,
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -23,6 +23,10 @@
23
23
  "./pure": {
24
24
  "types": "./dist/pure.d.ts",
25
25
  "import": "./dist/pure.js"
26
+ },
27
+ "./embeddings": {
28
+ "types": "./dist/embeddings.d.ts",
29
+ "import": "./dist/embeddings.js"
26
30
  }
27
31
  },
28
32
  "files": [