@harness-engineering/cli 2.5.0 → 2.6.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 (51) hide show
  1. package/dist/{agents-md-KAD3L2NO.js → agents-md-2JUQ4FE2.js} +4 -4
  2. package/dist/{analyzer-VY6DJVOU-NI56JRFK.js → analyzer-VY6DJVOU-4AHIJLNS.js} +2 -2
  3. package/dist/{architecture-OC7TFCFF.js → architecture-CXAVNB5X.js} +5 -5
  4. package/dist/{assess-project-ZGMRPTS3.js → assess-project-M626SSPN.js} +1 -1
  5. package/dist/bin/harness-mcp.js +15 -15
  6. package/dist/bin/harness.js +24 -24
  7. package/dist/{check-phase-gate-PD5MVEZT.js → check-phase-gate-XMU6LLUQ.js} +5 -5
  8. package/dist/{chunk-N6VWCISQ.js → chunk-24KCOJJG.js} +2 -2
  9. package/dist/{chunk-XIW24BJY.js → chunk-43M3RLFQ.js} +3 -3
  10. package/dist/{chunk-2RNGLYOG.js → chunk-5JNSFYZU.js} +2 -2
  11. package/dist/{chunk-XSI3RDH6.js → chunk-6AX6R3LM.js} +7 -7
  12. package/dist/{chunk-DOUS4ULX.js → chunk-GWE5LL3R.js} +6 -6
  13. package/dist/{chunk-7DOGGXQU.js → chunk-GWF2OILZ.js} +2 -2
  14. package/dist/{chunk-TCSNO7YW.js → chunk-HFOB2MPQ.js} +2 -2
  15. package/dist/{chunk-6SRKI77C.js → chunk-HMW3VKUF.js} +3 -3
  16. package/dist/{chunk-IXKGMPMT.js → chunk-HYTRDAHV.js} +2 -2
  17. package/dist/{chunk-NOOPJD5R.js → chunk-I6K43QQS.js} +3 -3
  18. package/dist/{chunk-IGBQIXPS.js → chunk-JFZOWO7D.js} +2 -2
  19. package/dist/{chunk-57TS3UGN.js → chunk-K246XQ2L.js} +2 -2
  20. package/dist/{chunk-A3EBWI7U.js → chunk-L5BCZ5XS.js} +2 -2
  21. package/dist/{chunk-UCL3UZIC.js → chunk-NX6A24DS.js} +1588 -925
  22. package/dist/{chunk-65MJPWFN.js → chunk-OA6SWTU4.js} +6 -6
  23. package/dist/{chunk-2LPUIBVH.js → chunk-OH3NXXUY.js} +121 -2
  24. package/dist/{chunk-LT244Y6E.js → chunk-ORNMAYHB.js} +196 -75
  25. package/dist/{chunk-4CWFVEVV.js → chunk-PFZEADQM.js} +1 -1
  26. package/dist/{chunk-JE5GQVCQ.js → chunk-Q6ZR2L6Q.js} +2 -2
  27. package/dist/{chunk-UF7BKRH4.js → chunk-QOKMDDBJ.js} +4 -4
  28. package/dist/{chunk-IWRYCUDO.js → chunk-SZEFU6XC.js} +1 -1
  29. package/dist/{chunk-HIZXUWWC.js → chunk-VTTNIZJL.js} +21 -2
  30. package/dist/{chunk-ELMV6QU2.js → chunk-YP7I25SL.js} +2 -2
  31. package/dist/{chunk-KQ6TDRPS.js → chunk-YYRQCQPZ.js} +425 -173
  32. package/dist/{ci-workflow-WAG4TOV6.js → ci-workflow-3JNDZQYD.js} +4 -4
  33. package/dist/{dist-HVJUGPSY.js → dist-E3SAAHCM.js} +23 -1
  34. package/dist/{dist-TKHVYUWZ.js → dist-OHDQBTSO.js} +43 -3
  35. package/dist/{docs-4WPBYSCF.js → docs-5RYMDHN3.js} +5 -5
  36. package/dist/{engine-5BXDQT5T.js → engine-KZ3PPUYE.js} +4 -4
  37. package/dist/{entropy-7FIUFACI.js → entropy-DQTAPSSE.js} +4 -4
  38. package/dist/{feedback-ER2HRTFD.js → feedback-WH6XPQJS.js} +1 -1
  39. package/dist/{generate-agent-definitions-5PV4O3BD.js → generate-agent-definitions-SZA4QIHN.js} +5 -5
  40. package/dist/index.d.ts +47 -0
  41. package/dist/index.js +24 -24
  42. package/dist/{loader-6RTEYN5Q.js → loader-BNKGM23C.js} +4 -4
  43. package/dist/{mcp-QWSDEYMN.js → mcp-GZH4EYGD.js} +15 -15
  44. package/dist/{performance-AZJAT35R.js → performance-54TMJOEU.js} +5 -5
  45. package/dist/{review-pipeline-4VF73V4V.js → review-pipeline-OTDDVPNY.js} +4 -4
  46. package/dist/{runtime-SAZGLILX.js → runtime-W5THSNAL.js} +4 -4
  47. package/dist/{security-ZWRABJNE.js → security-27HW7CYT.js} +1 -1
  48. package/dist/{tool-tiers-LTQNNAFU.js → tool-tiers-B7JC2XC3.js} +3 -1
  49. package/dist/{validate-AFJVI4OX.js → validate-QRVCD4GP.js} +5 -5
  50. package/dist/{validate-cross-check-7PO7CBVT.js → validate-cross-check-BUAGBAPO.js} +4 -4
  51. package/package.json +6 -6
