vigiles 2.6.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/.claude-plugin/plugin.json +9 -0
  2. package/README.md +74 -129
  3. package/action.yml +143 -7
  4. package/dist/action-gate.d.ts +1 -1
  5. package/dist/action-gate.js +1 -1
  6. package/dist/adapter-conformance.d.ts +30 -0
  7. package/dist/adapter-conformance.js +153 -0
  8. package/dist/adapter-registry.d.ts +42 -0
  9. package/dist/adapter-registry.js +55 -0
  10. package/dist/adapter.d.ts +26 -0
  11. package/dist/adapter.js +16 -0
  12. package/dist/adapters/claude-code/adapter.d.ts +3 -0
  13. package/dist/adapters/claude-code/adapter.js +46 -0
  14. package/dist/{agent-result.d.ts → adapters/claude-code/agent-result.d.ts} +1 -1
  15. package/dist/adapters/claude-code/dialect.d.ts +13 -0
  16. package/dist/adapters/claude-code/dialect.js +51 -0
  17. package/dist/adapters/claude-code/egress-entry.d.ts +2 -0
  18. package/dist/adapters/claude-code/egress-entry.js +115 -0
  19. package/dist/adapters/claude-code/egress.d.ts +114 -0
  20. package/dist/adapters/claude-code/egress.js +276 -0
  21. package/dist/{eval-cache.d.ts → adapters/claude-code/eval-cache.d.ts} +1 -1
  22. package/dist/{eval-cache.js → adapters/claude-code/eval-cache.js} +1 -1
  23. package/dist/{eval.d.ts → adapters/claude-code/eval.d.ts} +28 -4
  24. package/dist/{eval.js → adapters/claude-code/eval.js} +61 -25
  25. package/dist/{harness-test.d.ts → adapters/claude-code/harness-test.d.ts} +33 -37
  26. package/dist/{harness-test.js → adapters/claude-code/harness-test.js} +124 -43
  27. package/dist/adapters/claude-code/hook-protocol.d.ts +10 -0
  28. package/dist/adapters/claude-code/hook-protocol.js +10 -0
  29. package/dist/adapters/claude-code/layout.d.ts +8 -0
  30. package/dist/adapters/claude-code/layout.js +18 -0
  31. package/dist/{mock-model.d.ts → adapters/claude-code/mock-model.d.ts} +2 -24
  32. package/dist/adapters/claude-code/model-mock.d.ts +11 -0
  33. package/dist/adapters/claude-code/model-mock.js +10 -0
  34. package/dist/adapters/claude-code/plugin-loader.d.ts +25 -0
  35. package/dist/adapters/claude-code/plugin-loader.js +19 -0
  36. package/dist/{run-hook.d.ts → adapters/claude-code/run-hook.d.ts} +50 -3
  37. package/dist/{run-hook.js → adapters/claude-code/run-hook.js} +178 -18
  38. package/dist/adapters/claude-code/run-scripts.d.ts +52 -0
  39. package/dist/adapters/claude-code/run-scripts.js +150 -0
  40. package/dist/adapters/claude-code/runtime.d.ts +16 -0
  41. package/dist/adapters/claude-code/runtime.js +39 -0
  42. package/dist/{sandbox.d.ts → adapters/claude-code/sandbox.d.ts} +10 -0
  43. package/dist/{sandbox.js → adapters/claude-code/sandbox.js} +5 -3
  44. package/dist/{skill-driver.d.ts → adapters/claude-code/skill-driver.d.ts} +1 -1
  45. package/dist/adapters/codex/adapter.d.ts +3 -0
  46. package/dist/adapters/codex/adapter.js +49 -0
  47. package/dist/adapters/codex/dialect.d.ts +10 -0
  48. package/dist/adapters/codex/dialect.js +30 -0
  49. package/dist/adapters/codex/driver.d.ts +20 -0
  50. package/dist/adapters/codex/driver.js +89 -0
  51. package/dist/adapters/codex/hook-protocol.d.ts +10 -0
  52. package/dist/adapters/codex/hook-protocol.js +18 -0
  53. package/dist/adapters/codex/layout.d.ts +16 -0
  54. package/dist/adapters/codex/layout.js +18 -0
  55. package/dist/adapters/codex/mock-model.d.ts +52 -0
  56. package/dist/adapters/codex/mock-model.js +210 -0
  57. package/dist/adapters/codex/model-mock.d.ts +11 -0
  58. package/dist/adapters/codex/model-mock.js +10 -0
  59. package/dist/adapters/codex/runtime.d.ts +38 -0
  60. package/dist/adapters/codex/runtime.js +62 -0
  61. package/dist/adapters/opencode/adapter.d.ts +3 -0
  62. package/dist/adapters/opencode/adapter.js +48 -0
  63. package/dist/adapters/opencode/dialect.d.ts +10 -0
  64. package/dist/adapters/opencode/dialect.js +36 -0
  65. package/dist/adapters/opencode/layout.d.ts +9 -0
  66. package/dist/adapters/opencode/layout.js +25 -0
  67. package/dist/adapters/opencode/model-mock.d.ts +10 -0
  68. package/dist/adapters/opencode/model-mock.js +10 -0
  69. package/dist/adapters/opencode/runtime.d.ts +9 -0
  70. package/dist/adapters/opencode/runtime.js +21 -0
  71. package/dist/claude-code.d.ts +8 -2
  72. package/dist/claude-code.js +8 -2
  73. package/dist/cli-flags.d.ts +22 -0
  74. package/dist/cli-flags.js +38 -0
  75. package/dist/cli.js +406 -206
  76. package/dist/codex.d.ts +20 -0
  77. package/dist/codex.js +36 -0
  78. package/dist/community-skills.d.ts +1 -1
  79. package/dist/community-skills.js +2 -2
  80. package/dist/core/adapter.d.ts +88 -0
  81. package/dist/core/adapter.js +3 -0
  82. package/dist/{compile.d.ts → core/compile.d.ts} +11 -2
  83. package/dist/{compile.js → core/compile.js} +68 -53
  84. package/dist/core/compose.d.ts +79 -0
  85. package/dist/core/compose.js +145 -0
  86. package/dist/core/dialect.d.ts +51 -0
  87. package/dist/core/dialect.js +3 -0
  88. package/dist/core/harness-driver.d.ts +134 -0
  89. package/dist/core/harness-driver.js +3 -0
  90. package/dist/core/hook-protocol.d.ts +28 -0
  91. package/dist/core/hook-protocol.js +3 -0
  92. package/dist/core/layout.d.ts +43 -0
  93. package/dist/core/layout.js +3 -0
  94. package/dist/core/model-mock.d.ts +27 -0
  95. package/dist/core/model-mock.js +3 -0
  96. package/dist/core/refs.d.ts +62 -0
  97. package/dist/{refs.js → core/refs.js} +49 -23
  98. package/dist/core/runtime.d.ts +38 -0
  99. package/dist/core/runtime.js +3 -0
  100. package/dist/{types.d.ts → core/types.d.ts} +29 -0
  101. package/dist/{validate.d.ts → core/validate.d.ts} +1 -1
  102. package/dist/{validate.js → core/validate.js} +41 -4
  103. package/dist/e2e.d.ts +19 -0
  104. package/dist/e2e.js +39 -0
  105. package/dist/harness-assert.d.ts +29 -14
  106. package/dist/harness-assert.js +37 -10
  107. package/dist/integration.d.ts +16 -0
  108. package/dist/integration.js +32 -0
  109. package/dist/leaderboard.d.ts +33 -0
  110. package/dist/leaderboard.js +107 -0
  111. package/dist/linting.d.ts +2 -2
  112. package/dist/linting.js +2 -2
  113. package/dist/plugin-loader.d.ts +6 -3
  114. package/dist/plugin-loader.js +101 -49
  115. package/dist/scan.d.ts +49 -0
  116. package/dist/scan.js +177 -0
  117. package/dist/setup-plan.d.ts +51 -0
  118. package/dist/setup-plan.js +85 -0
  119. package/dist/skill-test.d.ts +1 -1
  120. package/dist/skill-test.js +1 -1
  121. package/dist/test-coverage.d.ts +71 -0
  122. package/dist/test-coverage.js +228 -0
  123. package/dist/testing.d.ts +3 -3
  124. package/dist/testing.js +3 -3
  125. package/dist/unit.d.ts +17 -0
  126. package/dist/unit.js +36 -0
  127. package/hooks/refs-nudge.sh +24 -0
  128. package/package.json +30 -15
  129. package/skills/audit-feedback-loop/SKILL.md +76 -0
  130. package/skills/edit-spec/SKILL.md +131 -0
  131. package/skills/enforce-rules-format/SKILL.md +71 -0
  132. package/skills/generate-logo/SKILL.md +103 -0
  133. package/skills/generate-rule/SKILL.md +64 -0
  134. package/skills/linter-docs/clippy.md +241 -0
  135. package/skills/linter-docs/eslint.md +384 -0
  136. package/skills/linter-docs/pylint.md +288 -0
  137. package/skills/linter-docs/rubocop.md +277 -0
  138. package/skills/linter-docs/ruff.md +187 -0
  139. package/skills/linter-docs/stylelint.md +247 -0
  140. package/skills/migrate-to-spec/SKILL.md +126 -0
  141. package/skills/pr-to-lint-rule/SKILL.md +97 -0
  142. package/skills/strengthen/SKILL.md +168 -0
  143. package/skills/test-harness/SKILL.md +157 -0
  144. package/dist/action.d.ts +0 -7
  145. package/dist/action.js +0 -180
  146. package/dist/refs.d.ts +0 -44
  147. package/dist/run-scripts.d.ts +0 -20
  148. package/dist/run-scripts.js +0 -70
  149. /package/dist/{agent-result.js → adapters/claude-code/agent-result.js} +0 -0
  150. /package/dist/{agent-runtime.d.ts → adapters/claude-code/agent-runtime.d.ts} +0 -0
  151. /package/dist/{agent-runtime.js → adapters/claude-code/agent-runtime.js} +0 -0
  152. /package/dist/{egress-proxy.d.ts → adapters/claude-code/egress-proxy.d.ts} +0 -0
  153. /package/dist/{egress-proxy.js → adapters/claude-code/egress-proxy.js} +0 -0
  154. /package/dist/{eval-baseline.d.ts → adapters/claude-code/eval-baseline.d.ts} +0 -0
  155. /package/dist/{eval-baseline.js → adapters/claude-code/eval-baseline.js} +0 -0
  156. /package/dist/{judge.d.ts → adapters/claude-code/judge.d.ts} +0 -0
  157. /package/dist/{judge.js → adapters/claude-code/judge.js} +0 -0
  158. /package/dist/{mock-entry.d.ts → adapters/claude-code/mock-entry.d.ts} +0 -0
  159. /package/dist/{mock-entry.js → adapters/claude-code/mock-entry.js} +0 -0
  160. /package/dist/{mock-model.js → adapters/claude-code/mock-model.js} +0 -0
  161. /package/dist/{skill-driver.js → adapters/claude-code/skill-driver.js} +0 -0
  162. /package/dist/{skill-runtime.d.ts → adapters/claude-code/skill-runtime.d.ts} +0 -0
  163. /package/dist/{skill-runtime.js → adapters/claude-code/skill-runtime.js} +0 -0
  164. /package/dist/{stats.d.ts → adapters/claude-code/stats.d.ts} +0 -0
  165. /package/dist/{stats.js → adapters/claude-code/stats.js} +0 -0
  166. /package/dist/{compile-generator.d.ts → core/compile-generator.d.ts} +0 -0
  167. /package/dist/{compile-generator.js → core/compile-generator.js} +0 -0
  168. /package/dist/{coverage.d.ts → core/coverage.d.ts} +0 -0
  169. /package/dist/{coverage.js → core/coverage.js} +0 -0
  170. /package/dist/{doc-refs.d.ts → core/doc-refs.d.ts} +0 -0
  171. /package/dist/{doc-refs.js → core/doc-refs.js} +0 -0
  172. /package/dist/{evolve.d.ts → core/evolve.d.ts} +0 -0
  173. /package/dist/{evolve.js → core/evolve.js} +0 -0
  174. /package/dist/{frontmatter.d.ts → core/frontmatter.d.ts} +0 -0
  175. /package/dist/{frontmatter.js → core/frontmatter.js} +0 -0
  176. /package/dist/{generate-schema.d.ts → core/generate-schema.d.ts} +0 -0
  177. /package/dist/{generate-schema.js → core/generate-schema.js} +0 -0
  178. /package/dist/{generate-types.d.ts → core/generate-types.d.ts} +0 -0
  179. /package/dist/{generate-types.js → core/generate-types.js} +0 -0
  180. /package/dist/{hash.d.ts → core/hash.d.ts} +0 -0
  181. /package/dist/{hash.js → core/hash.js} +0 -0
  182. /package/dist/{inline.d.ts → core/inline.d.ts} +0 -0
  183. /package/dist/{inline.js → core/inline.js} +0 -0
  184. /package/dist/{integrity.d.ts → core/integrity.d.ts} +0 -0
  185. /package/dist/{integrity.js → core/integrity.js} +0 -0
  186. /package/dist/{linters.d.ts → core/linters.d.ts} +0 -0
  187. /package/dist/{linters.js → core/linters.js} +0 -0
  188. /package/dist/{mcp.d.ts → core/mcp.d.ts} +0 -0
  189. /package/dist/{mcp.js → core/mcp.js} +0 -0
  190. /package/dist/{orphans.d.ts → core/orphans.d.ts} +0 -0
  191. /package/dist/{orphans.js → core/orphans.js} +0 -0
  192. /package/dist/{proofs.d.ts → core/proofs.d.ts} +0 -0
  193. /package/dist/{proofs.js → core/proofs.js} +0 -0
  194. /package/dist/{session.d.ts → core/session.d.ts} +0 -0
  195. /package/dist/{session.js → core/session.js} +0 -0
  196. /package/dist/{sidecar.d.ts → core/sidecar.d.ts} +0 -0
  197. /package/dist/{sidecar.js → core/sidecar.js} +0 -0
  198. /package/dist/{spec.d.ts → core/spec.d.ts} +0 -0
  199. /package/dist/{spec.js → core/spec.js} +0 -0
  200. /package/dist/{symbols.d.ts → core/symbols.d.ts} +0 -0
  201. /package/dist/{symbols.js → core/symbols.js} +0 -0
  202. /package/dist/{test-utils.d.ts → core/test-utils.d.ts} +0 -0
  203. /package/dist/{test-utils.js → core/test-utils.js} +0 -0
  204. /package/dist/{types.js → core/types.js} +0 -0
  205. /package/{.claude-plugin/hooks → hooks}/post-edit.sh +0 -0
  206. /package/{.claude-plugin/hooks → hooks}/pre-edit.sh +0 -0
  207. /package/{.claude-plugin/hooks → hooks}/session-start.sh +0 -0
