@agentteams/runner 0.0.84 → 0.0.85-dev.211

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 (124) hide show
  1. package/dist/api-client.d.ts +2 -2
  2. package/dist/api-client.js +66 -66
  3. package/dist/api-client.js.map +1 -1
  4. package/dist/api-client.test.js +63 -54
  5. package/dist/api-client.test.js.map +1 -1
  6. package/dist/autostart.js +81 -81
  7. package/dist/autostart.js.map +1 -1
  8. package/dist/autostart.test.js +35 -35
  9. package/dist/autostart.test.js.map +1 -1
  10. package/dist/commands/cleanup.js +4 -4
  11. package/dist/commands/init.js +14 -14
  12. package/dist/commands/restart.js +3 -3
  13. package/dist/commands/start.js +10 -10
  14. package/dist/commands/start.js.map +1 -1
  15. package/dist/commands/status.js +7 -7
  16. package/dist/commands/stop.js +7 -7
  17. package/dist/commands/uninstall.js +6 -6
  18. package/dist/commands/update.d.ts +4 -4
  19. package/dist/commands/update.js +20 -22
  20. package/dist/commands/update.js.map +1 -1
  21. package/dist/commands/update.test.js +38 -42
  22. package/dist/commands/update.test.js.map +1 -1
  23. package/dist/config.d.ts +1 -1
  24. package/dist/config.js +12 -12
  25. package/dist/config.test.js +61 -61
  26. package/dist/config.test.js.map +1 -1
  27. package/dist/daemon-control.d.ts +5 -5
  28. package/dist/daemon-control.js +21 -22
  29. package/dist/daemon-control.js.map +1 -1
  30. package/dist/daemon-control.test.js +29 -29
  31. package/dist/executable.d.ts +3 -3
  32. package/dist/executable.js +46 -49
  33. package/dist/executable.js.map +1 -1
  34. package/dist/executable.test.js +62 -62
  35. package/dist/executable.test.js.map +1 -1
  36. package/dist/handlers/trigger-handler.d.ts +6 -6
  37. package/dist/handlers/trigger-handler.js +172 -134
  38. package/dist/handlers/trigger-handler.js.map +1 -1
  39. package/dist/handlers/trigger-handler.test.js +442 -328
  40. package/dist/handlers/trigger-handler.test.js.map +1 -1
  41. package/dist/index.js +25 -25
  42. package/dist/logger.js +1 -1
  43. package/dist/pid.js +6 -6
  44. package/dist/poller.d.ts +7 -7
  45. package/dist/poller.js +55 -54
  46. package/dist/poller.js.map +1 -1
  47. package/dist/poller.test.js +264 -180
  48. package/dist/poller.test.js.map +1 -1
  49. package/dist/runners/amp.d.ts +1 -1
  50. package/dist/runners/amp.js +74 -81
  51. package/dist/runners/amp.js.map +1 -1
  52. package/dist/runners/antigravity.d.ts +3 -3
  53. package/dist/runners/antigravity.js +116 -127
  54. package/dist/runners/antigravity.js.map +1 -1
  55. package/dist/runners/antigravity.replay.test.js +25 -25
  56. package/dist/runners/antigravity.replay.test.js.map +1 -1
  57. package/dist/runners/antigravity.test.js +98 -98
  58. package/dist/runners/antigravity.test.js.map +1 -1
  59. package/dist/runners/claude-code.d.ts +1 -1
  60. package/dist/runners/claude-code.js +85 -84
  61. package/dist/runners/claude-code.js.map +1 -1
  62. package/dist/runners/claude-code.test.js +37 -40
  63. package/dist/runners/claude-code.test.js.map +1 -1
  64. package/dist/runners/codex.d.ts +1 -1
  65. package/dist/runners/codex.js +87 -96
  66. package/dist/runners/codex.js.map +1 -1
  67. package/dist/runners/codex.test.js +68 -68
  68. package/dist/runners/codex.test.js.map +1 -1
  69. package/dist/runners/index.d.ts +1 -1
  70. package/dist/runners/index.js +10 -10
  71. package/dist/runners/index.test.js +16 -16
  72. package/dist/runners/log-reporter.d.ts +2 -2
  73. package/dist/runners/log-reporter.js +12 -10
  74. package/dist/runners/log-reporter.js.map +1 -1
  75. package/dist/runners/log-reporter.test.js +70 -70
  76. package/dist/runners/log-reporter.test.js.map +1 -1
  77. package/dist/runners/opencode.d.ts +1 -1
  78. package/dist/runners/opencode.js +68 -75
  79. package/dist/runners/opencode.js.map +1 -1
  80. package/dist/runners/process-control.d.ts +1 -1
  81. package/dist/runners/process-control.js +13 -11
  82. package/dist/runners/process-control.js.map +1 -1
  83. package/dist/runners/stream-json-parser.d.ts +1 -1
  84. package/dist/runners/stream-json-parser.js +70 -67
  85. package/dist/runners/stream-json-parser.js.map +1 -1
  86. package/dist/runners/stream-json-parser.replay.test.js +17 -17
  87. package/dist/runners/stream-json-parser.replay.test.js.map +1 -1
  88. package/dist/runners/stream-json-parser.test.js +76 -78
  89. package/dist/runners/stream-json-parser.test.js.map +1 -1
  90. package/dist/types.d.ts +4 -4
  91. package/dist/utils/auth-path-store.js +7 -7
  92. package/dist/utils/auth-path-store.test.js +24 -29
  93. package/dist/utils/auth-path-store.test.js.map +1 -1
  94. package/dist/utils/auto-update.d.ts +4 -4
  95. package/dist/utils/auto-update.js +30 -28
  96. package/dist/utils/auto-update.js.map +1 -1
  97. package/dist/utils/auto-update.test.js +30 -30
  98. package/dist/utils/convention-evaluator.d.ts +1 -1
  99. package/dist/utils/convention-evaluator.js +22 -21
  100. package/dist/utils/convention-evaluator.js.map +1 -1
  101. package/dist/utils/convention-evaluator.test.js +120 -110
  102. package/dist/utils/convention-evaluator.test.js.map +1 -1
  103. package/dist/utils/convention-sync.d.ts +3 -3
  104. package/dist/utils/convention-sync.js +86 -18
  105. package/dist/utils/convention-sync.js.map +1 -1
  106. package/dist/utils/convention-sync.test.js +126 -30
  107. package/dist/utils/convention-sync.test.js.map +1 -1
  108. package/dist/utils/git-worktree.js +20 -18
  109. package/dist/utils/git-worktree.js.map +1 -1
  110. package/dist/utils/git-worktree.test.js +98 -98
  111. package/dist/utils/git-worktree.test.js.map +1 -1
  112. package/dist/utils/origin-issue-safeguard.js +35 -30
  113. package/dist/utils/origin-issue-safeguard.js.map +1 -1
  114. package/dist/utils/power-save-blocker.d.ts +4 -4
  115. package/dist/utils/power-save-blocker.js +33 -33
  116. package/dist/utils/power-save-blocker.test.js +37 -37
  117. package/dist/utils/power-save-blocker.test.js.map +1 -1
  118. package/dist/utils/runner-cleanup.d.ts +3 -3
  119. package/dist/utils/runner-cleanup.js +13 -13
  120. package/dist/utils/runner-cleanup.test.js +35 -35
  121. package/dist/utils/runner-history.js +3 -3
  122. package/dist/utils/runner-history.test.js +17 -17
  123. package/package.json +9 -2
  124. package/readme.md +10 -10
