@antomanc/aginit 0.2.0 → 0.4.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 (53) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +94 -67
  3. package/THIRD_PARTY_NOTICES.md +6 -0
  4. package/dist/adapters/agent-browser.d.ts +54 -0
  5. package/dist/adapters/agent-browser.d.ts.map +1 -0
  6. package/dist/adapters/agent-browser.js +122 -0
  7. package/dist/adapters/agent-browser.js.map +1 -0
  8. package/dist/adapters/agents-md.d.ts +12 -0
  9. package/dist/adapters/agents-md.d.ts.map +1 -1
  10. package/dist/adapters/agents-md.js +31 -1
  11. package/dist/adapters/agents-md.js.map +1 -1
  12. package/dist/adapters/graft.d.ts +1 -0
  13. package/dist/adapters/graft.d.ts.map +1 -1
  14. package/dist/adapters/graft.js +5 -3
  15. package/dist/adapters/graft.js.map +1 -1
  16. package/dist/adapters/skills.d.ts +20 -1
  17. package/dist/adapters/skills.d.ts.map +1 -1
  18. package/dist/adapters/skills.js +38 -1
  19. package/dist/adapters/skills.js.map +1 -1
  20. package/dist/cli/doctor.d.ts.map +1 -1
  21. package/dist/cli/doctor.js +108 -2
  22. package/dist/cli/doctor.js.map +1 -1
  23. package/dist/cli/main.d.ts.map +1 -1
  24. package/dist/cli/main.js +8 -4
  25. package/dist/cli/main.js.map +1 -1
  26. package/dist/cli/new.d.ts.map +1 -1
  27. package/dist/cli/new.js +25 -6
  28. package/dist/cli/new.js.map +1 -1
  29. package/dist/config/defaults.d.ts.map +1 -1
  30. package/dist/config/defaults.js +18 -3
  31. package/dist/config/defaults.js.map +1 -1
  32. package/dist/config/schema.d.ts +5 -0
  33. package/dist/config/schema.d.ts.map +1 -1
  34. package/dist/config/schema.js.map +1 -1
  35. package/dist/config/validation.d.ts.map +1 -1
  36. package/dist/config/validation.js +2 -0
  37. package/dist/config/validation.js.map +1 -1
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -0
  41. package/dist/index.js.map +1 -1
  42. package/package.json +14 -7
  43. package/src/adapters/agent-browser.ts +162 -0
  44. package/src/adapters/agents-md.ts +37 -1
  45. package/src/adapters/graft.ts +6 -4
  46. package/src/adapters/skills.ts +46 -2
  47. package/src/cli/doctor.ts +128 -2
  48. package/src/cli/main.ts +8 -4
  49. package/src/cli/new.ts +28 -6
  50. package/src/config/defaults.ts +18 -3
  51. package/src/config/schema.ts +5 -0
  52. package/src/config/validation.ts +2 -0
  53. package/src/index.ts +1 -0
package/src/cli/new.ts CHANGED
@@ -9,9 +9,14 @@ import {
9
9
  } from '../config/schema.js';
10
10
  import { getPreset } from '../presets/registry.js';
11
11
  import { setupGit } from '../adapters/git.js';
12
- import { setupAgentsMarkdown } from '../adapters/agents-md.js';
13
- import { installAllSkills } from '../adapters/skills.js';
12
+ import { setupAgentsMarkdown, setupClaudeMarkdown } from '../adapters/agents-md.js';
13
+ import { claudeCodeEnabled, installAllSkills, skillAgents } from '../adapters/skills.js';
14
14
  import { initGraft } from '../adapters/graft.js';
15
+ import {
16
+ agentBrowserConfigured,
17
+ agentBrowserStubInstalled,
18
+ setupAgentBrowser
19
+ } from '../adapters/agent-browser.js';
15
20
  import { ensureDir, writeJsonFile } from '../utils/fs.js';