@@ -72,7 +72,7 @@ async function handleAssessProject(input) {
72
72
  let validateResult = null;
73
73
  if (checksToRun.has("validate")) {
74
74
  try {
75
- const { handleValidateProject } = await import("./validate-AFJVI4OX.js");
75
+ const { handleValidateProject } = await import("./validate-QRVCD4GP.js");
76
76
  const result = await handleValidateProject({ path: projectPath });
77
77
  const out = parseToolResponse(result, "validate");
78
78
  if ("error" in out) {
@@ -101,7 +101,7 @@ async function handleAssessProject(input) {
101
101
  parallelChecks.push(
102
102
  (async () => {
103
103
  try {
104
- const { handleCheckDependencies } = await import("./architecture-OC7TFCFF.js");
104
+ const { handleCheckDependencies } = await import("./architecture-CXAVNB5X.js");
105
105
  const result = await handleCheckDependencies({ path: projectPath });
106
106
  const out = parseToolResponse(result, "deps");
107
107
  if ("error" in out) return out.error;
@@ -129,7 +129,7 @@ async function handleAssessProject(input) {
129
129
  parallelChecks.push(
130
130
  (async () => {
131
131
  try {
132
- const { handleCheckDocs } = await import("./docs-4WPBYSCF.js");
132
+ const { handleCheckDocs } = await import("./docs-5RYMDHN3.js");
133
133
  const result = await handleCheckDocs({ path: projectPath, scope: "coverage" });
134
134
  const out = parseToolResponse(result, "docs");
135
135
  if ("error" in out) return out.error;
@@ -157,7 +157,7 @@ async function handleAssessProject(input) {
157
157
  parallelChecks.push(
158
158
  (async () => {
159
159
  try {
160
- const { handleDetectEntropy } = await import("./entropy-7FIUFACI.js");
160
+ const { handleDetectEntropy } = await import("./entropy-DQTAPSSE.js");
161
161
  const result = await handleDetectEntropy({ path: projectPath, type: "all" });
162
162
  const out = parseToolResponse(result, "entropy");
163
163
  if ("error" in out) return out.error;
@@ -188,7 +188,7 @@ async function handleAssessProject(input) {
188
188
  parallelChecks.push(
189
189
  (async () => {
190
190
  try {
191
- const { handleRunSecurityScan } = await import("./security-ZWRABJNE.js");
191
+ const { handleRunSecurityScan } = await import("./security-27HW7CYT.js");
192
192
  const result = await handleRunSecurityScan({ path: projectPath });
193
193
  const out = parseToolResponse(result, "security");
194
194
  if ("error" in out) return out.error;
@@ -221,7 +221,7 @@ async function handleAssessProject(input) {
221
221
  parallelChecks.push(
222
222
  (async () => {
223
223
  try {
224
- const { handleCheckPerformance } = await import("./performance-AZJAT35R.js");
224
+ const { handleCheckPerformance } = await import("./performance-54TMJOEU.js");
225
225
  const result = await handleCheckPerformance({ path: projectPath });
226
226
  if ("isError" in result && result.isError) {
227
227
  const msg = result.content[0]?.text ?? "Performance check failed";
@@ -8,6 +8,7 @@ import { z as z2 } from "zod";
8
8
  import { z as z3 } from "zod";
9
9
  import { z as z4 } from "zod";
10
10
  import { z as z5 } from "zod";
11
+ import { z as z6 } from "zod";
11
12
  function Ok(value) {
12
13
  return { ok: true, value };
13
14
  }
@@ -20,7 +21,7 @@ function isOk(result) {
20
21
  function isErr(result) {
21
22
  return result.ok === false;
22
23
  }
23
- var STANDARD_COGNITIVE_MODES, DEFAULT_SKILL_CONTEXT_BUDGET, SESSION_SECTION_NAMES, TrajectoryMetadataSchema, PromptCacheStatsSchema, OTLPKeyValueSchema, OTLPSpanSchema, TokenScopeSchema, BridgeKindSchema, AuthTokenSchema, AuthTokenPublicSchema, AuthAuditEntrySchema, WebhookSubscriptionSchema, WebhookSubscriptionPublicSchema, GatewayEventSchema, WebhookDeliveryStatusSchema, WebhookDeliverySchema, INDEXED_FILE_KINDS, SessionSummarySchema, INSIGHTS_KEYS, SESSIONS_DEFAULTS, NotificationSinkKindSchema, NotificationSeveritySchema, NotificationActionSchema, NotificationEnvelopeSchema, NotificationSinkConfigSchema, NotificationsConfigSchema, NotificationDeliveryResultSchema;
24
+ var STANDARD_COGNITIVE_MODES, DEFAULT_SKILL_CONTEXT_BUDGET, SESSION_SECTION_NAMES, TrajectoryMetadataSchema, PromptCacheStatsSchema, OTLPKeyValueSchema, OTLPSpanSchema, TokenScopeSchema, BridgeKindSchema, AuthTokenSchema, AuthTokenPublicSchema, AuthAuditEntrySchema, WebhookSubscriptionSchema, WebhookSubscriptionPublicSchema, GatewayEventSchema, WebhookDeliveryStatusSchema, WebhookDeliverySchema, INDEXED_FILE_KINDS, SessionSummarySchema, INSIGHTS_KEYS, SESSIONS_DEFAULTS, NotificationSinkKindSchema, NotificationSeveritySchema, NotificationActionSchema, NotificationEnvelopeSchema, NotificationSinkConfigSchema, NotificationsConfigSchema, NotificationDeliveryResultSchema, SkillProvenanceSchema, ProposalKindSchema, ProposalStatusSchema, ProposalGateFindingSchema, ProposalGateSchema, ProposalDecisionSchema, ProposalContentSchema, ProposalSourceSchema, SkillProposalSchema, EmitSkillProposalInputSchema, EditProposalInputSchema;
24
25
  var init_dist = __esm({
25
26
  "../types/dist/index.mjs"() {
26
27
  STANDARD_COGNITIVE_MODES = [
@@ -102,7 +103,8 @@ var init_dist = __esm({
102
103
  "resolve-interaction",
103
104
  "subscribe-webhook",
104
105
  "modify-roadmap",
105
- "read-telemetry"
106
+ "read-telemetry",
107
+ "manage-proposals"
106
108
  ]);
107
109
  BridgeKindSchema = z2.enum(["slack", "discord", "github-app", "custom"]);
108
110
  AuthTokenSchema = z2.object({
@@ -224,6 +226,112 @@ var init_dist = __esm({
224
226
  httpStatus: z5.number().int().optional()
225
227
  })
226
228
  ]);
229
+ SkillProvenanceSchema = z6.enum(["community", "agent-proposed", "user-authored"]);
230
+ ProposalKindSchema = z6.enum(["new-skill", "refinement"]);
231
+ ProposalStatusSchema = z6.enum([
232
+ "open",
233
+ "gate-running",
234
+ "gate-failed",
235
+ "approved",
236
+ "rejected"
237
+ ]);
238
+ ProposalGateFindingSchema = z6.object({
239
+ severity: z6.enum(["error", "warning"]),
240
+ title: z6.string(),
241
+ detail: z6.string()
242
+ });
243
+ ProposalGateSchema = z6.object({
244
+ lastRunAt: z6.string().datetime().optional(),
245
+ findings: z6.array(ProposalGateFindingSchema).optional()
246
+ });
247
+ ProposalDecisionSchema = z6.object({
248
+ decidedAt: z6.string().datetime(),
249
+ decidedBy: z6.string(),
250
+ action: z6.enum(["approved", "rejected"]),
251
+ reason: z6.string().optional()
252
+ });
253
+ ProposalContentSchema = z6.object({
254
+ name: z6.string().regex(/^[a-z][a-z0-9-]*$/).max(64),
255
+ description: z6.string().min(20).max(280),
256
+ skillYaml: z6.string().optional(),
257
+ skillMd: z6.string().optional(),
258
+ diff: z6.string().optional()
259
+ }).strict();
260
+ ProposalSourceSchema = z6.object({
261
+ sessionId: z6.string().optional(),
262
+ taskId: z6.string().optional(),
263
+ justification: z6.string().min(20).max(2e3)
264
+ });
265
+ SkillProposalSchema = z6.object({
266
+ id: z6.string().min(1),
267
+ createdAt: z6.string().datetime(),
268
+ kind: ProposalKindSchema,
269
+ targetSkill: z6.string().optional(),
270
+ proposedBy: z6.string().min(1),
271
+ source: ProposalSourceSchema,
272
+ content: ProposalContentSchema,
273
+ status: ProposalStatusSchema,
274
+ gate: ProposalGateSchema.optional(),
275
+ decision: ProposalDecisionSchema.optional()
276
+ }).superRefine((val, ctx) => {
277
+ if (val.kind === "new-skill") {
278
+ if (!val.content.skillYaml || !val.content.skillMd) {
279
+ ctx.addIssue({
280
+ code: z6.ZodIssueCode.custom,
281
+ path: ["content"],
282
+ message: "new-skill proposals require skillYaml and skillMd"
283
+ });
284
+ }
285
+ if (val.targetSkill) {
286
+ ctx.addIssue({
287
+ code: z6.ZodIssueCode.custom,
288
+ path: ["targetSkill"],
289
+ message: "targetSkill is forbidden on new-skill proposals"
290
+ });
291
+ }
292
+ if (val.content.diff) {
293
+ ctx.addIssue({
294
+ code: z6.ZodIssueCode.custom,
295
+ path: ["content", "diff"],
296
+ message: "diff is forbidden on new-skill proposals"
297
+ });
298
+ }
299
+ } else if (val.kind === "refinement") {
300
+ if (!val.targetSkill) {
301
+ ctx.addIssue({
302
+ code: z6.ZodIssueCode.custom,
303
+ path: ["targetSkill"],
304
+ message: "refinement proposals require targetSkill"
305
+ });
306
+ }
307
+ if (!val.content.diff) {
308
+ ctx.addIssue({
309
+ code: z6.ZodIssueCode.custom,
310
+ path: ["content", "diff"],
311
+ message: "refinement proposals require a unified diff"
312
+ });
313
+ }
314
+ if (val.content.skillYaml || val.content.skillMd) {
315
+ ctx.addIssue({
316
+ code: z6.ZodIssueCode.custom,
317
+ path: ["content"],
318
+ message: "skillYaml/skillMd are forbidden on refinement proposals (use diff)"
319
+ });
320
+ }
321
+ }
322
+ });
323
+ EmitSkillProposalInputSchema = z6.object({
324
+ kind: ProposalKindSchema,
325
+ targetSkill: z6.string().optional(),
326
+ proposedBy: z6.string().min(1).max(120),
327
+ justification: z6.string().min(20).max(2e3),
328
+ sessionId: z6.string().optional(),
329
+ taskId: z6.string().optional(),
330
+ content: ProposalContentSchema
331
+ });
332
+ EditProposalInputSchema = z6.object({
333
+ content: ProposalContentSchema.partial()
334
+ });
227
335
  }
228
336
  });
229
337
 
@@ -260,5 +368,16 @@ export {
260
368
  NotificationSinkConfigSchema,
261
369
  NotificationsConfigSchema,
262
370
  NotificationDeliveryResultSchema,
371
+ SkillProvenanceSchema,
372
+ ProposalKindSchema,
373
+ ProposalStatusSchema,
374
+ ProposalGateFindingSchema,
375
+ ProposalGateSchema,
376
+ ProposalDecisionSchema,
377
+ ProposalContentSchema,
378
+ ProposalSourceSchema,
379
+ SkillProposalSchema,
380
+ EmitSkillProposalInputSchema,
381
+ EditProposalInputSchema,
263
382
  init_dist
264
383
  };