@@ -1,15 +1,15 @@
1
- import assert from "node:assert/strict";
2
- import { execFileSync } from "node:child_process";
3
- import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
4
- import { tmpdir } from "node:os";
5
- import { join } from "node:path";
6
- import { describe, it } from "node:test";
1
+ import assert from 'node:assert/strict';
2
+ import { execFileSync } from 'node:child_process';
3
+ import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
4
+ import { tmpdir } from 'node:os';
5
+ import { join } from 'node:path';
6
+ import { describe, it } from 'node:test';
7
7
  const withGitRepo = async (run) => {
8
- const dir = await mkdtemp(join(tmpdir(), "conv-eval-"));
9
- execFileSync("git", ["init", dir], { stdio: "pipe" });
10
- execFileSync("git", ["-C", dir, "config", "user.email", "test@test.com"], { stdio: "pipe" });
11
- execFileSync("git", ["-C", dir, "config", "user.name", "Test"], { stdio: "pipe" });
12
- execFileSync("git", ["-C", dir, "commit", "--allow-empty", "-m", "initial"], { stdio: "pipe" });
8
+ const dir = await mkdtemp(join(tmpdir(), 'conv-eval-'));
9
+ execFileSync('git', ['init', dir], { stdio: 'pipe' });
10
+ execFileSync('git', ['-C', dir, 'config', 'user.email', 'test@test.com'], { stdio: 'pipe' });
11
+ execFileSync('git', ['-C', dir, 'config', 'user.name', 'Test'], { stdio: 'pipe' });
12
+ execFileSync('git', ['-C', dir, 'commit', '--allow-empty', '-m', 'initial'], { stdio: 'pipe' });
13
13
  try {
14
14
  await run(dir);
15
15
  }
@@ -17,171 +17,181 @@ const withGitRepo = async (run) => {
17
17
  await rm(dir, { recursive: true, force: true });
18
18
  }
19
19
  };
