@harness-engineering/intelligence 0.4.0 → 0.4.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 CHANGED
@@ -245,43 +245,46 @@ function degradedRecommendation() {
245
245
  alternatives: []
246
246
  };
247
247
  }
248
- function createCanaryAdapter(exec = defaultExec) {
249
- async function execCanary(subArgs) {
250
- const [cmd, args] = canaryInvocation(subArgs);
251
- try {
252
- const { stdout } = await exec(cmd, args);
253
- return { ok: true, stdout };
254
- } catch (err) {
255
- const e = err;
256
- if (e.code === "ENOENT") return { ok: false, reason: "not-installed" };
257
- if (e.code === 1 && /canary binary not found/i.test(e.stderr ?? "")) {
258
- return { ok: false, reason: "binary-missing" };
259
- }
260
- return { ok: false, reason: "exec-failed" };
248
+ async function execCanary(exec, subArgs) {
249
+ const [cmd, args] = canaryInvocation(subArgs);
250
+ try {
251
+ const { stdout } = await exec(cmd, args);
252
+ return { ok: true, stdout };
253
+ } catch (err) {
254
+ const e = err;
255
+ if (e.code === "ENOENT") return { ok: false, reason: "not-installed" };
256
+ if (e.code === 1 && /canary binary not found/i.test(e.stderr ?? "")) {
257
+ return { ok: false, reason: "binary-missing" };
261
258
  }
259
+ return { ok: false, reason: "exec-failed" };
262
260
  }
261
+ }
262
+ async function probeCanary(exec) {
263
+ const res = await execCanary(exec, ["version"]);
264
+ if (!res.ok) return { status: "degraded", reason: res.reason };
265
+ if (res.stdout.trim() === "") return { status: "degraded", reason: "bad-output" };
266
+ const version = parseVersion(res.stdout);
267
+ return version ? { status: "available", version } : { status: "available" };
268
+ }
269
+ async function recommendFrameworkCanary(exec, prompt) {
270
+ const res = await execCanary(exec, ["recommend", prompt, "--json"]);
271
+ if (!res.ok) return degradedRecommendation();
272
+ const parsed = frameworkRecommendationSchema.safeParse(safeJson(res.stdout));
273
+ return parsed.success ? parsed.data : degradedRecommendation();
274
+ }
275
+ async function reviewTestCanary(exec, path2, framework) {
276
+ const args = ["review-test", path2, "--json"];
277
+ if (framework) args.push("--framework", framework);
278
+ const res = await execCanary(exec, args);
279
+ if (!res.ok) return [];
280
+ const parsed = canaryFindingsSchema.safeParse(safeJson(res.stdout));
281
+ return parsed.success ? parsed.data : [];
282
+ }
283
+ function createCanaryAdapter(exec = defaultExec) {
263
284
  let cachedProbe;
264
- const probe = () => cachedProbe ??= (async () => {
265
- const res = await execCanary(["version"]);
266
- if (!res.ok) return { status: "degraded", reason: res.reason };
267
- if (res.stdout.trim() === "") return { status: "degraded", reason: "bad-output" };
268
- const version = parseVersion(res.stdout);
269
- return version ? { status: "available", version } : { status: "available" };
270
- })();
271
- const recommendFramework = async (prompt) => {
272
- const res = await execCanary(["recommend", prompt, "--json"]);
273
- if (!res.ok) return degradedRecommendation();
274
- const parsed = frameworkRecommendationSchema.safeParse(safeJson(res.stdout));
275
- return parsed.success ? parsed.data : degradedRecommendation();
276
- };
277
- const reviewTest = async (path2, framework) => {
278
- const args = ["review-test", path2, "--json"];
279
- if (framework) args.push("--framework", framework);
280
- const res = await execCanary(args);
281
- if (!res.ok) return [];
282
- const parsed = canaryFindingsSchema.safeParse(safeJson(res.stdout));
283
- return parsed.success ? parsed.data : [];
284
- };
285
+ const probe = () => cachedProbe ??= probeCanary(exec);
286
+ const recommendFramework = (prompt) => recommendFrameworkCanary(exec, prompt);
287
+ const reviewTest = (path2, framework) => reviewTestCanary(exec, path2, framework);
285
288
  return { probe, recommendFramework, reviewTest };
286
289
  }
287
290
 
package/dist/index.mjs CHANGED
@@ -165,43 +165,46 @@ function degradedRecommendation() {
165
165
  alternatives: []
166
166
  };
167
167
  }
168
- function createCanaryAdapter(exec = defaultExec) {
169
- async function execCanary(subArgs) {
170
- const [cmd, args] = canaryInvocation(subArgs);
171
- try {
172
- const { stdout } = await exec(cmd, args);
173
- return { ok: true, stdout };
174
- } catch (err) {
175
- const e = err;
176
- if (e.code === "ENOENT") return { ok: false, reason: "not-installed" };
177
- if (e.code === 1 && /canary binary not found/i.test(e.stderr ?? "")) {
178
- return { ok: false, reason: "binary-missing" };
179
- }
180
- return { ok: false, reason: "exec-failed" };
168
+ async function execCanary(exec, subArgs) {
169
+ const [cmd, args] = canaryInvocation(subArgs);
170
+ try {
171
+ const { stdout } = await exec(cmd, args);
172
+ return { ok: true, stdout };
173
+ } catch (err) {
174
+ const e = err;
175
+ if (e.code === "ENOENT") return { ok: false, reason: "not-installed" };
176
+ if (e.code === 1 && /canary binary not found/i.test(e.stderr ?? "")) {
177
+ return { ok: false, reason: "binary-missing" };
181
178
  }
179
+ return { ok: false, reason: "exec-failed" };
182
180
  }
181
+ }
182
+ async function probeCanary(exec) {
183
+ const res = await execCanary(exec, ["version"]);
184
+ if (!res.ok) return { status: "degraded", reason: res.reason };
185
+ if (res.stdout.trim() === "") return { status: "degraded", reason: "bad-output" };
186
+ const version = parseVersion(res.stdout);
187
+ return version ? { status: "available", version } : { status: "available" };
188
+ }
189
+ async function recommendFrameworkCanary(exec, prompt) {
190
+ const res = await execCanary(exec, ["recommend", prompt, "--json"]);
191
+ if (!res.ok) return degradedRecommendation();
192
+ const parsed = frameworkRecommendationSchema.safeParse(safeJson(res.stdout));
193
+ return parsed.success ? parsed.data : degradedRecommendation();
194
+ }
195
+ async function reviewTestCanary(exec, path2, framework) {
196
+ const args = ["review-test", path2, "--json"];
197
+ if (framework) args.push("--framework", framework);
198
+ const res = await execCanary(exec, args);
199
+ if (!res.ok) return [];
200
+ const parsed = canaryFindingsSchema.safeParse(safeJson(res.stdout));
201
+ return parsed.success ? parsed.data : [];
202
+ }
203
+ function createCanaryAdapter(exec = defaultExec) {
183
204
  let cachedProbe;
184
- const probe = () => cachedProbe ??= (async () => {
185
- const res = await execCanary(["version"]);
186
- if (!res.ok) return { status: "degraded", reason: res.reason };
187
- if (res.stdout.trim() === "") return { status: "degraded", reason: "bad-output" };
188
- const version = parseVersion(res.stdout);
189
- return version ? { status: "available", version } : { status: "available" };
190
- })();
191
- const recommendFramework = async (prompt) => {
192
- const res = await execCanary(["recommend", prompt, "--json"]);
193
- if (!res.ok) return degradedRecommendation();
194
- const parsed = frameworkRecommendationSchema.safeParse(safeJson(res.stdout));
195
- return parsed.success ? parsed.data : degradedRecommendation();
196
- };
197
- const reviewTest = async (path2, framework) => {
198
- const args = ["review-test", path2, "--json"];
199
- if (framework) args.push("--framework", framework);
200
- const res = await execCanary(args);
201
- if (!res.ok) return [];
202
- const parsed = canaryFindingsSchema.safeParse(safeJson(res.stdout));
203
- return parsed.success ? parsed.data : [];
204
- };
205
+ const probe = () => cachedProbe ??= probeCanary(exec);
206
+ const recommendFramework = (prompt) => recommendFrameworkCanary(exec, prompt);
207
+ const reviewTest = (path2, framework) => reviewTestCanary(exec, path2, framework);
205
208
  return { probe, recommendFramework, reviewTest };
206
209
  }
207
210
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harness-engineering/intelligence",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Intelligence pipeline for spec enrichment, complexity modeling, and pre-execution simulation",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -40,8 +40,8 @@
40
40
  "@anthropic-ai/sdk": "^0.95.1",
41
41
  "openai": "^6.0.0",
42
42
  "zod": "^3.25.76",
43
- "@harness-engineering/graph": "0.11.2",
44
- "@harness-engineering/types": "0.16.2"
43
+ "@harness-engineering/graph": "0.11.3",
44
+ "@harness-engineering/types": "0.17.0"
45
45
  },
46
46
  "optionalDependencies": {
47
47
  "canary-test-cli": "^5.4.0"