@@ -0,0 +1,9 @@
1
+ /**
2
+ * opencodeLayout — EXPERIMENTAL, internal-only. A prototype `PluginLayout` for
3
+ * OpenCode: `opencode.json` manifest/settings, `AGENTS.md`, `.opencode/`
4
+ * surfaces, `${OPENCODE_PLUGIN_ROOT}`. Validates the layout port against real
5
+ * OpenCode shapes. NOT exported / NOT registered.
6
+ */
7
+ import type { PluginLayout } from "../../core/layout.js";
8
+ export declare const opencodeLayout: PluginLayout;
9
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.opencodeLayout = void 0;
4
+ exports.opencodeLayout = {
5
+ name: "opencode",
6
+ manifestPath: "opencode.json",
7
+ // Vestigial: OpenCode hooks are JS plugin modules under `.opencode/plugin`, not
8
+ // shell-hook settings, so the shell-hook settings round-trip does NOT apply here
9
+ // (the adapter declares shellHooks:false; assertAdapterLoadsHooks is skipped).
10
+ hooksConventionPath: ".opencode/plugin",
11
+ settingsPath: "opencode.json",
12
+ settingsFormat: "json",
13
+ instructionFile: "AGENTS.md",
14
+ // OpenCode's surfaces already live UNDER `.opencode/` at the source, so they
15
+ // are NOT relocated — materializeRoot is "" (no prefix) to avoid doubling the
16
+ // `.opencode/` segment. (Contrast Claude Code: root-level `skills/` surfaces
17
+ // relocated under `.claude`.)
18
+ surfaceDirs: [".opencode/agent", ".opencode/command"],
19
+ materializeRoot: "",
20
+ pluginRootToken: "${OPENCODE_PLUGIN_ROOT}",
21
+ mcpConfigFile: "opencode.json",
22
+ mcpManifestKey: "mcp",
23
+ intraRefDirs: [".opencode/agent", ".opencode/command"],
24
+ };
25
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1,10 @@
1
+ /**
2
+ * opencodeModelMock — EXPERIMENTAL, internal-only. OpenCode is OpenAI-compatible
3
+ * and speaks the OpenAI **Chat Completions** API: a turn-consuming request hits
4
+ * `/v1/chat/completions`, with no separate count-tokens endpoint. The descriptor
5
+ * captures the wire facts; the SSE renderer is the deferred piece (built with the
6
+ * OpenCode transport tier, not declared here). NOT exported / NOT registered.
7
+ */
8
+ import type { ModelMock } from "../../core/model-mock.js";
9
+ export declare const opencodeModelMock: ModelMock;
10
+ //# sourceMappingURL=model-mock.d.ts.map
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.opencodeModelMock = void 0;
4
+ exports.opencodeModelMock = {
5
+ name: "opencode",
6
+ wireApi: "openai-chat",
7
+ modelEndpoint: "/v1/chat/completions",
8
+ // No count-tokens endpoint (countTokensEndpoint omitted).
9
+ };
10
+ //# sourceMappingURL=model-mock.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * opencodeRuntime — EXPERIMENTAL, internal-only. A prototype `HarnessRuntime` for
3
+ * OpenCode: spawn `opencode`, reach a mock via the OpenAI-compatible base-URL env.
4
+ * OpenCode is BYOM/openai-compatible, so the env-var "point at the mock" route
5
+ * fits cleanly. NOT exported / NOT registered.
6
+ */
7
+ import type { HarnessRuntime } from "../../core/runtime.js";
8
+ export declare const opencodeRuntime: HarnessRuntime;
9
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.opencodeRuntime = void 0;
4
+ exports.opencodeRuntime = {
5
+ name: "opencode",
6
+ agentBinary: "opencode",
7
+ modelBaseUrlEnv: "OPENAI_BASE_URL",
8
+ modelApiKeyEnv: "OPENAI_API_KEY",
9
+ mockApiKey: "sk-mock-opencode",
10
+ /** Env-only (OpenAI-compatible base-URL override), like Claude Code. */
11
+ wireMock(baseUrl) {
12
+ return {
13
+ args: [],
14
+ env: {
15
+ [exports.opencodeRuntime.modelBaseUrlEnv]: baseUrl,
16
+ [exports.opencodeRuntime.modelApiKeyEnv]: exports.opencodeRuntime.mockApiKey,
17
+ },
18
+ };
19
+ },
20
+ };
21
+ //# sourceMappingURL=runtime.js.map
@@ -5,6 +5,12 @@
5
5
  * `vigiles/testing` on purpose — the test API above is the stable surface; this
