opencode-pilot 0.6.0 → 0.6.1
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/package.json
CHANGED
package/service/poll-service.js
CHANGED
|
@@ -185,7 +185,7 @@ export async function pollOnce(options = {}) {
|
|
|
185
185
|
if (result.success) {
|
|
186
186
|
// Mark as processed to avoid re-triggering
|
|
187
187
|
if (pollerInstance) {
|
|
188
|
-
pollerInstance.markProcessed(item.id, { repoKey, command: result.command });
|
|
188
|
+
pollerInstance.markProcessed(item.id, { repoKey: item.repo_key, command: result.command });
|
|
189
189
|
}
|
|
190
190
|
console.log(`[poll] Started session for ${item.id}`);
|
|
191
191
|
} else {
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
# Provider-level config (applies to all GitHub presets)
|
|
4
4
|
_provider:
|
|
5
5
|
response_key: items
|
|
6
|
-
mappings:
|
|
6
|
+
mappings:
|
|
7
|
+
# Extract repo full name from repository_url (e.g., "https://api.github.com/repos/owner/repo")
|
|
8
|
+
repository_full_name: "repository_url:/repos\\/([^/]+\\/[^/]+)$/"
|
|
7
9
|
|
|
8
10
|
# Presets
|
|
9
11
|
my-issues:
|
|
@@ -15,7 +17,7 @@ my-issues:
|
|
|
15
17
|
q: "is:issue assignee:@me state:open"
|
|
16
18
|
item:
|
|
17
19
|
id: "{html_url}"
|
|
18
|
-
repo: "{
|
|
20
|
+
repo: "{repository_full_name}"
|
|
19
21
|
|
|
20
22
|
review-requests:
|
|
21
23
|
name: review-requests
|
|
@@ -26,7 +28,7 @@ review-requests:
|
|
|
26
28
|
q: "is:pr review-requested:@me state:open"
|
|
27
29
|
item:
|
|
28
30
|
id: "{html_url}"
|
|
29
|
-
repo: "{
|
|
31
|
+
repo: "{repository_full_name}"
|
|
30
32
|
|
|
31
33
|
my-prs-feedback:
|
|
32
34
|
name: my-prs-feedback
|
|
@@ -37,4 +39,4 @@ my-prs-feedback:
|
|
|
37
39
|
q: "is:pr author:@me state:open review:changes_requested"
|
|
38
40
|
item:
|
|
39
41
|
id: "{html_url}"
|
|
40
|
-
repo: "{
|
|
42
|
+
repo: "{repository_full_name}"
|
|
@@ -159,14 +159,15 @@ sources:
|
|
|
159
159
|
loadRepoConfig(configPath);
|
|
160
160
|
|
|
161
161
|
const source = getSources()[0];
|
|
162
|
+
// Item with repository_full_name (mapped from repository_url by GitHub provider)
|
|
162
163
|
const item = {
|
|
163
|
-
|
|
164
|
+
repository_full_name: 'myorg/backend',
|
|
164
165
|
number: 123,
|
|
165
166
|
html_url: 'https://github.com/myorg/backend/issues/123'
|
|
166
167
|
};
|
|
167
168
|
|
|
168
|
-
// Source should have repo field from preset
|
|
169
|
-
assert.strictEqual(source.repo, '{
|
|
169
|
+
// Source should have repo field from preset (uses mapped field)
|
|
170
|
+
assert.strictEqual(source.repo, '{repository_full_name}');
|
|
170
171
|
|
|
171
172
|
// resolveRepoForItem should extract repo key from item
|
|
172
173
|
const repoKeys = resolveRepoForItem(source, item);
|
|
@@ -194,8 +195,9 @@ sources:
|
|
|
194
195
|
loadRepoConfig(configPath);
|
|
195
196
|
|
|
196
197
|
const source = getSources()[0];
|
|
198
|
+
// Item with repository_full_name (mapped from repository_url by GitHub provider)
|
|
197
199
|
const item = {
|
|
198
|
-
|
|
200
|
+
repository_full_name: 'unknown/repo',
|
|
199
201
|
number: 456
|
|
200
202
|
};
|
|
201
203
|
|
|
@@ -352,7 +352,9 @@ sources: []
|
|
|
352
352
|
|
|
353
353
|
// GitHub preset has response_key: items, user config doesn't override it
|
|
354
354
|
assert.strictEqual(toolConfig.response_key, 'items');
|
|
355
|
-
|
|
355
|
+
// GitHub provider has mapping for repository_full_name extraction from URL
|
|
356
|
+
assert.strictEqual(toolConfig.mappings.url, 'html_url');
|
|
357
|
+
assert.ok(toolConfig.mappings.repository_full_name, 'Should have repository_full_name mapping');
|
|
356
358
|
});
|
|
357
359
|
|
|
358
360
|
test('getToolProviderConfig falls back to preset provider config', async () => {
|
|
@@ -628,11 +630,12 @@ sources:
|
|
|
628
630
|
loadRepoConfig(configPath);
|
|
629
631
|
const sources = getSources();
|
|
630
632
|
|
|
631
|
-
// All GitHub presets should have repo field
|
|
632
|
-
|
|
633
|
+
// All GitHub presets should have repo field that references repository_full_name
|
|
634
|
+
// (which is mapped from repository_url by the GitHub provider)
|
|
635
|
+
const mockItem = { repository_full_name: 'myorg/backend' };
|
|
633
636
|
|
|
634
637
|
for (const source of sources) {
|
|
635
|
-
assert.strictEqual(source.repo, '{
|
|
638
|
+
assert.strictEqual(source.repo, '{repository_full_name}', `Preset ${source.name} should have repo field`);
|
|
636
639
|
const repos = resolveRepoForItem(source, mockItem);
|
|
637
640
|
assert.deepStrictEqual(repos, ['myorg/backend'], `Preset ${source.name} should resolve repo from item`);
|
|
638
641
|
}
|
|
@@ -651,12 +654,12 @@ sources:
|
|
|
651
654
|
loadRepoConfig(configPath);
|
|
652
655
|
const source = getSources()[0];
|
|
653
656
|
|
|
654
|
-
// Item from allowed repo should resolve
|
|
655
|
-
const allowedItem = {
|
|
657
|
+
// Item from allowed repo should resolve (repository_full_name is mapped from repository_url)
|
|
658
|
+
const allowedItem = { repository_full_name: 'myorg/backend' };
|
|
656
659
|
assert.deepStrictEqual(resolveRepoForItem(source, allowedItem), ['myorg/backend']);
|
|
657
660
|
|
|
658
661
|
// Item from non-allowed repo should return empty (filtered out)
|
|
659
|
-
const filteredItem = {
|
|
662
|
+
const filteredItem = { repository_full_name: 'other/repo' };
|
|
660
663
|
assert.deepStrictEqual(resolveRepoForItem(source, filteredItem), []);
|
|
661
664
|
});
|
|
662
665
|
});
|