16
21
  import {
17
22
  readProjectConfig,
@@ -100,7 +105,11 @@ export async function createProject(
100
105
  );
101
106
  let complete = true;
102
107
 
103
- const totalSteps = 6;
108
+ // The agent-browser skill stub is inert without its CLI and browser
109
+ // binaries, so provisioning them gets its own step when the skill applies.
110
+ const agentBrowserWanted =
111
+ agentBrowserConfigured(config.skills.sources) || agentBrowserStubInstalled(targetDir);
112
+ const totalSteps = agentBrowserWanted ? 7 : 6;
104
113
  let currentStep = 1;
105
114
 
106
115
  // Scaffold into the clean directory before Git adds files that upstream tools reject.
@@ -128,13 +137,14 @@ export async function createProject(
128
137
  // Step 4: Write or update AGENTS.md intake contract
129
138
  if (!silent) logger.step(currentStep++, totalSteps, 'Generating AGENTS.md intake guidance');
130
139
  setupAgentsMarkdown(targetDir, config, { dryRun, silent });
140
+ if (claudeCodeEnabled(config)) setupClaudeMarkdown(targetDir, { dryRun, silent });
131
141
  if (!silent) logger.success('Configured AGENTS.md');
132
142
 
133
143
  // Step 5: Install skills via skills.sh engine
134
144
  if (!silent) logger.step(currentStep++, totalSteps, 'Installing upstream skills via skills.sh');
135
145
  if (options.skills !== false && config.skills.sources.length > 0) {
136
146
  const { installed, failed } = await installAllSkills(targetDir, config.skills.sources, {
137
- agents: [config.agents.primary, config.agents.secondary],
147
+ agents: skillAgents(config),
138
148
  dryRun,
139
149
  silent
140
150
  });
@@ -151,10 +161,22 @@ export async function createProject(
151
161
  logger.dim('Skills installation skipped (--no-skills or empty configuration)');
152
162
  }
153
163
 
154
- // Step 6: Codebase intelligence (Graft)
164
+ // Provision the agent-browser runtime the skill stub drives
165
+ if (agentBrowserWanted) {
166
+ if (!silent) logger.step(currentStep++, totalSteps, 'Provisioning agent-browser runtime');
167
+ const abOk = await setupAgentBrowser({ dryRun, silent, cwd: targetDir });
168
+ complete &&= abOk;
169
+ if (!silent && abOk) logger.success('agent-browser runtime ready (CLI + browser)');
170
+ }
171
+
172
+ // Codebase intelligence (Graft)
155
173
  if (!silent) logger.step(currentStep++, totalSteps, 'Configuring codebase intelligence');
156
174
  if (config.codebase.graft && options.graft !== false) {
157
- const graftOk = await initGraft(targetDir, { dryRun, silent });
175
+ const graftOk = await initGraft(targetDir, {
176
+ dryRun,
177
+ silent,
178
+ claude: claudeCodeEnabled(config)
179
+ });
158
180
  complete &&= graftOk;
159
181
  if (graftOk && !silent) {
160
182
  logger.success('Graft context graph initialized');
@@ -70,7 +70,8 @@ export function getDefaultConfig(
70
70
  packageManager,
71
71
  agents: {
72
72
  primary: 'antigravity',
73
- secondary: 'codex'
73
+ secondary: 'codex',
74
+ claudeCode: true
74
75
  },
75
76
  skills: {
76
77
  sources: [
@@ -82,6 +83,10 @@ export function getDefaultConfig(
82
83
  package: 'blader/humanizer',
83
84
  skills: ['humanizer']
84
85
  },
86
+ {
87
+ package: 'dietrichgebert/ponytail',
88
+ skills: ['ponytail']
89
+ },
85
90
  {
86
91
  package: 'pbakaus/impeccable',
87
92
  skills: ['impeccable']
@@ -116,7 +121,8 @@ export function getDefaultConfig(
116
121
  packageManager,
117
122
  agents: {
118
123
  primary: 'antigravity',
119
- secondary: 'codex'
124
+ secondary: 'codex',
125
+ claudeCode: true
120
126
  },
121
127
  skills: {
122
128
  sources: [
@@ -127,6 +133,10 @@ export function getDefaultConfig(
127
133
  {
128
134
  package: 'blader/humanizer',
129
135
  skills: ['humanizer']
136
+ },
137
+ {
138
+ package: 'dietrichgebert/ponytail',
139
+ skills: ['ponytail']
130
140
  }
131
141
  ]
132
142
  },
@@ -154,7 +164,8 @@ export function getDefaultConfig(
154
164
  packageManager,
155
165
  agents: {
156
166
  primary: 'antigravity',
157
- secondary: 'codex'
167
+ secondary: 'codex',
168
+ claudeCode: true
158
169
  },
159
170
  skills: {
160
171
  sources: [
@@ -165,6 +176,10 @@ export function getDefaultConfig(
165
176
  {
166
177
  package: 'blader/humanizer',
167
178
  skills: ['humanizer']
179
+ },
180
+ {
181
+ package: 'dietrichgebert/ponytail',
182
+ skills: ['ponytail']
168
183
  }
169
184
  ]
170
185
  },
@@ -16,6 +16,11 @@ export interface AginitConfig {
16
16
  agents: {
17
17
  primary: string;
18
18
  secondary: string;
19
+ /**
20
+ * Also install skills, Graft wiring and a CLAUDE.md import for Claude Code.
21
+ * Missing in configs written before 0.4.0; treated as enabled.
22
+ */
23
+ claudeCode?: boolean;
19
24
  };
20
25
  skills: {
21
26
  /**
@@ -45,6 +45,8 @@ export function validateConfig(value: unknown): AginitConfig {
45
45
  if (!isRecord(value.agents)) fail('agents');
46
46
  for (const key of ['primary', 'secondary'])
47
47
  validateUpstreamArgument(value.agents[key], `agent ${key}`);
48
+ if (value.agents.claudeCode !== undefined && typeof value.agents.claudeCode !== 'boolean')
49
+ fail('agents.claudeCode');
48
50
  if (!isRecord(value.skills) || !Array.isArray(value.skills.sources)) fail('skills.sources');
49
51
  if (value.skills.workflow !== undefined && !['minimal', 'spec'].includes(value.skills.workflow))
50
52
  fail('skills.workflow');
package/src/index.ts CHANGED
@@ -9,6 +9,7 @@ export * from './adapters/skills.js';
9
9
  export * from './adapters/graft.js';
10
10
  export * from './adapters/agents-md.js';
11
11
  export * from './adapters/browser.js';
12
+ export * from './adapters/agent-browser.js';
12
13
  export * from './cli/new.js';
13
14
  export * from './cli/init.js';
14
15
  export * from './cli/doctor.js';