@structured-vibe-coding/core 0.5.4 → 0.6.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.
@@ -14,7 +14,7 @@ import {
14
14
  parseIntegration,
15
15
  refreshActiveAgentContext,
16
16
  renderThinAgent
17
- } from "./chunk-I45MAHM6.js";
17
+ } from "./chunk-QTHYRKMK.js";
18
18
  export {
19
19
  AGENT_INTEGRATIONS,
20
20
  AGENT_TARGET_OPTIONS,
@@ -639,6 +639,20 @@ var AGENT_INTEGRATIONS = [
639
639
  installUrl: "https://docs.anthropic.com/en/docs/claude-code",
640
640
  rolePath: (roleId) => `.claude/agents/${roleId}.md`,
641
641
  agentsMdRow: "| Claude Code | `.claude/agents/` (`sdd`, `sdd-planner`, `sdd-implementer`, `sdd-reviewer`) |"
642
+ },
643
+ {
644
+ id: "grok",
645
+ key: "grok",
646
+ aliases: ["grok-build", "grokbuild", "xai", "xai-grok"],
647
+ label: "Grok Build",
648
+ hint: ".grok/rules/sdd.md + AGENTS.md (terminal TUI from xAI)",
649
+ requiresCli: false,
650
+ cliBinary: "grok",
651
+ installUrl: "https://docs.x.ai",
652
+ // Single rules file: Grok auto-loads all .grok/rules/*.md
653
+ rolePath: () => `.grok/rules/sdd.md`,
654
+ rolesToInstall: ["sdd"],
655
+ agentsMdRow: "| Grok Build | `.grok/rules/sdd.md` + `AGENTS.md` (reads protocol + active-context; run `sdd` in shell) |"
642
656
  }
643
657
  ];
644
658
  var ALL_AGENT_TARGETS = AGENT_INTEGRATIONS.map((i) => i.id);
@@ -681,7 +695,7 @@ function parseIntegration(raw) {
681
695
  }
682
696
  if (IDE_NAMES.has(p)) {
683
697
  throw new Error(
684
- `"${p}" is an IDE, not an AI coding agent. Choose: copilot or claude (Claude Code).`
698
+ `"${p}" is an IDE, not an AI coding agent. Choose: ${AGENT_INTEGRATIONS.map((i) => i.key).join(", ")}.`
685
699
  );
686
700
  }
687
701
  for (const integ of AGENT_INTEGRATIONS) {
@@ -761,7 +775,8 @@ async function installAgentIntegration(opts) {
761
775
  };
762
776
  await write(join4(".sdd", "protocol.md"), PROTOCOL_MD);
763
777
  await refreshActiveAgentContext(root);
764
- for (const role of SDD_AGENT_ROLES) {
778
+ const roles = integ.rolesToInstall?.length ? SDD_AGENT_ROLES.filter((r) => integ.rolesToInstall.includes(r.id)) : SDD_AGENT_ROLES;
779
+ for (const role of roles) {
765
780
  await write(integ.rolePath(role.id), renderThinAgent(role));
766
781
  }
767
782
  await write("AGENTS.md", renderAgentsMd(integ));
package/dist/index.d.ts CHANGED
@@ -1161,9 +1161,9 @@ declare function completeChange(projectRoot: string, config: Config, changeId: s
1161
1161
 
1162
1162
  /**
1163
1163
  * AI coding agents (not IDEs).
1164
- * Speckit-style: one integration at a time; public keys are short (`copilot`, `claude`).
1164
+ * Speckit-style: one integration at a time; public keys: `copilot` | `claude` | `grok`.
1165
1165
  */
1166
- type AgentTarget = "copilot" | "claude-code";
1166
+ type AgentTarget = "copilot" | "claude-code" | "grok";
1167
1167
  /** Registry entry — add a new AI agent by appending here only. */
1168
1168
  interface AgentIntegration {
1169
1169
  id: AgentTarget;
@@ -1178,6 +1178,12 @@ interface AgentIntegration {
1178
1178
  cliBinary?: string;
1179
1179
  /** Relative path for a thin role agent file. */
1180
1180
  rolePath: (roleId: string) => string;
1181
+ /**
1182
+ * Which thin roles to install. Default: all SDD_AGENT_ROLES.
1183
+ * Grok loads every `*.md` under `.grok/rules/`, so only install the router
1184
+ * role there to avoid conflicting planner/implementer instructions.
1185
+ */
1186
+ rolesToInstall?: SddAgentRoleId[];
1181
1187
  /** One markdown table row for AGENTS.md. */
1182
1188
  agentsMdRow: string;
1183
1189
  }
package/dist/index.js CHANGED
@@ -73,7 +73,7 @@ import {
73
73
  workflowsDir,
74
74
  writeText,
75
75
  writeYaml
76
- } from "./chunk-I45MAHM6.js";
76
+ } from "./chunk-QTHYRKMK.js";
77
77
 
78
78
  // src/change.ts
79
79
  import { join as join2 } from "pathe";
@@ -185,7 +185,7 @@ async function createChange(input) {
185
185
  await materializeStageArtifacts(projectRoot, config, id, workflow, meta, firstStage);
186
186
  await setActiveChange(projectRoot, config, id);
187
187
  try {
188
- const { refreshActiveAgentContext: refreshActiveAgentContext2 } = await import("./agents-4Z3YZRUK.js");
188
+ const { refreshActiveAgentContext: refreshActiveAgentContext2 } = await import("./agents-O5ABMQJQ.js");
189
189
  await refreshActiveAgentContext2(projectRoot);
190
190
  } catch {
191
191
  }
@@ -281,7 +281,7 @@ async function advanceStage(projectRoot, config, changeId, opts) {
281
281
  stage
282
282
  );
283
283
  try {
284
- const { refreshActiveAgentContext: refreshActiveAgentContext2 } = await import("./agents-4Z3YZRUK.js");
284
+ const { refreshActiveAgentContext: refreshActiveAgentContext2 } = await import("./agents-O5ABMQJQ.js");
285
285
  await refreshActiveAgentContext2(projectRoot);
286
286
  } catch {
287
287
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@structured-vibe-coding/core",
3
- "version": "0.5.4",
3
+ "version": "0.6.0",
4
4
  "description": "Core engine for structured vibe coding (local-first Spec-Driven Development)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",