@schoolai/shipyard 3.5.0 → 3.5.1-rc.20260504.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/dist/index.js +2 -2
- package/dist/{serve-IVUGCBEE.js → serve-NZHMK5B6.js} +90 -39
- package/dist/{serve-IVUGCBEE.js.map → serve-NZHMK5B6.js.map} +1 -1
- package/dist/{start-I7ZONWK7.js → start-GKOOIAPI.js} +2 -2
- package/dist/{services/watcher-worker/worker.js → worker.js} +3 -3
- package/dist/worker.js.map +1 -0
- package/package.json +1 -1
- package/dist/services/watcher-worker/worker.js.map +0 -1
- /package/dist/{start-I7ZONWK7.js.map → start-GKOOIAPI.js.map} +0 -0
- /package/dist/{services/watcher-worker/worker.d.ts → worker.d.ts} +0 -0
package/dist/index.js
CHANGED
|
@@ -112,7 +112,7 @@ async function handleSubcommand() {
|
|
|
112
112
|
return true;
|
|
113
113
|
}
|
|
114
114
|
if (subcommand === "start") {
|
|
115
|
-
const { startCommand } = await import("./start-
|
|
115
|
+
const { startCommand } = await import("./start-GKOOIAPI.js");
|
|
116
116
|
await startCommand();
|
|
117
117
|
return true;
|
|
118
118
|
}
|
|
@@ -129,7 +129,7 @@ async function main() {
|
|
|
129
129
|
const args = parseCliArgs();
|
|
130
130
|
if (args.serve) {
|
|
131
131
|
await loadAuthFromConfig(env);
|
|
132
|
-
const { serve } = await import("./serve-
|
|
132
|
+
const { serve } = await import("./serve-NZHMK5B6.js");
|
|
133
133
|
return serve({ isDev: env.SHIPYARD_DEV });
|
|
134
134
|
}
|
|
135
135
|
logger.error("Use `shipyard start` to run the daemon. Use --help for usage.");
|
|
@@ -32002,7 +32002,10 @@ async function detectModels(lastKnown) {
|
|
|
32002
32002
|
}
|
|
32003
32003
|
|
|
32004
32004
|
// src/shared/capabilities/git-pr-search.ts
|
|
32005
|
-
var SEARCH_PR_JSON_FIELDS = "number,title,url,state,isDraft,author,
|
|
32005
|
+
var SEARCH_PR_JSON_FIELDS = "number,title,url,state,isDraft,author,labels,updatedAt,createdAt,assignees,repository,commentsCount";
|
|
32006
|
+
var PR_VIEW_JSON_FIELDS = "baseRefName,headRefName,headRepository,reviewDecision,additions,deletions,changedFiles,comments,reviewRequests";
|
|
32007
|
+
var ENRICHMENT_CONCURRENCY = 8;
|
|
32008
|
+
var GH_CALL_TIMEOUT_MS = 3e4;
|
|
32006
32009
|
var GH_SEARCH_STATE_MAP = {
|
|
32007
32010
|
OPEN: "open",
|
|
32008
32011
|
CLOSED: "closed",
|
|
@@ -32019,7 +32022,7 @@ var PRSummarySchema = external_exports.object({
|
|
|
32019
32022
|
author: external_exports.string(),
|
|
32020
32023
|
baseRefName: external_exports.string(),
|
|
32021
32024
|
headRefName: external_exports.string(),
|
|
32022
|
-
/** Short repo name (headRepository.name extracted) */
|
|
32025
|
+
/** Short repo name (headRepository.name extracted from the gh pr view response) */
|
|
32023
32026
|
headRepository: external_exports.string(),
|
|
32024
32027
|
updatedAt: external_exports.union([external_exports.string(), external_exports.number()]),
|
|
32025
32028
|
createdAt: external_exports.union([external_exports.string(), external_exports.number()]),
|
|
@@ -32040,18 +32043,22 @@ var RawSearchPRSchema = external_exports.object({
|
|
|
32040
32043
|
state: external_exports.string().optional(),
|
|
32041
32044
|
isDraft: external_exports.boolean().optional(),
|
|
32042
32045
|
author: external_exports.object({ login: external_exports.string() }).passthrough().optional(),
|
|
32043
|
-
baseRefName: external_exports.string().optional(),
|
|
32044
|
-
headRefName: external_exports.string().optional(),
|
|
32045
|
-
headRepository: external_exports.object({ name: external_exports.string().optional() }).passthrough().optional(),
|
|
32046
32046
|
updatedAt: external_exports.string().optional(),
|
|
32047
32047
|
createdAt: external_exports.string().optional(),
|
|
32048
|
-
reviewDecision: external_exports.string().nullable().optional(),
|
|
32049
32048
|
labels: external_exports.array(external_exports.object({ name: external_exports.string(), color: external_exports.string() }).passthrough()).optional(),
|
|
32049
|
+
assignees: external_exports.array(external_exports.object({ login: external_exports.string() }).passthrough()).optional(),
|
|
32050
|
+
repository: external_exports.object({ name: external_exports.string().optional(), nameWithOwner: external_exports.string().optional() }).passthrough().optional(),
|
|
32051
|
+
commentsCount: external_exports.number().optional()
|
|
32052
|
+
}).passthrough();
|
|
32053
|
+
var RawViewPRSchema = external_exports.object({
|
|
32054
|
+
baseRefName: external_exports.string().optional(),
|
|
32055
|
+
headRefName: external_exports.string().optional(),
|
|
32056
|
+
headRepository: external_exports.object({ name: external_exports.string().optional() }).passthrough().nullable().optional(),
|
|
32057
|
+
reviewDecision: external_exports.string().nullable().optional(),
|
|
32050
32058
|
additions: external_exports.number().optional(),
|
|
32051
32059
|
deletions: external_exports.number().optional(),
|
|
32052
32060
|
changedFiles: external_exports.number().optional(),
|
|
32053
32061
|
comments: external_exports.union([external_exports.number(), external_exports.array(external_exports.unknown())]).optional(),
|
|
32054
|
-
assignees: external_exports.array(external_exports.object({ login: external_exports.string() }).passthrough()).optional(),
|
|
32055
32062
|
reviewRequests: external_exports.array(external_exports.object({ login: external_exports.string() }).passthrough()).optional()
|
|
32056
32063
|
}).passthrough();
|
|
32057
32064
|
function resolveSearchState(raw) {
|
|
@@ -32066,54 +32073,98 @@ function mapSearchLabel(l) {
|
|
|
32066
32073
|
color: typeof l.color === "string" && l.color !== "" ? `#${l.color}` : ""
|
|
32067
32074
|
};
|
|
32068
32075
|
}
|
|
32069
|
-
function resolveCommentCount(
|
|
32070
|
-
const c =
|
|
32076
|
+
function resolveCommentCount(merged) {
|
|
32077
|
+
const c = merged.view?.comments;
|
|
32071
32078
|
if (typeof c === "number") return c;
|
|
32072
32079
|
if (Array.isArray(c)) return c.length;
|
|
32073
|
-
return 0;
|
|
32080
|
+
return merged.search.commentsCount ?? 0;
|
|
32074
32081
|
}
|
|
32075
|
-
function
|
|
32082
|
+
function extractMergedScalars(merged) {
|
|
32083
|
+
const { search, view } = merged;
|
|
32076
32084
|
return {
|
|
32077
|
-
number:
|
|
32078
|
-
title:
|
|
32079
|
-
url:
|
|
32080
|
-
author:
|
|
32081
|
-
baseRefName:
|
|
32082
|
-
headRefName:
|
|
32083
|
-
headRepository:
|
|
32084
|
-
updatedAt:
|
|
32085
|
-
createdAt:
|
|
32086
|
-
reviewDecision:
|
|
32087
|
-
additions:
|
|
32088
|
-
deletions:
|
|
32089
|
-
changedFiles:
|
|
32085
|
+
number: search.number ?? 0,
|
|
32086
|
+
title: search.title ?? "",
|
|
32087
|
+
url: search.url ?? "",
|
|
32088
|
+
author: search.author?.login ?? "",
|
|
32089
|
+
baseRefName: view?.baseRefName ?? "",
|
|
32090
|
+
headRefName: view?.headRefName ?? "",
|
|
32091
|
+
headRepository: view?.headRepository?.name ?? "",
|
|
32092
|
+
updatedAt: search.updatedAt ?? "",
|
|
32093
|
+
createdAt: search.createdAt ?? "",
|
|
32094
|
+
reviewDecision: view?.reviewDecision ?? null,
|
|
32095
|
+
additions: view?.additions ?? 0,
|
|
32096
|
+
deletions: view?.deletions ?? 0,
|
|
32097
|
+
changedFiles: view?.changedFiles ?? 0
|
|
32090
32098
|
};
|
|
32091
32099
|
}
|
|
32092
|
-
function
|
|
32100
|
+
function mapMergedPR(merged) {
|
|
32101
|
+
const { search, view } = merged;
|
|
32093
32102
|
return {
|
|
32094
|
-
...
|
|
32095
|
-
state: resolveSearchState(
|
|
32096
|
-
isDraft:
|
|
32097
|
-
labels: (
|
|
32098
|
-
comments: resolveCommentCount(
|
|
32099
|
-
assignees: (
|
|
32100
|
-
reviewRequests: (
|
|
32103
|
+
...extractMergedScalars(merged),
|
|
32104
|
+
state: resolveSearchState(search),
|
|
32105
|
+
isDraft: search.isDraft === true,
|
|
32106
|
+
labels: (search.labels ?? []).map(mapSearchLabel),
|
|
32107
|
+
comments: resolveCommentCount(merged),
|
|
32108
|
+
assignees: (search.assignees ?? []).map((a) => ({ login: a.login })),
|
|
32109
|
+
reviewRequests: (view?.reviewRequests ?? []).map((r) => ({ login: r.login }))
|
|
32101
32110
|
};
|
|
32102
32111
|
}
|
|
32103
|
-
async function
|
|
32112
|
+
async function parallelMap(items, concurrency, fn) {
|
|
32113
|
+
const results = new Array(items.length);
|
|
32114
|
+
let nextIndex = 0;
|
|
32115
|
+
const workers = Array.from(
|
|
32116
|
+
{ length: Math.min(concurrency, items.length) },
|
|
32117
|
+
async () => {
|
|
32118
|
+
while (true) {
|
|
32119
|
+
const i = nextIndex++;
|
|
32120
|
+
if (i >= items.length) return;
|
|
32121
|
+
const item2 = items[i];
|
|
32122
|
+
if (item2 === void 0) return;
|
|
32123
|
+
results[i] = await fn(item2, i);
|
|
32124
|
+
}
|
|
32125
|
+
}
|
|
32126
|
+
);
|
|
32127
|
+
await Promise.all(workers);
|
|
32128
|
+
return results;
|
|
32129
|
+
}
|
|
32130
|
+
async function enrichPr(url, cwd) {
|
|
32104
32131
|
try {
|
|
32105
32132
|
const stdout = await runWithTimeout(
|
|
32133
|
+
"gh",
|
|
32134
|
+
["pr", "view", url, "--json", PR_VIEW_JSON_FIELDS],
|
|
32135
|
+
cwd,
|
|
32136
|
+
GH_CALL_TIMEOUT_MS
|
|
32137
|
+
);
|
|
32138
|
+
const parsed = RawViewPRSchema.safeParse(JSON.parse(stdout));
|
|
32139
|
+
if (!parsed.success) return null;
|
|
32140
|
+
return parsed.data;
|
|
32141
|
+
} catch {
|
|
32142
|
+
return null;
|
|
32143
|
+
}
|
|
32144
|
+
}
|
|
32145
|
+
async function searchPrs(args, cwd) {
|
|
32146
|
+
let stdout;
|
|
32147
|
+
try {
|
|
32148
|
+
stdout = await runWithTimeout(
|
|
32106
32149
|
"gh",
|
|
32107
32150
|
["search", "prs", ...args, "--json", SEARCH_PR_JSON_FIELDS],
|
|
32108
32151
|
cwd,
|
|
32109
|
-
|
|
32152
|
+
GH_CALL_TIMEOUT_MS
|
|
32110
32153
|
);
|
|
32111
|
-
const rawArray = external_exports.array(RawSearchPRSchema).safeParse(JSON.parse(stdout));
|
|
32112
|
-
if (!rawArray.success) return [];
|
|
32113
|
-
return rawArray.data.map(mapRawSearchPR);
|
|
32114
32154
|
} catch {
|
|
32115
32155
|
return [];
|
|
32116
32156
|
}
|
|
32157
|
+
const rawArray = external_exports.array(RawSearchPRSchema).safeParse(JSON.parse(stdout));
|
|
32158
|
+
if (!rawArray.success) return [];
|
|
32159
|
+
const enrichInputs = rawArray.data.map((search) => ({ search, url: search.url ?? "" })).filter((entry) => entry.url !== "");
|
|
32160
|
+
const enrichedViews = await parallelMap(
|
|
32161
|
+
enrichInputs,
|
|
32162
|
+
ENRICHMENT_CONCURRENCY,
|
|
32163
|
+
(entry) => enrichPr(entry.url, cwd)
|
|
32164
|
+
);
|
|
32165
|
+
return enrichInputs.map(
|
|
32166
|
+
(entry, i) => mapMergedPR({ search: entry.search, view: enrichedViews[i] ?? null })
|
|
32167
|
+
);
|
|
32117
32168
|
}
|
|
32118
32169
|
function isValidTimestampStr(value) {
|
|
32119
32170
|
if (!value) return false;
|
|
@@ -34878,7 +34929,7 @@ function nanoid(size2 = 21) {
|
|
|
34878
34929
|
}
|
|
34879
34930
|
|
|
34880
34931
|
// src/services/bootstrap/signaling.ts
|
|
34881
|
-
var DAEMON_NPM_VERSION = true ? "3.5.
|
|
34932
|
+
var DAEMON_NPM_VERSION = true ? "3.5.1" : "unknown";
|
|
34882
34933
|
function createDaemonSignaling(config2) {
|
|
34883
34934
|
const agentId = config2.agentId ?? nanoid();
|
|
34884
34935
|
function send(msg) {
|
|
@@ -124629,4 +124680,4 @@ export {
|
|
|
124629
124680
|
decideWorkspaceScope,
|
|
124630
124681
|
serve
|
|
124631
124682
|
};
|
|
124632
|
-
//# sourceMappingURL=serve-
|
|
124683
|
+
//# sourceMappingURL=serve-NZHMK5B6.js.map
|