iosm-cli 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.3.1] - 2026-04-05
11
+
12
+ ### Added
13
+
14
+ - **Profile-aware `/init` flow** — `/init` now follows active profile semantics: `full/plan/meta` updates `AGENTS.md`; `iosm` initializes and synchronizes both `AGENTS.md` and `IOSM.md`
15
+ - **AGENTS managed sync block for IOSM** — introduced deterministic managed section in `AGENTS.md` during IOSM init, preserving user-authored content outside the managed block
16
+
17
+ ### Changed
18
+
19
+ - **IOSM init file sync contract** — `iosm init` now performs guaranteed create/update for both `AGENTS.md` and `IOSM.md` to avoid missing physical playbook files
20
+ - **Interactive init control flow** — added dedicated standard-init session tracking with explicit “already running” guard and interrupt-safe cancellation path
21
+ - **CLI init status output** — `iosm init` now reports per-file state for `AGENTS.md` and `IOSM.md` (`created/updated/skipped/unchanged`)
22
+
23
+ ### Documentation
24
+
25
+ - Updated README release marker and highlights to `0.3.1`
26
+ - Updated `docs/getting-started.md` and `docs/interactive-mode.md` to document profile-scoped `/init` behavior
27
+
28
+ ### Tests
29
+
30
+ - Expanded coverage for IOSM/AGENTS guide writers and profile-aware `/init` behavior in interactive and init test suites
31
+
10
32
  ## [0.3.0] - 2026-04-05
11
33
 
12
34
  ### Added
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <div align="center">
2
2
 
3
- <h1>IOSM CLI 0.3.0</h1>
3
+ <h1>IOSM CLI 0.3.1</h1>
4
4
 
5
5
  <p><strong>Terminal-native AI runtime for controlled, measurable engineering work on real codebases.</strong></p>
6
6
 
@@ -32,13 +32,13 @@ It is not a chat interface. It is a runtime.
32
32
 
33
33
  ---
34
34
 
35
- ## ✦ What's New in 0.3.0
35
+ ## ✦ What's New in 0.3.1
36
36
 
37
- - Interactive UI refresh with unified framed windows for user, assistant, tool, and orchestration output
38
- - Redesigned input area with mode-aware header (`input >`, `command /`, `bash !`) and consistent spacing
39
- - Improved reasoning UX: collapsed reasoning preview with live spinner while assistant is streaming
40
- - Added color-coded execution surfaces: green-framed tool output and orange-framed orchestration panel
41
- - Added compact footer mode toggle in interactive settings
37
+ - Profile-aware `/init` contract: in `full/plan/meta` it initializes `AGENTS.md` only; in `iosm` profile it initializes and syncs both `AGENTS.md` and `IOSM.md`
38
+ - `iosm init` now guarantees physical upsert for both `AGENTS.md` and `IOSM.md` in IOSM workflow
39
+ - Added managed IOSM sync section in `AGENTS.md` (iosm profile) with safe in-place updates instead of destructive rewrites
40
+ - Improved `/init` runtime resilience: explicit in-progress guard and clean interrupt handling for long-running init sessions
41
+ - Updated docs for profile-scoped init behavior in interactive and getting-started guides
42
42
 
43
43
  ## ✦ Major Additions in 0.2.16
44
44
 
@@ -25,7 +25,21 @@ export interface IosmGuideWriteResult {
25
25
  existed: boolean;
26
26
  written: boolean;
27
27
  }
28
+ export interface AgentsGuideDocumentInput {
29
+ rootDir: string;
30
+ cycleId?: string;
31
+ assessmentSource: "heuristic" | "verified";
32
+ iosmIndex?: number | null;
33
+ decisionConfidence?: number | null;
34
+ goals?: string[];
35
+ filesAnalyzed?: number;
36
+ sourceFileCount?: number;
37
+ testFileCount?: number;
38
+ docFileCount?: number;
39
+ }
28
40
  export declare function buildIosmPriorityChecklist(metrics: IosmMetricRecord<number | null>, limit?: number): IosmPriorityChecklistItem[];
29
41
  export declare function buildIosmGuideDocument(input: IosmGuideDocumentInput): string;
42
+ export declare function buildAgentsGuideDocument(input: AgentsGuideDocumentInput, existingContent?: string): string;
30
43
  export declare function writeIosmGuideDocument(input: IosmGuideDocumentInput, overwrite: boolean): IosmGuideWriteResult;
44
+ export declare function writeAgentsGuideDocument(input: AgentsGuideDocumentInput, overwrite: boolean): IosmGuideWriteResult;
31
45
  //# sourceMappingURL=guide.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../src/iosm/guide.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAyC/D,MAAM,WAAW,yBAAyB;IACzC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,WAAW,GAAG,UAAU,CAAC;IAC3C,OAAO,EAAE,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,EACxC,KAAK,GAAE,MAAU,GACf,yBAAyB,EAAE,CAS7B;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAmF5E;AAED,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,sBAAsB,EAC7B,SAAS,EAAE,OAAO,GAChB,oBAAoB,CAQtB"}
1
+ {"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../src/iosm/guide.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAyC/D,MAAM,WAAW,yBAAyB;IACzC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,WAAW,GAAG,UAAU,CAAC;IAC3C,OAAO,EAAE,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,WAAW,GAAG,UAAU,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAoBD,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,EACxC,KAAK,GAAE,MAAU,GACf,yBAAyB,EAAE,CAS7B;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAmF5E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,wBAAwB,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CA8C1G;AAED,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,sBAAsB,EAC7B,SAAS,EAAE,OAAO,GAChB,oBAAoB,CAQtB;AAED,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,wBAAwB,EAC/B,SAAS,EAAE,OAAO,GAChB,oBAAoB,CAUtB"}
@@ -1,4 +1,5 @@
1
- import { existsSync, writeFileSync } from "node:fs";
1
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { basename, join } from "node:path";
2
3
  import { IOSM_METRICS } from "./metrics.js";
3
4
  import { getIosmGuidePath } from "./paths.js";
