paqad-ai 1.35.0 → 1.37.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.
- package/CHANGELOG.md +44 -0
- package/README.md +14 -13
- package/dist/cli/index.js +100 -20
- package/dist/cli/index.js.map +1 -1
- package/dist/feature-development-policy-CIONDrnC.d.ts +904 -0
- package/dist/index.d.ts +39 -908
- package/dist/index.js +189 -24
- package/dist/index.js.map +1 -1
- package/dist/kernel/gate.d.ts +18 -0
- package/dist/kernel/gate.js +5096 -196
- package/dist/kernel/gate.js.map +1 -1
- package/dist/ledger-B8xJoc5g.d.ts +17 -0
- package/dist/rule-scripts/index.js +4 -1
- package/dist/rule-scripts/index.js.map +1 -1
- package/dist/session-ledger/disabled-audit.d.ts +1 -4
- package/dist/stage-evidence/live-writer.d.ts +62 -0
- package/dist/stage-evidence/live-writer.js +780 -0
- package/dist/stage-evidence/live-writer.js.map +1 -0
- package/dist/stage-evidence/marker-parse.d.ts +31 -0
- package/dist/stage-evidence/marker-parse.js +780 -0
- package/dist/stage-evidence/marker-parse.js.map +1 -0
- package/dist/stage-evidence/narration.d.ts +25 -0
- package/dist/stage-evidence/narration.js +510 -0
- package/dist/stage-evidence/narration.js.map +1 -0
- package/dist/stages-B7UsgmYR.d.ts +12 -0
- package/package.json +3 -3
- package/runtime/AGENT-BOOTSTRAP.md +15 -0
- package/runtime/hooks/capability-gate.mjs +48 -8
- package/runtime/hooks/stage-marker-parse.mjs +62 -0
- package/runtime/hooks/stage-writer.mjs +69 -0
- package/runtime/hooks/verification-record.mjs +85 -16
- package/runtime/scripts/verify-backstop.mjs +10 -2
- package/runtime/templates/agent-configs/aiassistant.md.hbs +8 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
# paqad-ai
|
|
2
2
|
|
|
3
|
+
## 1.37.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 0d8b0db: Extend the enforcement record tier from Claude-only to Codex and Gemini, and document the honest cross-provider tier ladder (issue #265).
|
|
8
|
+
|
|
9
|
+
The stage writer and pre-edit block are Claude-only by physics (only Claude Code exposes a pre-mutation hook). But the _ledger_ half of the fix is portable to any host with a completion hook, so it now binds on Codex and Gemini too:
|
|
10
|
+
|
|
11
|
+
- **Codex / Gemini record their `paqad:stage` markers at turn end.** The record-only completion hook (`verification-record.mjs`, wired on Codex `Stop` and Gemini `AfterAgent`) now parses the agent's stage markers from the turn transcript and writes them to the same stage-evidence ledger the completion verify folds. Each row is attributed to the host that ran (`codex-cli` / `gemini-cli`), passed to the hook as an argv — never mislabelled `claude-code`. Codex reads its `transcript_path`; Gemini falls back to the inline `prompt_response` because its `transcript_path` is currently stubbed empty upstream ([google-gemini/gemini-cli#14715](https://github.com/google-gemini/gemini-cli/issues/14715)). The parser degrades gracefully to a raw-text scan when a transcript format is not the Claude JSONL shape.
|
|
12
|
+
- **Record-only, by design.** These hooks still always exit 0 and stay silent — there is **no in-chat verdict** on Codex/Gemini, because Codex rejects plain text on `Stop` and Gemini forces a retry on `decision: deny`, so the only non-disruptive channel is the ledger. The verdict is visible via the dashboard / SIEM export, never shoved into the chat.
|
|
13
|
+
- **No pre-edit block, stated plainly.** Codex/Gemini have no pre-mutation seam, so the hard block stays Claude-only. `docs/verification-enforcement.md` now carries a cross-provider guarantee table (hard block + verdict = Claude; record + ledger = Codex/Gemini; advisory = the 8 remaining hosts) and tracks the non-Claude hard block as a known, physics-bounded, upstream-blocked limitation.
|
|
14
|
+
- **The mandate holds:** enforcement is never added through an entry-file, prompt, or template edit. A parity test asserts the stage-writer and pre-mutation deny hooks are present for `claude-code` and absent for `codex-cli` / `gemini-cli` and every advisory host.
|
|
15
|
+
|
|
16
|
+
## 1.36.0
|
|
17
|
+
|
|
18
|
+
### Minor Changes
|
|
19
|
+
|
|
20
|
+
- 69ab154: Add a native `aiassistant` adapter for JetBrains AI Assistant (#219).
|
|
21
|
+
|
|
22
|
+
- Onboarding and `paqad-ai refresh --providers` now generate and keep in sync `.aiassistant/rules/guidelines.md`, the lean bootstrap-pointer entry file AI Assistant auto-applies from `.aiassistant/rules/`.
|
|
23
|
+
- Soft, rules-only adapter (advisory hook coverage), like `junie`: AI Assistant exposes no hook/lifecycle system, so the sentinel gate cannot bind. MCP is intentionally omitted — AI Assistant configures MCP servers in the IDE, not a project file, so no dead artifact is written.
|
|
24
|
+
- The adapter is selectable everywhere the other ten are (onboarding prompt, `--providers`, factory), carries its Decision Pause Contract UI note, and is covered by tests parallel to `junie`.
|
|
25
|
+
- Also synced the `onboarding-manifest` schema `adapter` enum to the full adapter list (it had silently drifted to five, so a `cursor`/`aider`-onboarded manifest failed health-check validation).
|
|
26
|
+
|
|
27
|
+
- 69ab154: Make the feature-development stage workflow **compel, not plead** (enforcement RCA, part 1 of the fix).
|
|
28
|
+
|
|
29
|
+
The stage-evidence recorder finally has a production caller, and a code edit is now blocked until the prior stages are recorded — closing the physics gaps that let every prior fix (#117–#261) regress.
|
|
30
|
+
|
|
31
|
+
- **Deterministic per-stage writer.** A new Claude PreToolUse hook (`stage-writer.mjs` → `src/stage-evidence/live-writer.ts`) script-mints a `live-mark` stage row on every Edit/Write/NotebookEdit, with real start/end times classified from the mutated file — no model involvement. The completion finalizer closes any stage left open at the turn boundary.
|
|
32
|
+
- **Block-forward deny.** A `stages` capability folded into the kernel evaluates at the pre-mutation seam and refuses an edit (exit 2, reason on stderr) until `planning` and `specification` each carry a recorded start+end pair. It reads the ledger, not a git delta, so a committed clean tree cannot bypass it. `se-mark` (a Bash script, ungated) is the escape hatch that clears the block.
|
|
33
|
+
- **Visible, non-vacuous verdict.** The Stop backstop now writes a failing verdict to **stderr** (the host surfaces only stderr to the model on exit 2), and the stage gate no longer skips on a zero-file working-tree diff — a committed-but-incomplete change still fails instead of passing silently.
|
|
34
|
+
|
|
35
|
+
Claude-only for the hard block (the only host with a pre-mutation seam); Codex/Gemini keep completion-time recording; other adapters are unchanged. Default `stages_mode` is strict.
|
|
36
|
+
|
|
37
|
+
- 69ab154: Wire the last three enforcement consumers so the framework is felt, not just recorded (enforcement RCA, part 2 of the fix).
|
|
38
|
+
|
|
39
|
+
Building on the stage writer and block-forward deny, three contracts that shipped with a policy but no live consumer now bind through the kernel:
|
|
40
|
+
|
|
41
|
+
- **Delivery policy is enforced.** A `delivery` capability at the completion (Stop) seam reads HEAD branch/commit and — when `gh` can answer — the PR/CI state, then **warns** on a convention deviation (on the base branch, an off-convention branch name, red CI under `wait_for_green`) and appends a `delivery-evidence` row. Warn-floor by design: delivery is `mandatory:false`, so it surfaces a bad push one turn late but never blocks. Degrades cleanly when `gh` is absent.
|
|
42
|
+
- **The stage is printed on entry.** The stage-writer PreToolUse hook now prints a plain-English `▸ paqad · <stage>` line (via Claude's user-visible `systemMessage` channel) the first time a change enters each stage, so the developer sees the workflow running even when the model forgets to say it. Claude-only (the sole pre-mutation host); idempotent per change.
|
|
43
|
+
- **The Decision Pause Contract self-arms.** An opt-in pre-mutation capability reads the recent prompt from the turn transcript and, on a high-confidence create-vs-reuse fork with no decision pending or already made, mints ONE pending decision packet so the existing decision-pause gate blocks the _next_ edit — closing the "nothing mints the packet" gap. **Off by default** (enable with `PAQAD_DECISION_SELFARM` or a local `.config` `decision_selfarm` line); it only mints, never blocks, so the current edit is never interrupted.
|
|
44
|
+
|
|
45
|
+
The kernel gate now threads an optional tool/turn payload (edit target, transcript path, session id) to each capability; every existing capability ignores it. Coverage stays at the 95% branch gate.
|
|
46
|
+
|
|
3
47
|
## 1.35.0
|
|
4
48
|
|
|
5
49
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
[](https://nodejs.org)
|
|
21
21
|
[](https://paqad.ai)
|
|
22
22
|
|
|
23
|
-
Works with Claude Code, Cursor, GitHub Copilot, Gemini, Codex, Windsurf, Junie, Continue, Antigravity, and
|
|
23
|
+
Works with Claude Code, Cursor, GitHub Copilot, Gemini, Codex, Windsurf, Junie, Continue, Antigravity, Aider, and JetBrains AI Assistant.
|
|
24
24
|
|
|
25
25
|
</div>
|
|
26
26
|
|
|
@@ -140,18 +140,19 @@ Three steps turn AI coding from a prompt you hope works into a pipeline you can
|
|
|
140
140
|
|
|
141
141
|
Run `paqad-ai onboard` one time. It writes a thin, native config file for each tool you use, and they all point at the same shared instruction bundle. Change a rule in one place, and every agent sees it. Switch tools next month without losing anything.
|
|
142
142
|
|
|
143
|
-
| Tool
|
|
144
|
-
|
|
|
145
|
-
| **Claude Code**
|
|
146
|
-
| **Codex CLI**
|
|
147
|
-
| **Google Antigravity**
|
|
148
|
-
| **Gemini CLI**
|
|
149
|
-
| **Junie**
|
|
150
|
-
| **Cursor**
|
|
151
|
-
| **GitHub Copilot**
|
|
152
|
-
| **Windsurf**
|
|
153
|
-
| **Continue**
|
|
154
|
-
| **Aider**
|
|
143
|
+
| Tool | What it creates |
|
|
144
|
+
| -------------------------- | -------------------------------------------------------- |
|
|
145
|
+
| **Claude Code** | `CLAUDE.md` and MCP config |
|
|
146
|
+
| **Codex CLI** | `AGENTS.md` and MCP config |
|
|
147
|
+
| **Google Antigravity** | `ANTIGRAVITY.md` and MCP config |
|
|
148
|
+
| **Gemini CLI** | `GEMINI.md` and MCP config |
|
|
149
|
+
| **Junie** | `.junie/AGENTS.md` and `.junie/mcp/mcp.json` |
|
|
150
|
+
| **Cursor** | `.cursor/rules/paqad.mdc` plus MCP, skills, agents |
|
|
151
|
+
| **GitHub Copilot** | `.github/copilot-instructions.md` and `.vscode/mcp.json` |
|
|
152
|
+
| **Windsurf** | `.windsurfrules` plus MCP, skills, agents |
|
|
153
|
+
| **Continue** | `.continue/rules/paqad.md` plus MCP, prompts |
|
|
154
|
+
| **Aider** | `CONVENTIONS.md` |
|
|
155
|
+
| **JetBrains AI Assistant** | `.aiassistant/rules/guidelines.md` |
|
|
155
156
|
|
|
156
157
|
Pick one or pick all. Onboarding is multi-select.
|
|
157
158
|
|
package/dist/cli/index.js
CHANGED
|
@@ -2992,7 +2992,19 @@ var init_onboarding_manifest_schema = __esm({
|
|
|
2992
2992
|
framework_version: { type: "string" },
|
|
2993
2993
|
adapter: {
|
|
2994
2994
|
type: "string",
|
|
2995
|
-
enum: [
|
|
2995
|
+
enum: [
|
|
2996
|
+
"claude-code",
|
|
2997
|
+
"codex-cli",
|
|
2998
|
+
"antigravity",
|
|
2999
|
+
"gemini-cli",
|
|
3000
|
+
"junie",
|
|
3001
|
+
"cursor",
|
|
3002
|
+
"github-copilot",
|
|
3003
|
+
"windsurf",
|
|
3004
|
+
"continue",
|
|
3005
|
+
"aider",
|
|
3006
|
+
"aiassistant"
|
|
3007
|
+
]
|
|
2996
3008
|
},
|
|
2997
3009
|
project_root: { type: "string" },
|
|
2998
3010
|
profile: { $ref: "project-profile" },
|
|
@@ -9742,10 +9754,21 @@ function hookCommand(hookFile, env = process.env) {
|
|
|
9742
9754
|
function capabilityGateCommand(seam, env = process.env) {
|
|
9743
9755
|
return `${hookCommand("capability-gate.mjs", env)} ${seam}`;
|
|
9744
9756
|
}
|
|
9745
|
-
function completionRecordCommand(env = process.env) {
|
|
9746
|
-
|
|
9757
|
+
function completionRecordCommand(adapterType, env = process.env) {
|
|
9758
|
+
const base = hookCommand("verification-record.mjs", env);
|
|
9759
|
+
return adapterType ? `${base} ${adapterType}` : base;
|
|
9747
9760
|
}
|
|
9748
9761
|
var PAQAD_LIVE_HOOKS = [
|
|
9762
|
+
{
|
|
9763
|
+
id: "stage-writer",
|
|
9764
|
+
event: "pre-tool-mutation",
|
|
9765
|
+
hookFile: "stage-writer.mjs",
|
|
9766
|
+
mutatingToolMatcher: PAQAD_MUTATING_TOOL_MATCHER,
|
|
9767
|
+
// A non-blocking WRITER, not a gate. Ordered first so a live-mark stage row
|
|
9768
|
+
// exists on disk before the decision-pause / capability gates read the change
|
|
9769
|
+
// (RCA fix A — gives the stage-evidence recorder its production caller).
|
|
9770
|
+
description: "Script-mint per-stage live-mark rows on every mutating edit (RCA fix A)."
|
|
9771
|
+
},
|
|
9749
9772
|
{
|
|
9750
9773
|
id: "decision-pause-gate",
|
|
9751
9774
|
event: "pre-tool-mutation",
|
|
@@ -9753,6 +9776,15 @@ var PAQAD_LIVE_HOOKS = [
|
|
|
9753
9776
|
mutatingToolMatcher: PAQAD_MUTATING_TOOL_MATCHER,
|
|
9754
9777
|
description: "Block mutating tools while a decision packet is unresolved (#117 C-3)."
|
|
9755
9778
|
},
|
|
9779
|
+
{
|
|
9780
|
+
id: "stage-marker-parse",
|
|
9781
|
+
event: "completion",
|
|
9782
|
+
hookFile: "stage-marker-parse.mjs",
|
|
9783
|
+
// Ordered before verification-completion so the non-mutation stage markers
|
|
9784
|
+
// (planning/specification/review) are in the ledger when the completion
|
|
9785
|
+
// backstop folds the change (RCA fix, Step 3). Non-blocking, best-effort.
|
|
9786
|
+
description: "Record the agent\u2019s paqad:stage markers from the transcript on completion."
|
|
9787
|
+
},
|
|
9756
9788
|
{
|
|
9757
9789
|
id: "verification-completion",
|
|
9758
9790
|
event: "completion",
|
|
@@ -9761,7 +9793,7 @@ var PAQAD_LIVE_HOOKS = [
|
|
|
9761
9793
|
}
|
|
9762
9794
|
];
|
|
9763
9795
|
|
|
9764
|
-
// src/adapters/
|
|
9796
|
+
// src/adapters/aiassistant/aiassistant-adapter.ts
|
|
9765
9797
|
init_esm_shims();
|
|
9766
9798
|
|
|
9767
9799
|
// src/adapters/shared/base-adapter.ts
|
|
@@ -10288,7 +10320,9 @@ var ADAPTER_OUTPUT_PATHS = {
|
|
|
10288
10320
|
"github-copilot": ".vscode/mcp.json",
|
|
10289
10321
|
windsurf: ".windsurf/mcp.json",
|
|
10290
10322
|
continue: ".continue/mcp.json",
|
|
10291
|
-
aider: "aider.mcp.json"
|
|
10323
|
+
aider: "aider.mcp.json",
|
|
10324
|
+
// unreachable; capabilities.mcp = false
|
|
10325
|
+
aiassistant: ".aiassistant/mcp.json"
|
|
10292
10326
|
// unreachable; capabilities.mcp = false
|
|
10293
10327
|
};
|
|
10294
10328
|
var McpConfigManager = class {
|
|
@@ -10543,7 +10577,45 @@ function getSkillBundleRelativePath(skill) {
|
|
|
10543
10577
|
return segments.slice(skillsIndex + 1).join("/");
|
|
10544
10578
|
}
|
|
10545
10579
|
|
|
10580
|
+
// src/adapters/aiassistant/aiassistant-adapter.ts
|
|
10581
|
+
var AiAssistantAdapter = class extends BaseAdapter {
|
|
10582
|
+
type = "aiassistant";
|
|
10583
|
+
capabilities = {
|
|
10584
|
+
skills: false,
|
|
10585
|
+
agents: false,
|
|
10586
|
+
hooks: false,
|
|
10587
|
+
mcp: false,
|
|
10588
|
+
caching: false,
|
|
10589
|
+
memory: false
|
|
10590
|
+
};
|
|
10591
|
+
configTemplateName() {
|
|
10592
|
+
return "aiassistant.md.hbs";
|
|
10593
|
+
}
|
|
10594
|
+
configOutputPath() {
|
|
10595
|
+
return ".aiassistant/rules/guidelines.md";
|
|
10596
|
+
}
|
|
10597
|
+
skillsRoot() {
|
|
10598
|
+
return ".aiassistant/skills";
|
|
10599
|
+
}
|
|
10600
|
+
agentsRoot() {
|
|
10601
|
+
return ".aiassistant/agents";
|
|
10602
|
+
}
|
|
10603
|
+
hooksOutputPath() {
|
|
10604
|
+
return ".aiassistant/hooks.json";
|
|
10605
|
+
}
|
|
10606
|
+
mcpOutputPath() {
|
|
10607
|
+
return ".aiassistant/mcp.json";
|
|
10608
|
+
}
|
|
10609
|
+
cacheOutputPath() {
|
|
10610
|
+
return ".aiassistant/cache.json";
|
|
10611
|
+
}
|
|
10612
|
+
memoryOutputPath() {
|
|
10613
|
+
return ".aiassistant/memory.json";
|
|
10614
|
+
}
|
|
10615
|
+
};
|
|
10616
|
+
|
|
10546
10617
|
// src/adapters/aider/aider-adapter.ts
|
|
10618
|
+
init_esm_shims();
|
|
10547
10619
|
var AiderAdapter = class extends BaseAdapter {
|
|
10548
10620
|
type = "aider";
|
|
10549
10621
|
capabilities = {
|
|
@@ -10769,22 +10841,20 @@ init_esm_shims();
|
|
|
10769
10841
|
init_esm_shims();
|
|
10770
10842
|
import { readFileSync as readFileSync6 } from "fs";
|
|
10771
10843
|
import { join as join10 } from "pathe";
|
|
10772
|
-
var
|
|
10773
|
-
|
|
10774
|
-
|
|
10844
|
+
var RECORD_HOOK_BASENAME = "verification-record.mjs";
|
|
10845
|
+
function isRecordHookCommand(command) {
|
|
10846
|
+
return command.includes(RECORD_HOOK_BASENAME);
|
|
10847
|
+
}
|
|
10775
10848
|
function buildNativeCompletionHookFile(options) {
|
|
10776
|
-
const { projectRoot, settingsPath, completionEvent } = options;
|
|
10777
|
-
const command = completionRecordCommand();
|
|
10849
|
+
const { projectRoot, settingsPath, completionEvent, adapterType } = options;
|
|
10850
|
+
const command = completionRecordCommand(adapterType);
|
|
10778
10851
|
const existing = readJsonObject(join10(projectRoot, settingsPath));
|
|
10779
10852
|
const hooks = existing.hooks && typeof existing.hooks === "object" && !Array.isArray(existing.hooks) ? existing.hooks : {};
|
|
10780
10853
|
const eventGroups = (Array.isArray(hooks[completionEvent]) ? hooks[completionEvent] : []).map((group) => ({
|
|
10781
10854
|
...group,
|
|
10782
|
-
hooks: (group?.hooks ?? []).filter((hook) => !
|
|
10855
|
+
hooks: (group?.hooks ?? []).filter((hook) => !isRecordHookCommand(hook.command))
|
|
10783
10856
|
})).filter((group) => group.hooks.length > 0);
|
|
10784
|
-
const
|
|
10785
|
-
(group) => group?.hooks?.some((hook) => hook.command === command)
|
|
10786
|
-
);
|
|
10787
|
-
const nextGroups = alreadyPresent ? eventGroups : [...eventGroups, { hooks: [{ type: "command", command }] }];
|
|
10857
|
+
const nextGroups = [...eventGroups, { hooks: [{ type: "command", command }] }];
|
|
10788
10858
|
const next = {
|
|
10789
10859
|
...existing,
|
|
10790
10860
|
hooks: { ...hooks, [completionEvent]: nextGroups }
|
|
@@ -10858,7 +10928,8 @@ var CodexCliAdapter = class extends BaseAdapter {
|
|
|
10858
10928
|
buildNativeCompletionHookFile({
|
|
10859
10929
|
projectRoot: context.projectRoot,
|
|
10860
10930
|
settingsPath: CODEX_HOOKS_FILE,
|
|
10861
|
-
completionEvent: CODEX_COMPLETION_EVENT
|
|
10931
|
+
completionEvent: CODEX_COMPLETION_EVENT,
|
|
10932
|
+
adapterType: this.type
|
|
10862
10933
|
})
|
|
10863
10934
|
];
|
|
10864
10935
|
}
|
|
@@ -10989,7 +11060,8 @@ var GeminiCliAdapter = class extends BaseAdapter {
|
|
|
10989
11060
|
buildNativeCompletionHookFile({
|
|
10990
11061
|
projectRoot: context.projectRoot,
|
|
10991
11062
|
settingsPath: GEMINI_SETTINGS_FILE,
|
|
10992
|
-
completionEvent: GEMINI_COMPLETION_EVENT
|
|
11063
|
+
completionEvent: GEMINI_COMPLETION_EVENT,
|
|
11064
|
+
adapterType: this.type
|
|
10993
11065
|
})
|
|
10994
11066
|
];
|
|
10995
11067
|
}
|
|
@@ -11136,6 +11208,8 @@ var AdapterFactory = class {
|
|
|
11136
11208
|
return new ContinueAdapter();
|
|
11137
11209
|
case "aider":
|
|
11138
11210
|
return new AiderAdapter();
|
|
11211
|
+
case "aiassistant":
|
|
11212
|
+
return new AiAssistantAdapter();
|
|
11139
11213
|
default:
|
|
11140
11214
|
return assertUnreachableAdapter(type);
|
|
11141
11215
|
}
|
|
@@ -13560,7 +13634,8 @@ var ADAPTER_TYPES = [
|
|
|
13560
13634
|
"github-copilot",
|
|
13561
13635
|
"windsurf",
|
|
13562
13636
|
"continue",
|
|
13563
|
-
"aider"
|
|
13637
|
+
"aider",
|
|
13638
|
+
"aiassistant"
|
|
13564
13639
|
];
|
|
13565
13640
|
|
|
13566
13641
|
// src/core/types/agent.ts
|
|
@@ -22514,6 +22589,11 @@ async function promptProviders(defaultProviders) {
|
|
|
22514
22589
|
name: "Aider (paul-gauthier)",
|
|
22515
22590
|
value: "aider",
|
|
22516
22591
|
checked: defaultProviders?.includes("aider") ?? false
|
|
22592
|
+
},
|
|
22593
|
+
{
|
|
22594
|
+
name: "AI Assistant (JetBrains)",
|
|
22595
|
+
value: "aiassistant",
|
|
22596
|
+
checked: defaultProviders?.includes("aiassistant") ?? false
|
|
22517
22597
|
}
|
|
22518
22598
|
],
|
|
22519
22599
|
validate(choices) {
|
|
@@ -25561,7 +25641,7 @@ init_cancelled_error();
|
|
|
25561
25641
|
init_events();
|
|
25562
25642
|
|
|
25563
25643
|
// src/index.ts
|
|
25564
|
-
var VERSION = "1.
|
|
25644
|
+
var VERSION = "1.37.0";
|
|
25565
25645
|
|
|
25566
25646
|
// src/cli/commands/audit.ts
|
|
25567
25647
|
init_esm_shims();
|
|
@@ -33187,7 +33267,7 @@ function printNextSteps() {
|
|
|
33187
33267
|
function createOnboardCommand() {
|
|
33188
33268
|
return new Command15("onboard").description("Full project onboarding").option("--project-root <path>", "Project root", process.cwd()).option("--stack <stack>", "Force the target stack").option("--capability <capability...>", "Add one or more capabilities").option(
|
|
33189
33269
|
"--providers <provider...>",
|
|
33190
|
-
"Select one or more providers (codex-cli, antigravity, claude-code, gemini-cli, junie, cursor, github-copilot, windsurf, continue, aider)"
|
|
33270
|
+
"Select one or more providers (codex-cli, antigravity, claude-code, gemini-cli, junie, cursor, github-copilot, windsurf, continue, aider, aiassistant)"
|
|
33191
33271
|
).action(
|
|
33192
33272
|
async (options) => {
|
|
33193
33273
|
printBanner();
|