@aperant/framework 0.7.0 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/CHANGELOG.md +180 -0
  2. package/agents/apt-planner.md +12 -0
  3. package/agents/apt-pr-review-fixer.md +13 -9
  4. package/bin/apt-tools.mjs +7 -0
  5. package/dist/cli/ci-watch/stop-matrix.d.mts.map +1 -1
  6. package/dist/cli/ci-watch/stop-matrix.mjs +16 -0
  7. package/dist/cli/ci-watch/stop-matrix.mjs.map +1 -1
  8. package/dist/cli/commands/ci-watch.d.mts +11 -0
  9. package/dist/cli/commands/ci-watch.d.mts.map +1 -1
  10. package/dist/cli/commands/ci-watch.mjs +108 -2
  11. package/dist/cli/commands/ci-watch.mjs.map +1 -1
  12. package/dist/cli/commands/features-audit.d.mts +24 -0
  13. package/dist/cli/commands/features-audit.d.mts.map +1 -1
  14. package/dist/cli/commands/features-audit.mjs +159 -5
  15. package/dist/cli/commands/features-audit.mjs.map +1 -1
  16. package/dist/cli/commands/health-check.d.mts +16 -0
  17. package/dist/cli/commands/health-check.d.mts.map +1 -1
  18. package/dist/cli/commands/health-check.mjs +118 -2
  19. package/dist/cli/commands/health-check.mjs.map +1 -1
  20. package/dist/cli/commands/init.d.mts +9 -0
  21. package/dist/cli/commands/init.d.mts.map +1 -1
  22. package/dist/cli/commands/init.mjs +49 -4
  23. package/dist/cli/commands/init.mjs.map +1 -1
  24. package/dist/cli/commands/modes.d.mts.map +1 -1
  25. package/dist/cli/commands/modes.mjs +11 -0
  26. package/dist/cli/commands/modes.mjs.map +1 -1
  27. package/dist/cli/commands/pr-review-audit-fixer.d.mts +13 -0
  28. package/dist/cli/commands/pr-review-audit-fixer.d.mts.map +1 -1
  29. package/dist/cli/commands/pr-review-audit-fixer.mjs +18 -5
  30. package/dist/cli/commands/pr-review-audit-fixer.mjs.map +1 -1
  31. package/dist/cli/commands/task.d.mts.map +1 -1
  32. package/dist/cli/commands/task.mjs +84 -5
  33. package/dist/cli/commands/task.mjs.map +1 -1
  34. package/dist/cli/commands/validate-evidence.d.mts +24 -2
  35. package/dist/cli/commands/validate-evidence.d.mts.map +1 -1
  36. package/dist/cli/commands/validate-evidence.mjs +154 -17
  37. package/dist/cli/commands/validate-evidence.mjs.map +1 -1
  38. package/dist/cli/commands/vitest-doctor.d.mts +2 -0
  39. package/dist/cli/commands/vitest-doctor.d.mts.map +1 -0
  40. package/dist/cli/commands/vitest-doctor.mjs +168 -0
  41. package/dist/cli/commands/vitest-doctor.mjs.map +1 -0
  42. package/dist/cli/config/gitignore-drift.d.mts +23 -1
  43. package/dist/cli/config/gitignore-drift.d.mts.map +1 -1
  44. package/dist/cli/config/gitignore-drift.mjs +81 -3
  45. package/dist/cli/config/gitignore-drift.mjs.map +1 -1
  46. package/dist/cli/config/load.d.mts +56 -2
  47. package/dist/cli/config/load.d.mts.map +1 -1
  48. package/dist/cli/config/load.mjs +192 -2
  49. package/dist/cli/config/load.mjs.map +1 -1
  50. package/dist/cli/consistency/parse-review.mjs +7 -0
  51. package/dist/cli/consistency/parse-review.mjs.map +1 -1
  52. package/dist/cli/dispatch.d.mts.map +1 -1
  53. package/dist/cli/dispatch.mjs +24 -2
  54. package/dist/cli/dispatch.mjs.map +1 -1
  55. package/dist/cli/gate/gates/gitignore-in-sync.d.mts +1 -1
  56. package/dist/cli/gate/gates/gitignore-in-sync.d.mts.map +1 -1
  57. package/dist/cli/gate/gates/gitignore-in-sync.mjs +5 -2
  58. package/dist/cli/gate/gates/gitignore-in-sync.mjs.map +1 -1
  59. package/dist/cli/gate/gates/review-clean.d.mts +5 -1
  60. package/dist/cli/gate/gates/review-clean.d.mts.map +1 -1
  61. package/dist/cli/gate/gates/review-clean.mjs +23 -18
  62. package/dist/cli/gate/gates/review-clean.mjs.map +1 -1
  63. package/dist/cli/gate/gates/verify-approved.d.mts +49 -1
  64. package/dist/cli/gate/gates/verify-approved.d.mts.map +1 -1
  65. package/dist/cli/gate/gates/verify-approved.mjs +93 -14
  66. package/dist/cli/gate/gates/verify-approved.mjs.map +1 -1
  67. package/dist/cli/help.d.mts.map +1 -1
  68. package/dist/cli/help.mjs +7 -2
  69. package/dist/cli/help.mjs.map +1 -1
  70. package/dist/cli/install/runtime-detect.d.mts +13 -0
  71. package/dist/cli/install/runtime-detect.d.mts.map +1 -1
  72. package/dist/cli/install/runtime-detect.mjs +9 -0
  73. package/dist/cli/install/runtime-detect.mjs.map +1 -1
  74. package/dist/cli/task/index-md.d.mts.map +1 -1
  75. package/dist/cli/task/index-md.mjs +14 -2
  76. package/dist/cli/task/index-md.mjs.map +1 -1
  77. package/dist/plugin/.claude-plugin/plugin.json +11 -2
  78. package/dist/plugin/agents/apt-improver.md +99 -0
  79. package/dist/plugin/agents/apt-planner.md +127 -10
  80. package/dist/plugin/agents/apt-pr-review-fixer.md +13 -9
  81. package/dist/plugin/skills/apt/SKILL.md +1 -0
  82. package/dist/plugin/skills/apt-close-task/SKILL.md +63 -1
  83. package/dist/plugin/skills/apt-debug/SKILL.md +39 -6
  84. package/dist/plugin/skills/apt-debug/appendices/diagnose-discipline.md +119 -0
  85. package/dist/plugin/skills/apt-diagram/SKILL.md +378 -0
  86. package/dist/plugin/skills/apt-diagram/appendices/design-discipline.md +97 -0
  87. package/dist/plugin/skills/apt-discuss/SKILL.md +72 -5
  88. package/dist/plugin/skills/apt-discuss/appendices/grill-discipline.md +104 -0
  89. package/dist/plugin/skills/apt-discuss/appendices/zoom-out-helper.md +79 -0
  90. package/dist/plugin/skills/apt-execute/SKILL.md +57 -5
  91. package/dist/plugin/skills/apt-execute/appendices/tdd-mode.md +107 -0
  92. package/dist/plugin/skills/apt-improve/DEEPENING.md +84 -0
  93. package/dist/plugin/skills/apt-improve/INTERFACE-DESIGN.md +97 -0
  94. package/dist/plugin/skills/apt-improve/LANGUAGE.md +104 -0
  95. package/dist/plugin/skills/apt-improve/SKILL.md +141 -0
  96. package/dist/plugin/skills/apt-plan/SKILL.md +171 -4
  97. package/dist/plugin/skills/apt-plan/adapters/conductor.md +98 -0
  98. package/dist/plugin/skills/apt-pr-review/SKILL.md +57 -18
  99. package/dist/plugin/skills/apt-prototype/LOGIC.md +109 -0
  100. package/dist/plugin/skills/apt-prototype/SKILL.md +143 -0
  101. package/dist/plugin/skills/apt-prototype/UI.md +90 -0
  102. package/dist/plugin/skills/apt-quick/SKILL.md +49 -8
  103. package/dist/plugin/skills/apt-release-notes/SKILL.md +193 -0
  104. package/dist/plugin/skills/apt-release-notes/appendices/persona-voice.md +59 -0
  105. package/dist/plugin/skills/apt-review/SKILL.md +2 -0
  106. package/dist/plugin/skills/apt-run/SKILL.md +32 -4
  107. package/dist/plugin/skills/apt-setup/SKILL.md +308 -6
  108. package/dist/plugin/skills/apt-ship/SKILL.md +122 -1
  109. package/dist/plugin/skills/apt-spar/SKILL.md +315 -0
  110. package/dist/plugin/skills/apt-triage/AGENT-BRIEF.md +84 -0
  111. package/dist/plugin/skills/apt-triage/OUT-OF-SCOPE.md +75 -0
  112. package/dist/plugin/skills/apt-triage/SKILL.md +169 -0
  113. package/dist/plugin/skills/apt-update/SKILL.md +77 -10
  114. package/dist/plugin/skills/apt-verify/SKILL.md +3 -0
  115. package/dist/plugin/skills/apt-verify-proof/SKILL.md +10 -5
  116. package/dist/plugin/skills/apt-watch-ci/SKILL.md +166 -0
  117. package/dist/plugin/skills/apt-zoom-out/SKILL.md +130 -0
  118. package/package.json +133 -133
  119. package/prompts/conductor-framework-context.md +63 -0
  120. package/prompts/conductor-system.md +11 -0
  121. package/skills/apt-close-task/SKILL.md +1 -0
  122. package/skills/apt-discuss/SKILL.md +47 -5
  123. package/skills/apt-execute/SKILL.md +9 -0
  124. package/skills/apt-plan/SKILL.md +12 -0
  125. package/skills/apt-pr-review/SKILL.md +11 -2
  126. package/skills/apt-quick/SKILL.md +19 -8
  127. package/skills/apt-researcher.md +1 -0
  128. package/skills/apt-setup/SKILL.md +33 -2
  129. package/skills/apt-verify-proof/SKILL.md +7 -5
  130. package/src/cli/ci-watch/stop-matrix.mjs +17 -0
  131. package/src/cli/commands/ci-watch.mjs +113 -2
  132. package/src/cli/commands/features-audit.mjs +164 -5
  133. package/src/cli/commands/health-check.mjs +115 -2
  134. package/src/cli/commands/init.mjs +52 -4
  135. package/src/cli/commands/modes.mjs +11 -0
  136. package/src/cli/commands/pr-review-audit-fixer.mjs +18 -5
  137. package/src/cli/commands/task.mjs +83 -5
  138. package/src/cli/commands/validate-evidence.mjs +158 -17
  139. package/src/cli/commands/vitest-doctor.mjs +173 -0
  140. package/src/cli/config/gitignore-drift.mjs +74 -3
  141. package/src/cli/config/load.mjs +188 -2
  142. package/src/cli/consistency/parse-review.mjs +6 -0
  143. package/src/cli/dispatch.mjs +23 -2
  144. package/src/cli/gate/gates/gitignore-in-sync.mjs +5 -2
  145. package/src/cli/gate/gates/review-clean.mjs +24 -19
  146. package/src/cli/gate/gates/verify-approved.mjs +97 -14
  147. package/src/cli/help.mjs +7 -2
  148. package/src/cli/install/runtime-detect.mjs +9 -0
  149. package/src/cli/task/index-md.mjs +15 -2
  150. package/templates/config.json +2 -7
  151. package/workflows/verify-proof.md +8 -3