20
- describe("evaluateConventionTriggers", () => {
21
- it("returns empty array for empty conventions", async () => {
22
- const { evaluateConventionTriggers } = await import("./convention-evaluator.js");
23
- const result = evaluateConventionTriggers([], { authPath: "/tmp", planType: null });
20
+ describe('evaluateConventionTriggers', () => {
21
+ it('returns empty array for empty conventions', async () => {
22
+ const { evaluateConventionTriggers } = await import('./convention-evaluator.js');
23
+ const result = evaluateConventionTriggers([], { authPath: '/tmp', planType: null });
24
24
  assert.deepEqual(result, []);
25
25
  });
26
- it("matches task trigger when planType matches", async () => {
27
- const { evaluateConventionTriggers } = await import("./convention-evaluator.js");
26
+ it('matches task trigger when planType matches', async () => {
27
+ const { evaluateConventionTriggers } = await import('./convention-evaluator.js');
28
28
  const taskConvention = {
29
- id: "conv-task",
30
- filePath: ".agentteams/rules/testing.md",
31
- trigger: "task:BUG_FIX",
32
- title: "Bug Fix Convention",
33
- description: "Rules for bug fixes",
29
+ id: 'conv-task',
30
+ filePath: '.agentteams/rules/testing.md',
31
+ trigger: 'task:BUG_FIX',
32
+ title: 'Bug Fix Convention',
33
+ description: 'Rules for bug fixes',
34
34
  };
35
35
  const result = evaluateConventionTriggers([taskConvention], {
36
- authPath: "/tmp/nonexistent",
37
- planType: "BUG_FIX",
36
+ authPath: '/tmp/nonexistent',
37
+ planType: 'BUG_FIX',
38
38
  });
39
39
  assert.equal(result.length, 1);
40
- assert.equal(result[0].id, "conv-task");
40
+ assert.equal(result[0].id, 'conv-task');
41
41
  });
42
- it("does not match task trigger when planType differs", async () => {
43
- const { evaluateConventionTriggers } = await import("./convention-evaluator.js");
42
+ it('does not match task trigger when planType differs', async () => {
43
+ const { evaluateConventionTriggers } = await import('./convention-evaluator.js');
44
44
  const taskConvention = {
45
- id: "conv-task",
46
- filePath: ".agentteams/rules/testing.md",
47
- trigger: "task:BUG_FIX",
48
- title: "Bug Fix Convention",
45
+ id: 'conv-task',
46
+ filePath: '.agentteams/rules/testing.md',
47
+ trigger: 'task:BUG_FIX',
48
+ title: 'Bug Fix Convention',
49
49
  description: null,
50
50
  };
51
51
  const result = evaluateConventionTriggers([taskConvention], {
52
- authPath: "/tmp/nonexistent",
53
- planType: "FEATURE",
52
+ authPath: '/tmp/nonexistent',
53
+ planType: 'FEATURE',
54
54
  });
55
55
  assert.equal(result.length, 0);
56
56
  });
57
- it("does not match task trigger when planType is null", async () => {
58
- const { evaluateConventionTriggers } = await import("./convention-evaluator.js");
57
+ it('does not match task trigger when planType is null', async () => {
58
+ const { evaluateConventionTriggers } = await import('./convention-evaluator.js');
59
59
  const taskConvention = {
60
- id: "conv-task",
61
- filePath: ".agentteams/rules/testing.md",
62
- trigger: "task:FEATURE",
63
- title: "Feature Convention",
60
+ id: 'conv-task',
61
+ filePath: '.agentteams/rules/testing.md',
62
+ trigger: 'task:FEATURE',
63
+ title: 'Feature Convention',
64
64
  description: null,
65
65
  };
66
66
  const result = evaluateConventionTriggers([taskConvention], {
67
- authPath: "/tmp/nonexistent",
67
+ authPath: '/tmp/nonexistent',
68
68
  planType: null,
69
69
  });
70
70
  assert.equal(result.length, 0);
71
71
  });
72
- it("skips conventions with null trigger", async () => {
73
- const { evaluateConventionTriggers } = await import("./convention-evaluator.js");
72
+ it('skips conventions with null trigger', async () => {
73
+ const { evaluateConventionTriggers } = await import('./convention-evaluator.js');
74
74
  const nullTriggerConvention = {
75
- id: "conv-null",
76
- filePath: ".agentteams/rules/misc.md",
75
+ id: 'conv-null',
76
+ filePath: '.agentteams/rules/misc.md',
77
77
  trigger: null,
78
- title: "Misc Convention",
78
+ title: 'Misc Convention',
79
79
  description: null,
80
80
  };
81
81
  const result = evaluateConventionTriggers([nullTriggerConvention], {
82
- authPath: "/tmp/nonexistent",
83
- planType: "BUG_FIX",
82
+ authPath: '/tmp/nonexistent',
83
+ planType: 'BUG_FIX',
84
84
  });
85
85
  assert.equal(result.length, 0);
86
86
  });
87
- it("matches composite trigger via task type", async () => {
88
- const { evaluateConventionTriggers } = await import("./convention-evaluator.js");
87
+ it('matches composite trigger via task type', async () => {
88
+ const { evaluateConventionTriggers } = await import('./convention-evaluator.js');
89
89
  const compositeConvention = {
90
- id: "conv-composite",
91
- filePath: ".agentteams/rules/frontend.md",
92
- trigger: "file:web/src/**|task:FEATURE",
93
- title: "Frontend Convention",
90
+ id: 'conv-composite',
91
+ filePath: '.agentteams/rules/frontend.md',
92
+ trigger: 'file:web/src/**|task:FEATURE',
93
+ title: 'Frontend Convention',
94
94
  description: null,
95
95
  };
96
96
  const result = evaluateConventionTriggers([compositeConvention], {
97
- authPath: "/tmp/nonexistent",
98
- planType: "FEATURE",
97
+ authPath: '/tmp/nonexistent',
98
+ planType: 'FEATURE',
99
99
  });
100
100
  assert.equal(result.length, 1);
101
- assert.equal(result[0].id, "conv-composite");
101
+ assert.equal(result[0].id, 'conv-composite');
102
102
  });
103
- it("matches file trigger when a changed file matches the glob", async () => {
104
- const { evaluateConventionTriggers } = await import("./convention-evaluator.js");
103
+ it('matches file trigger when a changed file matches the glob', async () => {
104
+ const { evaluateConventionTriggers } = await import('./convention-evaluator.js');
105
105
  await withGitRepo(async (dir) => {
106
- await mkdir(join(dir, "api/prisma"), { recursive: true });
107
- await writeFile(join(dir, "api/prisma/schema.prisma"), "model Test {}\n");
108
- const result = evaluateConventionTriggers([{
109
- id: "conv-file",
110
- filePath: ".agentteams/rules/schema.md",
111
- trigger: "file:api/prisma/**",
112
- title: "Schema Convention",
106
+ await mkdir(join(dir, 'api/prisma'), { recursive: true });
107
+ await writeFile(join(dir, 'api/prisma/schema.prisma'), 'model Test {}\n');
108
+ const result = evaluateConventionTriggers([
109
+ {
110
+ id: 'conv-file',
111
+ filePath: '.agentteams/rules/schema.md',
112
+ trigger: 'file:api/prisma/**',
113
+ title: 'Schema Convention',
113
114
  description: null,
114
- }], {
115
+ },
116
+ ], {
115
117
  authPath: dir,
116
118
  planType: null,
117
119
  });
118
- assert.deepEqual(result.map((item) => item.id), ["conv-file"]);
120
+ assert.deepEqual(result.map((item) => item.id), ['conv-file']);
119
121
  });
120
122
  });
121
- it("does not match file trigger when changed files fall outside the glob", async () => {
122
- const { evaluateConventionTriggers } = await import("./convention-evaluator.js");
123
+ it('does not match file trigger when changed files fall outside the glob', async () => {
124
+ const { evaluateConventionTriggers } = await import('./convention-evaluator.js');
123
125
  await withGitRepo(async (dir) => {
124
- await mkdir(join(dir, "web/src"), { recursive: true });
125
- await writeFile(join(dir, "web/src/app.tsx"), "export default function App() { return null; }\n");
126
- const result = evaluateConventionTriggers([{
127
- id: "conv-file",
128
- filePath: ".agentteams/rules/schema.md",
129
- trigger: "file:api/prisma/**",
130
- title: "Schema Convention",
126
+ await mkdir(join(dir, 'web/src'), { recursive: true });
127
+ await writeFile(join(dir, 'web/src/app.tsx'), 'export default function App() { return null; }\n');
128
+ const result = evaluateConventionTriggers([
129
+ {
130
+ id: 'conv-file',
131
+ filePath: '.agentteams/rules/schema.md',
132
+ trigger: 'file:api/prisma/**',
133
+ title: 'Schema Convention',
131
134
  description: null,
132
- }], {
135
+ },
136
+ ], {
133
137
  authPath: dir,
134
138
  planType: null,
135
139
  });
136
140
  assert.equal(result.length, 0);
137
141
  });
138
142
  });
139
- it("matches when any file pattern in a multi-file trigger matches", async () => {
140
- const { evaluateConventionTriggers } = await import("./convention-evaluator.js");
143
+ it('matches when any file pattern in a multi-file trigger matches', async () => {
144
+ const { evaluateConventionTriggers } = await import('./convention-evaluator.js');
141
145
  await withGitRepo(async (dir) => {
142
- await mkdir(join(dir, "web/src"), { recursive: true });
143
- await writeFile(join(dir, "web/src/page.tsx"), "export default function Page() { return null; }\n");
144
- const result = evaluateConventionTriggers([{
145
- id: "conv-multi-file",
146
- filePath: ".agentteams/rules/frontend.md",
147
- trigger: "file:api/**|file:web/**",
148
- title: "Frontend Convention",
146
+ await mkdir(join(dir, 'web/src'), { recursive: true });
147
+ await writeFile(join(dir, 'web/src/page.tsx'), 'export default function Page() { return null; }\n');
148
+ const result = evaluateConventionTriggers([
149
+ {
150
+ id: 'conv-multi-file',
151
+ filePath: '.agentteams/rules/frontend.md',
152
+ trigger: 'file:api/**|file:web/**',
153
+ title: 'Frontend Convention',
149
154
  description: null,
150
- }], {
155
+ },
156
+ ], {
151
157
  authPath: dir,
152
- planType: "BUG_FIX",
158
+ planType: 'BUG_FIX',
153
159
  });
154
- assert.deepEqual(result.map((item) => item.id), ["conv-multi-file"]);
160
+ assert.deepEqual(result.map((item) => item.id), ['conv-multi-file']);
155
161
  });
156
162
  });
157
- it("matches composite trigger via file condition when task type does not match", async () => {
158
- const { evaluateConventionTriggers } = await import("./convention-evaluator.js");
163
+ it('matches composite trigger via file condition when task type does not match', async () => {
164
+ const { evaluateConventionTriggers } = await import('./convention-evaluator.js');
159
165
  await withGitRepo(async (dir) => {
160
- await mkdir(join(dir, "api/src"), { recursive: true });
161
- await writeFile(join(dir, "api/src/server.ts"), "export const server = true;\n");
162
- const result = evaluateConventionTriggers([{
163
- id: "conv-composite-file",
164
- filePath: ".agentteams/rules/routes.md",
165
- trigger: "file:api/**|task:FEATURE",
166
- title: "Route Convention",
166
+ await mkdir(join(dir, 'api/src'), { recursive: true });
167
+ await writeFile(join(dir, 'api/src/server.ts'), 'export const server = true;\n');
168
+ const result = evaluateConventionTriggers([
169
+ {
170
+ id: 'conv-composite-file',
171
+ filePath: '.agentteams/rules/routes.md',
172
+ trigger: 'file:api/**|task:FEATURE',
173
+ title: 'Route Convention',
167
174
  description: null,
168
- }], {
175
+ },
176
+ ], {
169
177
  authPath: dir,
170
- planType: "BUG_FIX",
178
+ planType: 'BUG_FIX',
171
179
  });
172
- assert.deepEqual(result.map((item) => item.id), ["conv-composite-file"]);
180
+ assert.deepEqual(result.map((item) => item.id), ['conv-composite-file']);
173
181
  });
174
182
  });
175
- it("returns no matches when git diff lookup fails", async () => {
176
- const { evaluateConventionTriggers } = await import("./convention-evaluator.js");
177
- const result = evaluateConventionTriggers([{
178
- id: "conv-file",
179
- filePath: ".agentteams/rules/schema.md",
180
- trigger: "file:api/**",
181
- title: "Schema Convention",
183
+ it('returns no matches when git diff lookup fails', async () => {
184
+ const { evaluateConventionTriggers } = await import('./convention-evaluator.js');
185
+ const result = evaluateConventionTriggers([
186
+ {
187
+ id: 'conv-file',
188
+ filePath: '.agentteams/rules/schema.md',
189
+ trigger: 'file:api/**',
190
+ title: 'Schema Convention',
182
191
  description: null,
183
- }], {
184
- authPath: "/tmp/does-not-exist-for-convention-evaluator",
192
+ },
193
+ ], {
194
+ authPath: '/tmp/does-not-exist-for-convention-evaluator',
185
195
  planType: null,
186
196
  });
187
197
  assert.equal(result.length, 0);
@@ -1 +1 @@
1
- {"version":3,"file":"convention-evaluator.test.js","sourceRoot":"","sources":["../../src/utils/convention-evaluator.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convention-evaluator.test.js","sourceRoot":"","sources":["../../src/utils/convention-evaluator.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { spawn } from "node:child_process";
2
- import { logger } from "../logger.js";
1
+ import { spawn } from 'node:child_process';
2
+ import { logger } from '../logger.js';
3
3
  type ConventionSyncDeps = {
4
4
  spawn?: typeof spawn;
5
- logger?: Pick<typeof logger, "info" | "warn">;
5
+ logger?: Pick<typeof logger, 'info' | 'warn'>;
6
6
  };
7
7
  export declare const runConventionSync: (authPath: string, deps?: ConventionSyncDeps) => Promise<void>;
8
8
  export {};
@@ -1,38 +1,106 @@
1
- import { spawn } from "node:child_process";
2
- import { logger } from "../logger.js";
3
- export const runConventionSync = async (authPath, deps = {}) => {
4
- const log = deps.logger ?? logger;
5
- const spawnFn = deps.spawn ?? spawn;
1
+ import { spawn } from 'node:child_process';
2
+ import { logger } from '../logger.js';
3
+ const runAgentteamsConventionCommand = async (authPath, args, spawnFn, log) => {
6
4
  try {
7
- const exitCode = await new Promise((resolve) => {
8
- const child = spawnFn("agentteams", ["convention", "download"], {
5
+ return await new Promise((resolve) => {
6
+ const child = spawnFn('agentteams', ['convention', ...args], {
9
7
  cwd: authPath,
10
- stdio: "ignore",
8
+ stdio: ['ignore', 'pipe', 'pipe'],
11
9
  windowsHide: true,
12
10
  });
13
- child.on("error", (err) => {
14
- log.warn("Convention sync spawn error", {
11
+ const stdoutChunks = [];
12
+ const stderrChunks = [];
13
+ child.stdout?.on('data', (chunk) => {
14
+ stdoutChunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
15
+ });
16
+ child.stderr?.on('data', (chunk) => {
17
+ stderrChunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
18
+ });
19
+ child.on('error', (err) => {
20
+ log.warn('Convention sync spawn error', {
15
21
  authPath,
22
+ command: `agentteams convention ${args.join(' ')}`,
16
23
  error: err.message,
17
24
  });
18
25
  resolve(null);
19
26
  });
20
- child.on("close", (code) => {
21
- resolve(code);
27
+ child.on('close', (code) => {
28
+ resolve({
29
+ exitCode: code,
30
+ stdout: Buffer.concat(stdoutChunks).toString('utf8'),
31
+ stderr: Buffer.concat(stderrChunks).toString('utf8'),
32
+ });
22
33
  });
23
34
  });
24
- if (exitCode === 0) {
25
- log.info("Convention sync completed", { authPath });
35
+ }
36
+ catch (error) {
37
+ log.warn('Convention sync command failed', {
38
+ authPath,
39
+ command: `agentteams convention ${args.join(' ')}`,
40
+ error: error instanceof Error ? error.message : String(error),
41
+ });
42
+ return null;
43
+ }
44
+ };
45
+ const parseConventionStatus = (stdout) => {
46
+ const parsed = JSON.parse(stdout);
47
+ if (typeof parsed.updateAvailable !== 'boolean') {
48
+ return null;
49
+ }
50
+ return { updateAvailable: parsed.updateAvailable };
51
+ };
52
+ export const runConventionSync = async (authPath, deps = {}) => {
53
+ const log = deps.logger ?? logger;
54
+ const spawnFn = deps.spawn ?? spawn;
55
+ try {
56
+ const statusResult = await runAgentteamsConventionCommand(authPath, ['status'], spawnFn, log);
57
+ if (statusResult === null) {
58
+ return;
59
+ }
60
+ if (statusResult.exitCode !== 0) {
61
+ log.warn('Convention status exited with non-zero code', {
62
+ authPath,
63
+ exitCode: statusResult.exitCode,
64
+ stderr: statusResult.stderr.trim() || undefined,
65
+ });
66
+ return;
67
+ }
68
+ let status = null;
69
+ try {
70
+ status = parseConventionStatus(statusResult.stdout);
71
+ }
72
+ catch (error) {
73
+ log.warn('Convention status returned invalid JSON', {
74
+ authPath,
75
+ error: error instanceof Error ? error.message : String(error),
76
+ });
77
+ return;
78
+ }
79
+ if (!status) {
80
+ log.warn('Convention status returned invalid payload', { authPath });
81
+ return;
82
+ }
83
+ if (!status.updateAvailable) {
84
+ log.info('Convention sync skipped; conventions are up to date', { authPath });
85
+ return;
86
+ }
87
+ const downloadResult = await runAgentteamsConventionCommand(authPath, ['download'], spawnFn, log);
88
+ if (downloadResult === null) {
89
+ return;
90
+ }
91
+ if (downloadResult.exitCode === 0) {
92
+ log.info('Convention sync completed', { authPath });
26
93
  }
27
- else if (exitCode !== null) {
28
- log.warn("Convention sync exited with non-zero code", {
94
+ else if (downloadResult.exitCode !== null) {
95
+ log.warn('Convention sync exited with non-zero code', {
29
96
  authPath,
30
- exitCode,
97
+ exitCode: downloadResult.exitCode,
98
+ stderr: downloadResult.stderr.trim() || undefined,
31
99
  });
32
100
  }
33
101
  }
34
102
  catch (error) {
35
- log.warn("Convention sync failed", {
103
+ log.warn('Convention sync failed', {
36
104
  authPath,
37
105
  error: error instanceof Error ? error.message : String(error),
38
106
  });
@@ -1 +1 @@
1
- {"version":3,"file":"convention-sync.js","sourceRoot":"","sources":["../../src/utils/convention-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAOtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,QAAgB,EAAE,OAA2B,EAAE,EAAiB,EAAE;IACxG,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;YAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE;gBAC9D,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxB,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE;oBACtC,QAAQ;oBACR,KAAK,EAAE,GAAG,CAAC,OAAO;iBACnB,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,2CAA2C,EAAE;gBACpD,QAAQ;gBACR,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACjC,QAAQ;YACR,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"convention-sync.js","sourceRoot":"","sources":["../../src/utils/convention-sync.ts"],"names":[],"mappings":"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"}