6
6
  * is the adapter, so a future `vigiles/<other-harness>` can sit beside it.
7
7
  */
8
- export * from "./plugin-loader.js";
9
- export * from "./mock-model.js";
8
+ export * from "./adapters/claude-code/plugin-loader.js";
9
+ export * from "./adapters/claude-code/mock-model.js";
10
+ export * from "./adapters/claude-code/dialect.js";
11
+ export * from "./adapters/claude-code/layout.js";
12
+ export * from "./adapters/claude-code/runtime.js";
13
+ export * from "./adapters/claude-code/hook-protocol.js";
14
+ export * from "./adapters/claude-code/model-mock.js";
15
+ export * from "./adapters/claude-code/adapter.js";
10
16
  //# sourceMappingURL=claude-code.d.ts.map
@@ -21,6 +21,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
21
21
  * `vigiles/testing` on purpose — the test API above is the stable surface; this
22
22
  * is the adapter, so a future `vigiles/<other-harness>` can sit beside it.
23
23
  */
24
- __exportStar(require("./plugin-loader.js"), exports);
25
- __exportStar(require("./mock-model.js"), exports);
24
+ __exportStar(require("./adapters/claude-code/plugin-loader.js"), exports);
25
+ __exportStar(require("./adapters/claude-code/mock-model.js"), exports);
26
+ __exportStar(require("./adapters/claude-code/dialect.js"), exports);
27
+ __exportStar(require("./adapters/claude-code/layout.js"), exports);
28
+ __exportStar(require("./adapters/claude-code/runtime.js"), exports);
29
+ __exportStar(require("./adapters/claude-code/hook-protocol.js"), exports);
30
+ __exportStar(require("./adapters/claude-code/model-mock.js"), exports);
31
+ __exportStar(require("./adapters/claude-code/adapter.js"), exports);
26
32
  //# sourceMappingURL=claude-code.js.map
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Command-line config overrides.
3
+ *
4
+ * The GitHub Action is a thin composite over this CLI, so every Action
5
+ * input must map to a real CLI flag (no config-file-only knobs the Action
6
+ * can't reach — see the `prod-grade-gha-cli` rule). This module turns the
7
+ * shared flags into `VigilesConfig` overrides on top of the loaded config.
8
+ *
9
+ * Pure and exported for unit testing.
10
+ */
11
+ import type { VigilesConfig } from "./core/types.js";
12
+ /**
13
+ * Apply shared command-line overrides to a loaded config.
14
+ *
15
+ * --max-rules=<n> → config.maxRules (positive integer; ignored otherwise)
16
+ * --catalog-only → config.catalogOnly = true
17
+ *
18
+ * Unknown flags are left untouched (each command parses its own besides
19
+ * these). Returns a new object; the input is not mutated.
20
+ */
21
+ export declare function applyConfigFlags(config: VigilesConfig, args: readonly string[]): VigilesConfig;
22
+ //# sourceMappingURL=cli-flags.d.ts.map
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * Command-line config overrides.
4
+ *
5
+ * The GitHub Action is a thin composite over this CLI, so every Action
6
+ * input must map to a real CLI flag (no config-file-only knobs the Action
7
+ * can't reach — see the `prod-grade-gha-cli` rule). This module turns the
8
+ * shared flags into `VigilesConfig` overrides on top of the loaded config.
9
+ *
10
+ * Pure and exported for unit testing.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.applyConfigFlags = applyConfigFlags;
14
+ const MAX_RULES = "--max-rules=";
15
+ /**
16
+ * Apply shared command-line overrides to a loaded config.
17
+ *
18
+ * --max-rules=<n> → config.maxRules (positive integer; ignored otherwise)
19
+ * --catalog-only → config.catalogOnly = true
20
+ *
21
+ * Unknown flags are left untouched (each command parses its own besides
22
+ * these). Returns a new object; the input is not mutated.
23
+ */
24
+ function applyConfigFlags(config, args) {
25
+ const next = { ...config };
26
+ const maxRulesFlag = args.find((a) => a.startsWith(MAX_RULES));
27
+ if (maxRulesFlag) {
28
+ const n = Number(maxRulesFlag.slice(MAX_RULES.length));
29
+ if (Number.isInteger(n) && n > 0) {
30
+ next.maxRules = n;
31
+ }
32
+ }
33
+ if (args.includes("--catalog-only")) {
34
+ next.catalogOnly = true;
35
+ }
36
+ return next;
37
+ }
38
+ //# sourceMappingURL=cli-flags.js.map