@@ -33,6 +33,11 @@ import { MANIFEST_FILENAME } from './manifest.mjs'
33
33
  * target mapped to a host CLI (e.g. `pi`,
34
34
  * which has a detectable host but no apt
35
35
  * install root of its own).
36
+ * @property {string} [displayLabel] Optional user-facing label (e.g. "Kilo Code").
37
+ * When unset, callers fall back to the
38
+ * capitalized form of `id`. Use for runtimes
39
+ * whose product branding differs from the
40
+ * internal id (C58: `kilo` → "Kilo Code").
36
41
  */
37
42
 
38
43
  /** @type {RuntimeDescriptor[]} */
@@ -78,6 +83,10 @@ export const RUNTIMES = Object.freeze([
78
83
  installRoot: '.kilo',
79
84
  markers: ['.kilo/config.json'],
80
85
  cliId: 'kilo',
86
+ // C58 (0.7.2): user-visible label. Internal id stays `kilo` (zero
87
+ // migration per spec ID-01). `--kilocode` is also accepted as a
88
+ // deprecated alias of `--kilo` at the CLI flag parser layer.
89
+ displayLabel: 'Kilo Code',
81
90
  },
82
91
  {
83
92
  id: 'copilot',
@@ -4,6 +4,7 @@
4
4
 
5
5
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'
6
6
  import { join } from 'node:path'
7
+ import { loadMergedProjectConfig } from '../config/load.mjs'
7
8
  import { withFileLock } from '../util/fs-lock.mjs'
8
9
  import { formatDateDisplay, formatTimeDisplay } from './format.mjs'
9
10
 
@@ -15,8 +16,20 @@ export function regenerateTaskIndex(targetDir) {
15
16
  const statePath = join(targetDir, '.aperant', 'state.json')
16
17
  if (!existsSync(statePath)) return
17
18
 
18
- const configPath = join(targetDir, '.aperant', 'config.json')
19
- const config = existsSync(configPath) ? JSON.parse(readFileSync(configPath, 'utf-8')) : {}
19
+ // AUDIT-001: read through the merged loader so per-device
20
+ // preferences.date_format / preferences.time_format overrides land
21
+ // even when the shared config.json no longer carries those fields.
22
+ // Guard: malformed config.local.json must not crash every task state
23
+ // transition — fall back to shared-config-only read and warn on stderr.
24
+ let config
25
+ try {
26
+ config = loadMergedProjectConfig(targetDir) ?? {}
27
+ } catch (e) {
28
+ process.stderr.write(
29
+ `[index-md] config.local.json parse error — using shared config only: ${e.message}\n`,
30
+ )
31
+ config = {}
32
+ }
20
33
  if (config.preferences?.task_index === false) return
21
34
 
22
35
  const state = JSON.parse(readFileSync(statePath, 'utf-8'))
@@ -39,7 +39,6 @@
39
39
  "safe_paths": ["**/*.css", "**/*.md", "**/*.test.*", "**/*.spec.*"]
40
40
  },
41
41
  "verification": {
42
- "open_report": true,
43
42
  "report_formats": ["html", "md"],
44
43
  "evidence_capture": true,
45
44
  "max_iterations": 3,
@@ -47,8 +46,7 @@
47
46
  },
48
47
  "multi_model": {
49
48
  "cross_verification": {
50
- "enabled": false,
51
- "tools": []
49
+ "enabled": false
52
50
  },
53
51
  "video_review": {
54
52
  "enabled": false,
@@ -92,14 +90,11 @@
92
90
  "cleanup_on_close": "ask"
93
91
  },
94
92
  "preferences": {
95
- "date_format": "YY-MM-DD",
96
- "time_format": "24h",
97
93
  "task_index": true,
98
94
  "health_check": {
99
95
  "enabled": false,
100
96
  "interval_minutes": 30
101
- },
102
- "quick_task_post_verify": "ask"
97
+ }
103
98
  },
104
99
  "orchestration": {
105
100
  "phase_delegation": "auto",
@@ -21,10 +21,15 @@ OUTPUT FORMAT: verification.json (NOT VERIFICATION.md). JSON is the source of tr
21
21
  <step name="load_config" priority="first">
22
22
  ## 1. Load Config and Context
23
23
 
24
- Read `.aperant/config.json` for verification preferences:
24
+ Read the merged Aperant config for verification preferences (AUDIT-001 — the per-device `verification.open_report` field lives in `.aperant/config.local.json`; the rest in shared `.aperant/config.json`). Use the framework's merged loader so local overrides win:
25
25
  ```bash
26
- cat .aperant/config.json 2>/dev/null || echo "{}"
26
+ node .aperant/deps/node_modules/@aperant/framework/bin/apt-tools.mjs config read . 2>/dev/null || echo "{}"
27
27
  ```
28
+ If `apt-tools config read` is unavailable, fall back to overlaying the two files in JS:
29
+ ```bash
30
+ node -e "const fs=require('fs'); const s=(p)=>{try{return JSON.parse(fs.readFileSync(p,'utf-8'))}catch{return {}}}; function merge(a,b){if(a===null||typeof a!=='object'||Array.isArray(a))return b;if(b===null||typeof b!=='object'||Array.isArray(b))return b;const out={...a};for(const k of Object.keys(b))out[k]=(k in a)?merge(a[k],b[k]):b[k];return out}; const merged=merge(s('.aperant/config.json'),s('.aperant/config.local.json')); console.log(JSON.stringify(merged))"
31
+ ```
32
+ Do NOT read `.aperant/config.json` directly — that misses per-device overrides like `verification.open_report` and `multi_model.cross_verification.tools`.
28
33
 
29
34
  Read project constitution:
30
35
  ```bash
@@ -396,7 +401,7 @@ ln -sf "${PROOF_DIR}/report.html" .aperant/proof-report.html
396
401
  <step name="open_report">
397
402
  ## 11. Open Report
398
403
 
399
- If `config.verification.open_report` is true (default):
404
+ Read `verification.open_report` from the MERGED config (per-device override lives in `.aperant/config.local.json` per AUDIT-001; do not read raw `.aperant/config.json`). If true (default):
400
405
  ```bash
401
406
  open "${PROOF_DIR}/report.html"
402
407
  ```