4
5
  const METRIC_TITLES = {
@@ -35,6 +36,22 @@ function metricStatus(value) {
35
36
  function metricSortScore(value) {
36
37
  return value === null ? -1 : value;
37
38
  }
39
+ const AGENTS_MANAGED_START = "<!-- iosm-init:managed:start -->";
40
+ const AGENTS_MANAGED_END = "<!-- iosm-init:managed:end -->";
41
+ function upsertManagedBlock(content, startMarker, endMarker, block) {
42
+ const startIndex = content.indexOf(startMarker);
43
+ const endIndex = content.indexOf(endMarker);
44
+ if (startIndex >= 0 && endIndex > startIndex) {
45
+ const suffixStart = endIndex + endMarker.length;
46
+ const prefix = content.slice(0, startIndex).trimEnd();
47
+ const suffix = content.slice(suffixStart).trimStart();
48
+ if (!suffix) {
49
+ return `${prefix}\n\n${block}\n`;
50
+ }
51
+ return `${prefix}\n\n${block}\n\n${suffix}\n`;
52
+ }
53
+ return `${content.trimEnd()}\n\n${block}\n`;
54
+ }
38
55
  export function buildIosmPriorityChecklist(metrics, limit = 3) {
39
56
  return IOSM_METRICS.map((metric) => ({
40
57
  metric,
@@ -89,6 +106,50 @@ export function buildIosmGuideDocument(input) {
89
106
  lines.push("", "## Agent Contract", "- At the start of each engineering turn: re-read this file and the active cycle report.", "- After each meaningful change: update metric evidence, hypotheses outcome, and phase report.", "- Gate progression requires evidence, not just code changes.", "- Phases run in order: Improve → Optimize → Shrink → Modularize.", "- Quality gates: gate_I (improve), gate_O (optimize), gate_S (shrink), gate_M (modularize).");
90
107
  return `${lines.join("\n")}\n`;
91
108
  }
109
+ export function buildAgentsGuideDocument(input, existingContent) {
110
+ const nowIso = new Date().toISOString();
111
+ const goals = input.goals ?? [];
112
+ const projectName = basename(input.rootDir);
113
+ const filesSummary = `${input.filesAnalyzed ?? "n/a"} total · ${input.sourceFileCount ?? "n/a"} src · ${input.testFileCount ?? "n/a"} tests · ${input.docFileCount ?? "n/a"} docs`;
114
+ const managedBlock = [
115
+ AGENTS_MANAGED_START,
116
+ "## IOSM Sync (managed)",
117
+ `- Updated: ${nowIso}`,
118
+ `- Assessment: ${input.assessmentSource}`,
119
+ `- Active cycle: ${input.cycleId ?? "none"}`,
120
+ `- IOSM-Index: ${formatMetricValue(input.iosmIndex)} (confidence: ${formatMetricValue(input.decisionConfidence)})`,
121
+ `- Files analyzed: ${filesSummary}`,
122
+ "",
123
+ "### Current focus",
124
+ ...(goals.length > 0 ? goals.map((goal) => `- ${goal}`) : ["- Unknown"]),
125
+ "",
126
+ "### Notes",
127
+ "- This section is auto-updated by `iosm init`/`/init`.",
128
+ "- Keep project-specific contributor/agent rules outside this block.",
129
+ AGENTS_MANAGED_END,
130
+ ].join("\n");
131
+ const normalizedExisting = existingContent?.trim();
132
+ if (normalizedExisting && normalizedExisting.length > 0) {
133
+ return upsertManagedBlock(normalizedExisting, AGENTS_MANAGED_START, AGENTS_MANAGED_END, managedBlock);
134
+ }
135
+ const lines = [
136
+ "# AGENTS.md",
137
+ "",
138
+ "This file captures practical collaboration rules for human and AI agents in this repository.",
139
+ "",
140
+ "## Project",
141
+ `- Name: ${projectName}`,
142
+ `- Root: ${input.rootDir}`,
143
+ "",
144
+ "## Working Agreement",
145
+ "- Inspect relevant files before editing.",
146
+ "- Keep edits minimal and verify with targeted checks.",
147
+ "- Prefer explicit commands and absolute file paths in reports.",
148
+ "",
149
+ managedBlock,
150
+ ];
151
+ return `${lines.join("\n")}\n`;
152
+ }
92
153
  export function writeIosmGuideDocument(input, overwrite) {
93
154
  const filePath = getIosmGuidePath(input.rootDir);
94
155
  const existed = existsSync(filePath);
@@ -98,4 +159,14 @@ export function writeIosmGuideDocument(input, overwrite) {
98
159
  writeFileSync(filePath, buildIosmGuideDocument(input), "utf8");
99
160
  return { path: filePath, existed, written: true };
100
161
  }
162
+ export function writeAgentsGuideDocument(input, overwrite) {
163
+ const filePath = join(input.rootDir, "AGENTS.md");
164
+ const existed = existsSync(filePath);
165
+ if (existed && !overwrite) {
166
+ return { path: filePath, existed, written: false };
167
+ }
168
+ const existingContent = existed ? readFileSync(filePath, "utf8") : undefined;
169
+ writeFileSync(filePath, buildAgentsGuideDocument(input, existingContent), "utf8");
170
+ return { path: filePath, existed, written: true };
171
+ }
101
172
  //# sourceMappingURL=guide.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"guide.js","sourceRoot":"","sources":["../../src/iosm/guide.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, writeFileSync } from \"node:fs\";\nimport { IOSM_METRICS } from \"./metrics.js\";\nimport { getIosmGuidePath } from \"./paths.js\";\nimport type { IosmMetric, IosmMetricRecord } from \"./types.js\";\n\nconst METRIC_TITLES: Record<IosmMetric, string> = {\n\tsemantic: \"Semantic\",\n\tlogic: \"Logic\",\n\tperformance: \"Performance\",\n\tsimplicity: \"Simplicity\",\n\tmodularity: \"Modularity\",\n\tflow: \"Flow\",\n};\n\nconst METRIC_ACTIONS: Record<IosmMetric, string> = {\n\tsemantic: \"Clarify glossary/domain language and improve docs for public APIs.\",\n\tlogic: \"Add or fix automated tests for critical paths and invariants.\",\n\tperformance: \"Add runtime measurements/benchmarks and enforce SLO budgets.\",\n\tsimplicity: \"Reduce complexity in large files/functions and simplify API surface.\",\n\tmodularity: \"Split boundaries and reduce coupling between modules.\",\n\tflow: \"Establish VCS + CI/CD workflow and a repeatable release cadence.\",\n};\n\nfunction formatMetricValue(value: number | null | undefined): string {\n\treturn value === undefined || value === null ? \"n/a\" : value.toFixed(3);\n}\n\nfunction metricStatus(value: number | null): string {\n\tif (value === null) {\n\t\treturn \"unknown\";\n\t}\n\tif (value < 0.55) {\n\t\treturn \"critical\";\n\t}\n\tif (value < 0.75) {\n\t\treturn \"watch\";\n\t}\n\treturn \"stable\";\n}\n\nfunction metricSortScore(value: number | null): number {\n\treturn value === null ? -1 : value;\n}\n\nexport interface IosmPriorityChecklistItem {\n\tmetric: IosmMetric;\n\tvalue: number | null;\n\ttitle: string;\n\taction: string;\n}\n\nexport interface IosmGuideDocumentInput {\n\trootDir: string;\n\tcycleId?: string;\n\tassessmentSource: \"heuristic\" | \"verified\";\n\tmetrics: IosmMetricRecord<number | null>;\n\tiosmIndex?: number | null;\n\tdecisionConfidence?: number | null;\n\tgoals?: string[];\n\tfilesAnalyzed?: number;\n\tsourceFileCount?: number;\n\ttestFileCount?: number;\n\tdocFileCount?: number;\n\ttracePath?: string;\n\thistoryPath?: string;\n}\n\nexport interface IosmGuideWriteResult {\n\tpath: string;\n\texisted: boolean;\n\twritten: boolean;\n}\n\nexport function buildIosmPriorityChecklist(\n\tmetrics: IosmMetricRecord<number | null>,\n\tlimit: number = 3,\n): IosmPriorityChecklistItem[] {\n\treturn IOSM_METRICS.map((metric) => ({\n\t\tmetric,\n\t\tvalue: metrics[metric],\n\t\ttitle: METRIC_TITLES[metric],\n\t\taction: METRIC_ACTIONS[metric],\n\t}))\n\t\t.sort((left, right) => metricSortScore(left.value) - metricSortScore(right.value))\n\t\t.slice(0, Math.max(1, Math.min(limit, IOSM_METRICS.length)));\n}\n\nexport function buildIosmGuideDocument(input: IosmGuideDocumentInput): string {\n\tconst nowIso = new Date().toISOString();\n\tconst goals = input.goals ?? [];\n\n\t// Build sorted metrics table (worst-first)\n\tconst sortedMetrics = IOSM_METRICS.slice().sort(\n\t\t(a, b) => metricSortScore(input.metrics[a]) - metricSortScore(input.metrics[b]),\n\t);\n\n\t// Priority actions: top 3 worst metrics\n\tconst priorities = buildIosmPriorityChecklist(input.metrics, 3);\n\n\tconst lines: string[] = [\n\t\t\"# IOSM.md\",\n\t\t\"\",\n\t\t\"This file provides IOSM operational context to the agent for this project.\",\n\t\t`Updated: ${nowIso}`,\n\t\t\"\",\n\t\t\"## Project Status\",\n\t\t`- Root: ${input.rootDir}`,\n\t\t`- Active cycle: ${input.cycleId ?? \"none\"}`,\n\t\t`- IOSM-Index: ${formatMetricValue(input.iosmIndex)} (Confidence: ${formatMetricValue(input.decisionConfidence)})`,\n\t\t`- Assessment: ${input.assessmentSource} · Files analyzed: ${input.filesAnalyzed ?? \"n/a\"}`,\n\t\t\"\",\n\t\t\"## Metric Scores\",\n\t\t\"| Metric | Score | Status | Priority Action |\",\n\t\t\"|--------|-------|--------|-----------------|\",\n\t];\n\n\tfor (const metric of sortedMetrics) {\n\t\tlines.push(\n\t\t\t`| ${METRIC_TITLES[metric]} | ${formatMetricValue(input.metrics[metric])} | ${metricStatus(input.metrics[metric])} | ${METRIC_ACTIONS[metric]} |`,\n\t\t);\n\t}\n\n\tlines.push(\"\", \"## Priority Actions (this cycle)\");\n\tfor (const [index, item] of priorities.entries()) {\n\t\tlines.push(\n\t\t\t`${index + 1}. **${item.title} (${formatMetricValue(item.value)} — ${metricStatus(item.value)})**: ${item.action}`,\n\t\t);\n\t}\n\n\tif (goals.length > 0) {\n\t\tlines.push(\"\", \"## Active Goals\");\n\t\tfor (const goal of goals) {\n\t\t\tlines.push(`- ${goal}`);\n\t\t}\n\t}\n\n\tlines.push(\n\t\t\"\",\n\t\t\"## IOSM Workspace\",\n\t\t`- Config: \\`iosm.yaml\\``,\n\t\t`- Metrics history: \\`.iosm/metrics-history.jsonl\\``,\n\t);\n\n\tif (input.cycleId) {\n\t\tlines.push(\n\t\t\t`- Current cycle: \\`.iosm/cycles/${input.cycleId}/\\``,\n\t\t\t` - Baseline: \\`baseline-report.json\\``,\n\t\t\t` - Hypotheses: \\`hypotheses.json\\``,\n\t\t\t` - Phase reports: \\`phase-reports/improve.json\\` etc.`,\n\t\t);\n\t}\n\n\tlines.push(\n\t\t`- Invariants: \\`.iosm/invariants.yaml\\``,\n\t\t`- Contracts: \\`.iosm/contracts.yaml\\``,\n\t\t`- Decision log: \\`.iosm/decision-log.md\\``,\n\t\t`- Pattern library: \\`.iosm/pattern-library.md\\``,\n\t);\n\n\tlines.push(\n\t\t\"\",\n\t\t\"## Agent Contract\",\n\t\t\"- At the start of each engineering turn: re-read this file and the active cycle report.\",\n\t\t\"- After each meaningful change: update metric evidence, hypotheses outcome, and phase report.\",\n\t\t\"- Gate progression requires evidence, not just code changes.\",\n\t\t\"- Phases run in order: Improve → Optimize → Shrink → Modularize.\",\n\t\t\"- Quality gates: gate_I (improve), gate_O (optimize), gate_S (shrink), gate_M (modularize).\",\n\t);\n\n\treturn `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function writeIosmGuideDocument(\n\tinput: IosmGuideDocumentInput,\n\toverwrite: boolean,\n): IosmGuideWriteResult {\n\tconst filePath = getIosmGuidePath(input.rootDir);\n\tconst existed = existsSync(filePath);\n\tif (existed && !overwrite) {\n\t\treturn { path: filePath, existed, written: false };\n\t}\n\twriteFileSync(filePath, buildIosmGuideDocument(input), \"utf8\");\n\treturn { path: filePath, existed, written: true };\n}\n"]}
1
+ {"version":3,"file":"guide.js","sourceRoot":"","sources":["../../src/iosm/guide.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { basename, join } from \"node:path\";\nimport { IOSM_METRICS } from \"./metrics.js\";\nimport { getIosmGuidePath } from \"./paths.js\";\nimport type { IosmMetric, IosmMetricRecord } from \"./types.js\";\n\nconst METRIC_TITLES: Record<IosmMetric, string> = {\n\tsemantic: \"Semantic\",\n\tlogic: \"Logic\",\n\tperformance: \"Performance\",\n\tsimplicity: \"Simplicity\",\n\tmodularity: \"Modularity\",\n\tflow: \"Flow\",\n};\n\nconst METRIC_ACTIONS: Record<IosmMetric, string> = {\n\tsemantic: \"Clarify glossary/domain language and improve docs for public APIs.\",\n\tlogic: \"Add or fix automated tests for critical paths and invariants.\",\n\tperformance: \"Add runtime measurements/benchmarks and enforce SLO budgets.\",\n\tsimplicity: \"Reduce complexity in large files/functions and simplify API surface.\",\n\tmodularity: \"Split boundaries and reduce coupling between modules.\",\n\tflow: \"Establish VCS + CI/CD workflow and a repeatable release cadence.\",\n};\n\nfunction formatMetricValue(value: number | null | undefined): string {\n\treturn value === undefined || value === null ? \"n/a\" : value.toFixed(3);\n}\n\nfunction metricStatus(value: number | null): string {\n\tif (value === null) {\n\t\treturn \"unknown\";\n\t}\n\tif (value < 0.55) {\n\t\treturn \"critical\";\n\t}\n\tif (value < 0.75) {\n\t\treturn \"watch\";\n\t}\n\treturn \"stable\";\n}\n\nfunction metricSortScore(value: number | null): number {\n\treturn value === null ? -1 : value;\n}\n\nexport interface IosmPriorityChecklistItem {\n\tmetric: IosmMetric;\n\tvalue: number | null;\n\ttitle: string;\n\taction: string;\n}\n\nexport interface IosmGuideDocumentInput {\n\trootDir: string;\n\tcycleId?: string;\n\tassessmentSource: \"heuristic\" | \"verified\";\n\tmetrics: IosmMetricRecord<number | null>;\n\tiosmIndex?: number | null;\n\tdecisionConfidence?: number | null;\n\tgoals?: string[];\n\tfilesAnalyzed?: number;\n\tsourceFileCount?: number;\n\ttestFileCount?: number;\n\tdocFileCount?: number;\n\ttracePath?: string;\n\thistoryPath?: string;\n}\n\nexport interface IosmGuideWriteResult {\n\tpath: string;\n\texisted: boolean;\n\twritten: boolean;\n}\n\nexport interface AgentsGuideDocumentInput {\n\trootDir: string;\n\tcycleId?: string;\n\tassessmentSource: \"heuristic\" | \"verified\";\n\tiosmIndex?: number | null;\n\tdecisionConfidence?: number | null;\n\tgoals?: string[];\n\tfilesAnalyzed?: number;\n\tsourceFileCount?: number;\n\ttestFileCount?: number;\n\tdocFileCount?: number;\n}\n\nconst AGENTS_MANAGED_START = \"<!-- iosm-init:managed:start -->\";\nconst AGENTS_MANAGED_END = \"<!-- iosm-init:managed:end -->\";\n\nfunction upsertManagedBlock(content: string, startMarker: string, endMarker: string, block: string): string {\n\tconst startIndex = content.indexOf(startMarker);\n\tconst endIndex = content.indexOf(endMarker);\n\tif (startIndex >= 0 && endIndex > startIndex) {\n\t\tconst suffixStart = endIndex + endMarker.length;\n\t\tconst prefix = content.slice(0, startIndex).trimEnd();\n\t\tconst suffix = content.slice(suffixStart).trimStart();\n\t\tif (!suffix) {\n\t\t\treturn `${prefix}\\n\\n${block}\\n`;\n\t\t}\n\t\treturn `${prefix}\\n\\n${block}\\n\\n${suffix}\\n`;\n\t}\n\treturn `${content.trimEnd()}\\n\\n${block}\\n`;\n}\n\nexport function buildIosmPriorityChecklist(\n\tmetrics: IosmMetricRecord<number | null>,\n\tlimit: number = 3,\n): IosmPriorityChecklistItem[] {\n\treturn IOSM_METRICS.map((metric) => ({\n\t\tmetric,\n\t\tvalue: metrics[metric],\n\t\ttitle: METRIC_TITLES[metric],\n\t\taction: METRIC_ACTIONS[metric],\n\t}))\n\t\t.sort((left, right) => metricSortScore(left.value) - metricSortScore(right.value))\n\t\t.slice(0, Math.max(1, Math.min(limit, IOSM_METRICS.length)));\n}\n\nexport function buildIosmGuideDocument(input: IosmGuideDocumentInput): string {\n\tconst nowIso = new Date().toISOString();\n\tconst goals = input.goals ?? [];\n\n\t// Build sorted metrics table (worst-first)\n\tconst sortedMetrics = IOSM_METRICS.slice().sort(\n\t\t(a, b) => metricSortScore(input.metrics[a]) - metricSortScore(input.metrics[b]),\n\t);\n\n\t// Priority actions: top 3 worst metrics\n\tconst priorities = buildIosmPriorityChecklist(input.metrics, 3);\n\n\tconst lines: string[] = [\n\t\t\"# IOSM.md\",\n\t\t\"\",\n\t\t\"This file provides IOSM operational context to the agent for this project.\",\n\t\t`Updated: ${nowIso}`,\n\t\t\"\",\n\t\t\"## Project Status\",\n\t\t`- Root: ${input.rootDir}`,\n\t\t`- Active cycle: ${input.cycleId ?? \"none\"}`,\n\t\t`- IOSM-Index: ${formatMetricValue(input.iosmIndex)} (Confidence: ${formatMetricValue(input.decisionConfidence)})`,\n\t\t`- Assessment: ${input.assessmentSource} · Files analyzed: ${input.filesAnalyzed ?? \"n/a\"}`,\n\t\t\"\",\n\t\t\"## Metric Scores\",\n\t\t\"| Metric | Score | Status | Priority Action |\",\n\t\t\"|--------|-------|--------|-----------------|\",\n\t];\n\n\tfor (const metric of sortedMetrics) {\n\t\tlines.push(\n\t\t\t`| ${METRIC_TITLES[metric]} | ${formatMetricValue(input.metrics[metric])} | ${metricStatus(input.metrics[metric])} | ${METRIC_ACTIONS[metric]} |`,\n\t\t);\n\t}\n\n\tlines.push(\"\", \"## Priority Actions (this cycle)\");\n\tfor (const [index, item] of priorities.entries()) {\n\t\tlines.push(\n\t\t\t`${index + 1}. **${item.title} (${formatMetricValue(item.value)} — ${metricStatus(item.value)})**: ${item.action}`,\n\t\t);\n\t}\n\n\tif (goals.length > 0) {\n\t\tlines.push(\"\", \"## Active Goals\");\n\t\tfor (const goal of goals) {\n\t\t\tlines.push(`- ${goal}`);\n\t\t}\n\t}\n\n\tlines.push(\n\t\t\"\",\n\t\t\"## IOSM Workspace\",\n\t\t`- Config: \\`iosm.yaml\\``,\n\t\t`- Metrics history: \\`.iosm/metrics-history.jsonl\\``,\n\t);\n\n\tif (input.cycleId) {\n\t\tlines.push(\n\t\t\t`- Current cycle: \\`.iosm/cycles/${input.cycleId}/\\``,\n\t\t\t` - Baseline: \\`baseline-report.json\\``,\n\t\t\t` - Hypotheses: \\`hypotheses.json\\``,\n\t\t\t` - Phase reports: \\`phase-reports/improve.json\\` etc.`,\n\t\t);\n\t}\n\n\tlines.push(\n\t\t`- Invariants: \\`.iosm/invariants.yaml\\``,\n\t\t`- Contracts: \\`.iosm/contracts.yaml\\``,\n\t\t`- Decision log: \\`.iosm/decision-log.md\\``,\n\t\t`- Pattern library: \\`.iosm/pattern-library.md\\``,\n\t);\n\n\tlines.push(\n\t\t\"\",\n\t\t\"## Agent Contract\",\n\t\t\"- At the start of each engineering turn: re-read this file and the active cycle report.\",\n\t\t\"- After each meaningful change: update metric evidence, hypotheses outcome, and phase report.\",\n\t\t\"- Gate progression requires evidence, not just code changes.\",\n\t\t\"- Phases run in order: Improve → Optimize → Shrink → Modularize.\",\n\t\t\"- Quality gates: gate_I (improve), gate_O (optimize), gate_S (shrink), gate_M (modularize).\",\n\t);\n\n\treturn `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function buildAgentsGuideDocument(input: AgentsGuideDocumentInput, existingContent?: string): string {\n\tconst nowIso = new Date().toISOString();\n\tconst goals = input.goals ?? [];\n\tconst projectName = basename(input.rootDir);\n\tconst filesSummary = `${input.filesAnalyzed ?? \"n/a\"} total · ${input.sourceFileCount ?? \"n/a\"} src · ${input.testFileCount ?? \"n/a\"} tests · ${input.docFileCount ?? \"n/a\"} docs`;\n\n\tconst managedBlock = [\n\t\tAGENTS_MANAGED_START,\n\t\t\"## IOSM Sync (managed)\",\n\t\t`- Updated: ${nowIso}`,\n\t\t`- Assessment: ${input.assessmentSource}`,\n\t\t`- Active cycle: ${input.cycleId ?? \"none\"}`,\n\t\t`- IOSM-Index: ${formatMetricValue(input.iosmIndex)} (confidence: ${formatMetricValue(input.decisionConfidence)})`,\n\t\t`- Files analyzed: ${filesSummary}`,\n\t\t\"\",\n\t\t\"### Current focus\",\n\t\t...(goals.length > 0 ? goals.map((goal) => `- ${goal}`) : [\"- Unknown\"]),\n\t\t\"\",\n\t\t\"### Notes\",\n\t\t\"- This section is auto-updated by `iosm init`/`/init`.\",\n\t\t\"- Keep project-specific contributor/agent rules outside this block.\",\n\t\tAGENTS_MANAGED_END,\n\t].join(\"\\n\");\n\n\tconst normalizedExisting = existingContent?.trim();\n\tif (normalizedExisting && normalizedExisting.length > 0) {\n\t\treturn upsertManagedBlock(normalizedExisting, AGENTS_MANAGED_START, AGENTS_MANAGED_END, managedBlock);\n\t}\n\n\tconst lines = [\n\t\t\"# AGENTS.md\",\n\t\t\"\",\n\t\t\"This file captures practical collaboration rules for human and AI agents in this repository.\",\n\t\t\"\",\n\t\t\"## Project\",\n\t\t`- Name: ${projectName}`,\n\t\t`- Root: ${input.rootDir}`,\n\t\t\"\",\n\t\t\"## Working Agreement\",\n\t\t\"- Inspect relevant files before editing.\",\n\t\t\"- Keep edits minimal and verify with targeted checks.\",\n\t\t\"- Prefer explicit commands and absolute file paths in reports.\",\n\t\t\"\",\n\t\tmanagedBlock,\n\t];\n\treturn `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function writeIosmGuideDocument(\n\tinput: IosmGuideDocumentInput,\n\toverwrite: boolean,\n): IosmGuideWriteResult {\n\tconst filePath = getIosmGuidePath(input.rootDir);\n\tconst existed = existsSync(filePath);\n\tif (existed && !overwrite) {\n\t\treturn { path: filePath, existed, written: false };\n\t}\n\twriteFileSync(filePath, buildIosmGuideDocument(input), \"utf8\");\n\treturn { path: filePath, existed, written: true };\n}\n\nexport function writeAgentsGuideDocument(\n\tinput: AgentsGuideDocumentInput,\n\toverwrite: boolean,\n): IosmGuideWriteResult {\n\tconst filePath = join(input.rootDir, \"AGENTS.md\");\n\tconst existed = existsSync(filePath);\n\tif (existed && !overwrite) {\n\t\treturn { path: filePath, existed, written: false };\n\t}\n\n\tconst existingContent = existed ? readFileSync(filePath, \"utf8\") : undefined;\n\twriteFileSync(filePath, buildAgentsGuideDocument(input, existingContent), \"utf8\");\n\treturn { path: filePath, existed, written: true };\n}\n"]}
@@ -5,7 +5,7 @@ export { inspectIosmCycle, listIosmCycles, listIosmCyclesAsync, planIosmCycle, r
5
5
  export { initIosmWorkspace, type IosmInitOptions, type IosmInitResult } from "./init.js";
6
6
  export { buildIosmAgentVerificationPrompt, buildIosmGuideAuthoringPrompt, createMetricSnapshot, extractAssistantText, formatMetricSnapshot, normalizeIosmGuideMarkdown, summarizeMetricDelta, type IosmMetricSnapshot, } from "./agent-verification.js";
7
7
  export { buildIosmAutomationPrompt, evaluateIosmAutomationProgress, hasReachedIosmTarget, resolveIosmAutomationSettings, type IosmAutomationProgress, type IosmAutomationOverrides, type IosmAutomationPromptInput, type IosmAutomationSettings, } from "./automation.js";
8
- export { buildIosmPriorityChecklist, writeIosmGuideDocument, type IosmGuideDocumentInput, type IosmPriorityChecklistItem, type IosmGuideWriteResult, } from "./guide.js";
8
+ export { buildIosmPriorityChecklist, buildAgentsGuideDocument, writeIosmGuideDocument, writeAgentsGuideDocument, type AgentsGuideDocumentInput, type IosmGuideDocumentInput, type IosmPriorityChecklistItem, type IosmGuideWriteResult, } from "./guide.js";
9
9
  export { buildIosmContextBlock, findIosmGuidePath, loadIosmContext, loadIosmContextFromPath } from "./context-loader.js";
10
10
  export { buildIosmRuntimeDirective, isLikelyIosmOperationalPrompt, normalizeIosmGoalFromPrompt, prepareIosmRuntimeContext, type IosmRuntimeDirectiveInput, } from "./runtime-context.js";
11
11
  export type { IosmApprovalStep, IosmAutomationActor, IosmBaselineReport, IosmCycleCapacityReport, IosmCycleReport, IosmCycleScope, IosmDecision, IosmEvidenceTier, IosmGateResult, IosmGuardrailViolation, IosmHypothesisCard, IosmHypothesisOutcome, IosmMetric, IosmMetricRecord, IosmMetricsHistoryEntry, IosmPhase, IosmPhasePointer, IosmPhaseReport, } from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/iosm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,EAClB,uCAAuC,EACvC,qBAAqB,EACrB,OAAO,EACP,kBAAkB,EAClB,8BAA8B,EAC9B,2BAA2B,EAC3B,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,EACjC,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AACzF,OAAO,EACN,gCAAgC,EAChC,6BAA6B,EAC7B,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,KAAK,kBAAkB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,yBAAyB,EACzB,8BAA8B,EAC9B,oBAAoB,EACpB,6BAA6B,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,0BAA0B,EAC1B,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACzH,OAAO,EACN,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,KAAK,yBAAyB,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACX,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,UAAU,EACV,gBAAgB,EAChB,uBAAuB,EACvB,SAAS,EACT,gBAAgB,EAChB,eAAe,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/iosm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,EAClB,uCAAuC,EACvC,qBAAqB,EACrB,OAAO,EACP,kBAAkB,EAClB,8BAA8B,EAC9B,2BAA2B,EAC3B,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,EACjC,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AACzF,OAAO,EACN,gCAAgC,EAChC,6BAA6B,EAC7B,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,KAAK,kBAAkB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,yBAAyB,EACzB,8BAA8B,EAC9B,oBAAoB,EACpB,6BAA6B,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACzH,OAAO,EACN,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,KAAK,yBAAyB,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACX,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,UAAU,EACV,gBAAgB,EAChB,uBAAuB,EACvB,SAAS,EACT,gBAAgB,EAChB,eAAe,GACf,MAAM,YAAY,CAAC"}
@@ -5,7 +5,7 @@ export { inspectIosmCycle, listIosmCycles, listIosmCyclesAsync, planIosmCycle, r
5
5
  export { initIosmWorkspace } from "./init.js";
6
6
  export { buildIosmAgentVerificationPrompt, buildIosmGuideAuthoringPrompt, createMetricSnapshot, extractAssistantText, formatMetricSnapshot, normalizeIosmGuideMarkdown, summarizeMetricDelta, } from "./agent-verification.js";
7
7
  export { buildIosmAutomationPrompt, evaluateIosmAutomationProgress, hasReachedIosmTarget, resolveIosmAutomationSettings, } from "./automation.js";
8
- export { buildIosmPriorityChecklist, writeIosmGuideDocument, } from "./guide.js";
8
+ export { buildIosmPriorityChecklist, buildAgentsGuideDocument, writeIosmGuideDocument, writeAgentsGuideDocument, } from "./guide.js";
9
9
  export { buildIosmContextBlock, findIosmGuidePath, loadIosmContext, loadIosmContextFromPath } from "./context-loader.js";
10
10
  export { buildIosmRuntimeDirective, isLikelyIosmOperationalPrompt, normalizeIosmGoalFromPrompt, prepareIosmRuntimeContext, } from "./runtime-context.js";
11
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/iosm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,cAAc,EACd,kBAAkB,GAiBlB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,EAClB,uCAAuC,EACvC,qBAAqB,EACrB,OAAO,EACP,kBAAkB,EAClB,8BAA8B,EAC9B,2BAA2B,EAC3B,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,mBAAmB,GAMnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAA6C,MAAM,WAAW,CAAC;AACzF,OAAO,EACN,gCAAgC,EAChC,6BAA6B,EAC7B,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,GAEpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,yBAAyB,EACzB,8BAA8B,EAC9B,oBAAoB,EACpB,6BAA6B,GAK7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,0BAA0B,EAC1B,sBAAsB,GAItB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACzH,OAAO,EACN,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,GAEzB,MAAM,sBAAsB,CAAC","sourcesContent":["export {\n\tfindIosmRootDir,\n\tloadIosmConfig,\n\tresolveIosmRootDir,\n\ttype IosmAutomationConfig,\n\ttype IosmConfig,\n\ttype IosmConfigModel,\n\ttype IosmCycleCapacityConfig,\n\ttype IosmCyclePolicyConfig,\n\ttype IosmEvidenceConfig,\n\ttype IosmGuardrailsConfig,\n\ttype IosmIndexConfig,\n\ttype IosmLearningConfig,\n\ttype IosmMetadataConfig,\n\ttype IosmMetricTargetsConfig,\n\ttype IosmPlanningConfig,\n\ttype IosmQualityGatesConfig,\n\ttype IosmReportingConfig,\n\ttype IosmStabilizationConfig,\n\ttype IosmWaiversConfig,\n} from \"./config.js\";\nexport {\n\tassessDeclineCoverage,\n\tbuildCycleBudget,\n\tcalculateDecisionConfidence,\n\tcalculateIosmIndex,\n\tcalculateIosmMetricsFromRawMeasurements,\n\tcalculateMetricDeltas,\n\tclamp01,\n\tcreateMetricRecord,\n\thasCompleteNumericMetricRecord,\n\thasCompleteTierMetricRecord,\n\tIOSM_METRICS,\n\tmergeMetricValues,\n\tnormalizeHigherIsBetter,\n\tnormalizeLowerIsBetter,\n\tvalidateGuardrails,\n} from \"./metrics.js\";\nexport {\n\tgetIosmBaselineReportPath,\n\tgetIosmBaselinesDir,\n\tgetIosmConfigPath,\n\tgetIosmContractCatalogPath,\n\tgetIosmCycleDir,\n\tgetIosmCycleReportPath,\n\tgetIosmCyclesDir,\n\tgetIosmDecisionLogPath,\n\tgetIosmGuidePath,\n\tgetIosmHypothesesPath,\n\tgetIosmInvariantCatalogPath,\n\tgetIosmMetricsHistoryPath,\n\tgetIosmPatternLibraryPath,\n\tgetIosmPhaseReportPath,\n\tgetIosmPhaseReportsDir,\n\tgetIosmWaiverRegisterPath,\n\tgetIosmWorkspaceDir,\n} from \"./paths.js\";\nexport {\n\tinspectIosmCycle,\n\tlistIosmCycles,\n\tlistIosmCyclesAsync,\n\tplanIosmCycle,\n\trecordIosmCycleHistory,\n\treadIosmCycleReport,\n\ttype IosmCycleListItem,\n\ttype IosmCycleHistoryRecordResult,\n\ttype IosmCycleStatus,\n\ttype PlannedIosmCycle,\n\ttype PlanIosmCycleOptions,\n} from \"./cycle.js\";\nexport { initIosmWorkspace, type IosmInitOptions, type IosmInitResult } from \"./init.js\";\nexport {\n\tbuildIosmAgentVerificationPrompt,\n\tbuildIosmGuideAuthoringPrompt,\n\tcreateMetricSnapshot,\n\textractAssistantText,\n\tformatMetricSnapshot,\n\tnormalizeIosmGuideMarkdown,\n\tsummarizeMetricDelta,\n\ttype IosmMetricSnapshot,\n} from \"./agent-verification.js\";\nexport {\n\tbuildIosmAutomationPrompt,\n\tevaluateIosmAutomationProgress,\n\thasReachedIosmTarget,\n\tresolveIosmAutomationSettings,\n\ttype IosmAutomationProgress,\n\ttype IosmAutomationOverrides,\n\ttype IosmAutomationPromptInput,\n\ttype IosmAutomationSettings,\n} from \"./automation.js\";\nexport {\n\tbuildIosmPriorityChecklist,\n\twriteIosmGuideDocument,\n\ttype IosmGuideDocumentInput,\n\ttype IosmPriorityChecklistItem,\n\ttype IosmGuideWriteResult,\n} from \"./guide.js\";\nexport { buildIosmContextBlock, findIosmGuidePath, loadIosmContext, loadIosmContextFromPath } from \"./context-loader.js\";\nexport {\n\tbuildIosmRuntimeDirective,\n\tisLikelyIosmOperationalPrompt,\n\tnormalizeIosmGoalFromPrompt,\n\tprepareIosmRuntimeContext,\n\ttype IosmRuntimeDirectiveInput,\n} from \"./runtime-context.js\";\nexport type {\n\tIosmApprovalStep,\n\tIosmAutomationActor,\n\tIosmBaselineReport,\n\tIosmCycleCapacityReport,\n\tIosmCycleReport,\n\tIosmCycleScope,\n\tIosmDecision,\n\tIosmEvidenceTier,\n\tIosmGateResult,\n\tIosmGuardrailViolation,\n\tIosmHypothesisCard,\n\tIosmHypothesisOutcome,\n\tIosmMetric,\n\tIosmMetricRecord,\n\tIosmMetricsHistoryEntry,\n\tIosmPhase,\n\tIosmPhasePointer,\n\tIosmPhaseReport,\n} from \"./types.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/iosm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,cAAc,EACd,kBAAkB,GAiBlB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,EAClB,uCAAuC,EACvC,qBAAqB,EACrB,OAAO,EACP,kBAAkB,EAClB,8BAA8B,EAC9B,2BAA2B,EAC3B,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,mBAAmB,GAMnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAA6C,MAAM,WAAW,CAAC;AACzF,OAAO,EACN,gCAAgC,EAChC,6BAA6B,EAC7B,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,GAEpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,yBAAyB,EACzB,8BAA8B,EAC9B,oBAAoB,EACpB,6BAA6B,GAK7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,GAKxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACzH,OAAO,EACN,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,GAEzB,MAAM,sBAAsB,CAAC","sourcesContent":["export {\n\tfindIosmRootDir,\n\tloadIosmConfig,\n\tresolveIosmRootDir,\n\ttype IosmAutomationConfig,\n\ttype IosmConfig,\n\ttype IosmConfigModel,\n\ttype IosmCycleCapacityConfig,\n\ttype IosmCyclePolicyConfig,\n\ttype IosmEvidenceConfig,\n\ttype IosmGuardrailsConfig,\n\ttype IosmIndexConfig,\n\ttype IosmLearningConfig,\n\ttype IosmMetadataConfig,\n\ttype IosmMetricTargetsConfig,\n\ttype IosmPlanningConfig,\n\ttype IosmQualityGatesConfig,\n\ttype IosmReportingConfig,\n\ttype IosmStabilizationConfig,\n\ttype IosmWaiversConfig,\n} from \"./config.js\";\nexport {\n\tassessDeclineCoverage,\n\tbuildCycleBudget,\n\tcalculateDecisionConfidence,\n\tcalculateIosmIndex,\n\tcalculateIosmMetricsFromRawMeasurements,\n\tcalculateMetricDeltas,\n\tclamp01,\n\tcreateMetricRecord,\n\thasCompleteNumericMetricRecord,\n\thasCompleteTierMetricRecord,\n\tIOSM_METRICS,\n\tmergeMetricValues,\n\tnormalizeHigherIsBetter,\n\tnormalizeLowerIsBetter,\n\tvalidateGuardrails,\n} from \"./metrics.js\";\nexport {\n\tgetIosmBaselineReportPath,\n\tgetIosmBaselinesDir,\n\tgetIosmConfigPath,\n\tgetIosmContractCatalogPath,\n\tgetIosmCycleDir,\n\tgetIosmCycleReportPath,\n\tgetIosmCyclesDir,\n\tgetIosmDecisionLogPath,\n\tgetIosmGuidePath,\n\tgetIosmHypothesesPath,\n\tgetIosmInvariantCatalogPath,\n\tgetIosmMetricsHistoryPath,\n\tgetIosmPatternLibraryPath,\n\tgetIosmPhaseReportPath,\n\tgetIosmPhaseReportsDir,\n\tgetIosmWaiverRegisterPath,\n\tgetIosmWorkspaceDir,\n} from \"./paths.js\";\nexport {\n\tinspectIosmCycle,\n\tlistIosmCycles,\n\tlistIosmCyclesAsync,\n\tplanIosmCycle,\n\trecordIosmCycleHistory,\n\treadIosmCycleReport,\n\ttype IosmCycleListItem,\n\ttype IosmCycleHistoryRecordResult,\n\ttype IosmCycleStatus,\n\ttype PlannedIosmCycle,\n\ttype PlanIosmCycleOptions,\n} from \"./cycle.js\";\nexport { initIosmWorkspace, type IosmInitOptions, type IosmInitResult } from \"./init.js\";\nexport {\n\tbuildIosmAgentVerificationPrompt,\n\tbuildIosmGuideAuthoringPrompt,\n\tcreateMetricSnapshot,\n\textractAssistantText,\n\tformatMetricSnapshot,\n\tnormalizeIosmGuideMarkdown,\n\tsummarizeMetricDelta,\n\ttype IosmMetricSnapshot,\n} from \"./agent-verification.js\";\nexport {\n\tbuildIosmAutomationPrompt,\n\tevaluateIosmAutomationProgress,\n\thasReachedIosmTarget,\n\tresolveIosmAutomationSettings,\n\ttype IosmAutomationProgress,\n\ttype IosmAutomationOverrides,\n\ttype IosmAutomationPromptInput,\n\ttype IosmAutomationSettings,\n} from \"./automation.js\";\nexport {\n\tbuildIosmPriorityChecklist,\n\tbuildAgentsGuideDocument,\n\twriteIosmGuideDocument,\n\twriteAgentsGuideDocument,\n\ttype AgentsGuideDocumentInput,\n\ttype IosmGuideDocumentInput,\n\ttype IosmPriorityChecklistItem,\n\ttype IosmGuideWriteResult,\n} from \"./guide.js\";\nexport { buildIosmContextBlock, findIosmGuidePath, loadIosmContext, loadIosmContextFromPath } from \"./context-loader.js\";\nexport {\n\tbuildIosmRuntimeDirective,\n\tisLikelyIosmOperationalPrompt,\n\tnormalizeIosmGoalFromPrompt,\n\tprepareIosmRuntimeContext,\n\ttype IosmRuntimeDirectiveInput,\n} from \"./runtime-context.js\";\nexport type {\n\tIosmApprovalStep,\n\tIosmAutomationActor,\n\tIosmBaselineReport,\n\tIosmCycleCapacityReport,\n\tIosmCycleReport,\n\tIosmCycleScope,\n\tIosmDecision,\n\tIosmEvidenceTier,\n\tIosmGateResult,\n\tIosmGuardrailViolation,\n\tIosmHypothesisCard,\n\tIosmHypothesisOutcome,\n\tIosmMetric,\n\tIosmMetricRecord,\n\tIosmMetricsHistoryEntry,\n\tIosmPhase,\n\tIosmPhasePointer,\n\tIosmPhaseReport,\n} from \"./types.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/iosm/init.ts"],"names":[],"mappings":"AAgDA,OAAO,KAAK,EAGX,cAAc,EACd,gBAAgB,EAEhB,gBAAgB,EAEhB,MAAM,YAAY,CAAC;AAiHpB,UAAU,iBAAiB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,YAAY;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAED,UAAU,cAAc;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACpB;AAoBD,UAAU,mBAAmB;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,WAAW,EAAE,cAAc,CAAC;IAC5B,kBAAkB,EAAE,cAAc,EAAE,CAAC;IACrC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,EAAE,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,kBAAkB,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7C,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC5B;AAsLD,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAyF5F;AAu5BD,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAiH9F"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/iosm/init.ts"],"names":[],"mappings":"AAgDA,OAAO,KAAK,EAGX,cAAc,EACd,gBAAgB,EAEhB,gBAAgB,EAEhB,MAAM,YAAY,CAAC;AAiHpB,UAAU,iBAAiB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,YAAY;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAED,UAAU,cAAc;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACpB;AAoBD,UAAU,mBAAmB;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,WAAW,EAAE,cAAc,CAAC;IAC5B,kBAAkB,EAAE,cAAc,EAAE,CAAC;IACrC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,EAAE,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,kBAAkB,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7C,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC5B;AAsLD,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAyF5F;AAu5BD,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsI9F"}
package/dist/iosm/init.js CHANGED
@@ -5,7 +5,7 @@ import { stringify } from "yaml";
5
5
  import { loadIosmConfig } from "./config.js";
6
6
  import { calculateDecisionConfidence, calculateIosmIndex, calculateIosmMetricsFromRawMeasurements, createMetricRecord, hasCompleteNumericMetricRecord, hasCompleteTierMetricRecord, IOSM_METRICS, } from "./metrics.js";
7
7
  import { listIosmCycles, planIosmCycle, recordIosmCycleHistory, } from "./cycle.js";
8
- import { writeIosmGuideDocument } from "./guide.js";
8
+ import { writeAgentsGuideDocument, writeIosmGuideDocument } from "./guide.js";
9
9
  import { getIosmBaselineReportPath, getIosmBaselinesDir, getIosmConfigPath, getIosmContractCatalogPath, getIosmCycleDir, getIosmCycleReportPath, getIosmCyclesDir, getIosmDecisionLogPath, getIosmHypothesesPath, getIosmInvariantCatalogPath, getIosmMetricsHistoryPath, getIosmPatternLibraryPath, getIosmPhaseReportPath, getIosmWaiverRegisterPath, getIosmWorkspaceDir, } from "./paths.js";
10
10
  import { IOSM_PHASES } from "./types.js";
11
11
  const MAX_ANALYZED_FILES = 6000;
@@ -1201,13 +1201,31 @@ export async function initIosmWorkspace(options = {}) {
1201
1201
  sourceFileCount: analysis.source_file_count,
1202
1202
  testFileCount: analysis.test_file_count,
1203
1203
  docFileCount: analysis.doc_file_count,
1204
- }, force);
1204
+ }, true);
1205
1205
  if (guideWrite.written) {
1206
1206
  markPathByExistence(guideWrite.path, guideWrite.existed, result);
1207
1207
  }
1208
1208
  else {
1209
1209
  pushUnique(result.skipped, guideWrite.path);
1210
1210
  }
1211
+ const agentsWrite = writeAgentsGuideDocument({
1212
+ rootDir,
1213
+ cycleId: result.cycle?.cycleId,
1214
+ assessmentSource: "heuristic",
1215
+ iosmIndex: heuristicIndex,
1216
+ decisionConfidence: heuristicConfidence,
1217
+ goals: analysis.goals,
1218
+ filesAnalyzed: analysis.files_analyzed,
1219
+ sourceFileCount: analysis.source_file_count,
1220
+ testFileCount: analysis.test_file_count,
1221
+ docFileCount: analysis.doc_file_count,
1222
+ }, true);
1223
+ if (agentsWrite.written) {
1224
+ markPathByExistence(agentsWrite.path, agentsWrite.existed, result);
1225
+ }
1226
+ else {
1227
+ pushUnique(result.skipped, agentsWrite.path);
1228
+ }
1211
1229
  if (result.cycle) {
1212
1230
  try {
1213
1231
  recordIosmCycleHistory(rootDir, result.cycle.cycleId);