@dam-agents/cli 0.2.10-rc1 → 0.2.11

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 (2) hide show
  1. package/dist/bin.js +186 -20
  2. package/package.json +3 -3
package/dist/bin.js CHANGED
@@ -26836,6 +26836,18 @@ var skillPublishInputSchema = external_exports.object({
26836
26836
  title: external_exports.string().optional(),
26837
26837
  body: external_exports.string().optional()
26838
26838
  });
26839
+ var skillCreateLocalInputSchema = external_exports.object({
26840
+ agentId: external_exports.string().min(1),
26841
+ skills: external_exports.array(
26842
+ external_exports.object({
26843
+ name: external_exports.string().min(1).max(128),
26844
+ content: external_exports.string().max(2 * 1024 * 1024)
26845
+ })
26846
+ ).min(1).max(50)
26847
+ }).refine(
26848
+ (v2) => v2.skills.reduce((n, s) => n + s.content.length, 0) <= 5 * 1024 * 1024,
26849
+ "batch exceeds 5 MB"
26850
+ );
26839
26851
 
26840
26852
  // ../api-server-api/src/modules/templates/schemas.ts
26841
26853
  var templateGetInputSchema = external_exports.object({
@@ -26924,7 +26936,11 @@ var spawnInvocationRequestSchema = external_exports.object({
26924
26936
  // OOM-kills at the template's small default memory, so let the driver raise
26925
26937
  // it. Same grammar and floors as the agent size knob.
26926
26938
  memory: external_exports.string().regex(/^\d+(Mi|Gi)$/, "memory must look like '512Mi' or '4Gi'").optional(),
26927
- cpu: external_exports.string().regex(/^\d+(\.\d+)?m?$/, "cpu must look like '2', '0.5' or '500m'").optional()
26939
+ cpu: external_exports.string().regex(/^\d+(\.\d+)?m?$/, "cpu must look like '2', '0.5' or '500m'").optional(),
26940
+ // Experiments v2 span attach: "<experimentId>/<spanId>" stamped by the
26941
+ // experiment SDK when the spawn happens inside a span, so the Trace Feed
26942
+ // shows this invocation under its stage. Opaque to invocations.
26943
+ experimentSpanId: external_exports.string().min(1).max(300).optional()
26928
26944
  }).refine((d2) => d2.image !== void 0 || d2.templateId !== void 0, {
26929
26945
  message: "either image or templateId is required"
26930
26946
  });
@@ -26997,6 +27013,16 @@ var skillPublishInputSchema2 = external_exports.object({
26997
27013
  var skillReadLocalInputSchema = external_exports.object({
26998
27014
  name: external_exports.string().min(1)
26999
27015
  });
27016
+ var skillWriteLocalInputSchema = external_exports.object({
27017
+ skills: external_exports.array(
27018
+ external_exports.object({
27019
+ /** Confirmed display name — becomes frontmatter `name:`; the dir is its slug. */
27020
+ name: external_exports.string().min(1).max(128),
27021
+ /** Raw Markdown file content; lands as SKILL.md. */
27022
+ content: external_exports.string()
27023
+ })
27024
+ ).min(1).max(50)
27025
+ });
27000
27026
 
27001
27027
  // ../agent-runtime-api/src/modules/ssh/schemas.ts
27002
27028
  var sshAuthorizeKeyInputSchema = external_exports.object({
@@ -27023,7 +27049,8 @@ var eventKind = external_exports.enum([
27023
27049
  "trigger",
27024
27050
  "schedule-reset",
27025
27051
  "workspace-seed",
27026
- "experiment-trigger",
27052
+ "workspace-command",
27053
+ "experiment-execute",
27027
27054
  "harness-config"
27028
27055
  ]);
27029
27056
  var mergeMode = external_exports.enum([
@@ -27128,16 +27155,26 @@ var workspaceSeedEvent = external_exports.object({
27128
27155
  expiresAt: external_exports.string().datetime({ offset: true }),
27129
27156
  payload: workspaceSeedEventPayload
27130
27157
  });
27131
- var experimentTriggerEventPayload = external_exports.object({
27158
+ var workspaceCommandEventPayload = external_exports.object({
27159
+ command: external_exports.string().min(1)
27160
+ });
27161
+ var workspaceCommandEvent = external_exports.object({
27162
+ id: external_exports.string().min(1),
27163
+ kind: external_exports.literal("workspace-command"),
27164
+ version: external_exports.number().int().nonnegative(),
27165
+ expiresAt: external_exports.string().datetime({ offset: true }),
27166
+ payload: workspaceCommandEventPayload
27167
+ });
27168
+ var experimentExecuteEventPayload = external_exports.object({
27132
27169
  experimentId: external_exports.string().min(1),
27133
27170
  task: external_exports.string().min(1)
27134
27171
  });
27135
- var experimentTriggerEvent = external_exports.object({
27172
+ var experimentExecuteEvent = external_exports.object({
27136
27173
  id: external_exports.string().min(1),
27137
- kind: external_exports.literal("experiment-trigger"),
27174
+ kind: external_exports.literal("experiment-execute"),
27138
27175
  version: external_exports.number().int().nonnegative(),
27139
27176
  expiresAt: external_exports.string().datetime({ offset: true }),
27140
- payload: experimentTriggerEventPayload
27177
+ payload: experimentExecuteEventPayload
27141
27178
  });
27142
27179
  var harnessConfigEventPayload = external_exports.object({
27143
27180
  model: external_exports.string().min(1).optional(),
@@ -27156,7 +27193,8 @@ var event = external_exports.discriminatedUnion("kind", [
27156
27193
  triggerEvent,
27157
27194
  scheduleResetEvent,
27158
27195
  workspaceSeedEvent,
27159
- experimentTriggerEvent,
27196
+ workspaceCommandEvent,
27197
+ experimentExecuteEvent,
27160
27198
  harnessConfigEvent
27161
27199
  ]);
27162
27200
  var harnessConfigChoice = external_exports.object({
@@ -27308,6 +27346,7 @@ var agentSizeSchema = external_exports.object({
27308
27346
  var agentUpgradeInputSchema = idSchema.extend({
27309
27347
  expectedToImage: external_exports.string().min(1).optional()
27310
27348
  });
27349
+ var agentKindSchema = external_exports.enum(["knowledge-base", "experiment"]);
27311
27350
  var agentCreateInputSchema = external_exports.object({
27312
27351
  name: external_exports.string().min(1).refine((n) => !n.startsWith("agent-"), {
27313
27352
  message: "agent name cannot start with 'agent-' (reserved for IDs)"
@@ -27350,6 +27389,12 @@ var agentCreateInputSchema = external_exports.object({
27350
27389
  // hibernated before the Sweep deletes it. Default zero — deleted as soon
27351
27390
  // as it hibernates. Ignored unless `sweepable`.
27352
27391
  lifetimeMs: external_exports.number().int().min(0).optional()
27392
+ // Agent Kind is deliberately NOT part of this schema: it is a
27393
+ // service-level field (see AgentCreateInput) set only by an owning module's
27394
+ // create path (knowledge-bases, experiments). A `kind` passed to the public
27395
+ // agents.create is stripped, so a caller cannot mint a marked agent that
27396
+ // skipped that module's setup — a KB or experiment sandbox whose Install
27397
+ // Command never ran.
27353
27398
  }).refine((d2) => d2.templateId !== void 0 || d2.image !== void 0, {
27354
27399
  message: "Either templateId or image is required"
27355
27400
  });
@@ -27483,18 +27528,135 @@ var scheduleStatusSchema = external_exports.object({
27483
27528
  });
27484
27529
 
27485
27530
  // ../api-server-api/src/modules/experiments/schemas.ts
27486
- var armVariationSchema = external_exports.string();
27531
+ var SCRIPT_CONTENT_MAX_BYTES = 256 * 1024;
27532
+ var DASHBOARD_CONTENT_MAX_BYTES = 512 * 1024;
27533
+ var CUSTOM_DATA_MAX_BYTES = 128 * 1024;
27534
+ var stageIdSchema = external_exports.string().trim().min(1).max(100);
27535
+ var spanIdSchema = external_exports.string().min(1).max(200);
27536
+ var isoTimestampSchema = external_exports.string().datetime({ offset: true });
27537
+ var skeletonSchema = external_exports.object({
27538
+ stages: external_exports.array(
27539
+ external_exports.object({
27540
+ id: stageIdSchema,
27541
+ /** Stage ids this stage runs after (edges of the graph). */
27542
+ after: external_exports.array(stageIdSchema).max(20).default([])
27543
+ })
27544
+ ).max(50).default([]),
27545
+ loops: external_exports.array(
27546
+ external_exports.object({
27547
+ id: stageIdSchema,
27548
+ /** Member stages, iterated together. */
27549
+ stages: external_exports.array(stageIdSchema).min(1).max(50)
27550
+ })
27551
+ ).max(10).default([])
27552
+ });
27553
+ var planRegisterRequestSchema = external_exports.object({
27554
+ name: external_exports.string().trim().min(1).max(200),
27555
+ skeleton: skeletonSchema,
27556
+ script: external_exports.object({
27557
+ /** Pod-local path the harness will execute (`python <path>`). */
27558
+ path: external_exports.string().min(1).max(1024),
27559
+ sha256: external_exports.string().regex(/^[a-f0-9]{64}$/),
27560
+ content: external_exports.string().max(SCRIPT_CONTENT_MAX_BYTES)
27561
+ }),
27562
+ /** Bespoke dashboard HTML captured like the script (the SDK's
27563
+ * dashboard_path): the platform creates or re-versions the draft's
27564
+ * dashboard artifact from it. Omitted = keep the existing dashboard, or
27565
+ * attach the stock one on first registration. */
27566
+ dashboard: external_exports.object({ content: external_exports.string().max(DASHBOARD_CONTENT_MAX_BYTES) }).optional()
27567
+ });
27568
+ var planRegisterResponseSchema = external_exports.object({
27569
+ experimentId: external_exports.string()
27570
+ });
27571
+ var runStartEventSchema = external_exports.object({
27572
+ type: external_exports.literal("run-start"),
27573
+ scriptSha256: external_exports.string().regex(/^[a-f0-9]{64}$/),
27574
+ scriptContent: external_exports.string().max(SCRIPT_CONTENT_MAX_BYTES).optional()
27575
+ });
27576
+ var stageDeclareEventSchema = external_exports.object({
27577
+ type: external_exports.literal("stage-declare"),
27578
+ stage: stageIdSchema
27579
+ });
27580
+ var spanStartEventSchema = external_exports.object({
27581
+ type: external_exports.literal("span-start"),
27582
+ spanId: spanIdSchema,
27583
+ stage: stageIdSchema,
27584
+ iteration: external_exports.number().int().nonnegative().optional(),
27585
+ parentSpanId: spanIdSchema.optional(),
27586
+ ts: isoTimestampSchema
27587
+ });
27588
+ var spanEndEventSchema = external_exports.object({
27589
+ type: external_exports.literal("span-end"),
27590
+ spanId: spanIdSchema,
27591
+ status: external_exports.enum(["ok", "error"]),
27592
+ /** Opaque by covenant: captured and charted, never normalized or ranked. */
27593
+ score: external_exports.number().finite().optional(),
27594
+ /** Artifact Library ids this span produced (candidates, reports). */
27595
+ artifactIds: external_exports.array(external_exports.string().min(1)).max(20).optional(),
27596
+ attrs: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
27597
+ ts: isoTimestampSchema
27598
+ });
27599
+ var customDataEventSchema = external_exports.object({
27600
+ type: external_exports.literal("custom-data"),
27601
+ data: external_exports.record(external_exports.string(), external_exports.unknown()),
27602
+ /** false replaces the blob instead of shallow-merging into it. */
27603
+ merge: external_exports.boolean().optional()
27604
+ });
27605
+ var heartbeatEventSchema = external_exports.object({
27606
+ type: external_exports.literal("heartbeat")
27607
+ });
27608
+ var traceEventSchema = external_exports.discriminatedUnion("type", [
27609
+ runStartEventSchema,
27610
+ stageDeclareEventSchema,
27611
+ spanStartEventSchema,
27612
+ spanEndEventSchema,
27613
+ customDataEventSchema,
27614
+ heartbeatEventSchema
27615
+ ]);
27616
+ var appendEventsRequestSchema = external_exports.object({
27617
+ events: external_exports.array(traceEventSchema).min(1).max(500)
27618
+ });
27619
+ var appendEventsResponseSchema = external_exports.object({
27620
+ accepted: external_exports.number().int().nonnegative()
27621
+ });
27622
+ var finishRequestSchema = external_exports.object({
27623
+ status: external_exports.enum(["completed", "failed"]),
27624
+ error: external_exports.string().max(2e3).optional()
27625
+ });
27487
27626
  var experimentIdInputSchema = external_exports.object({
27488
27627
  id: external_exports.string().min(1)
27489
27628
  });
27490
- var experimentCreateInputSchema = external_exports.object({
27491
- name: external_exports.string().trim().min(1, "name is required").max(200),
27492
- prompt: external_exports.string().trim().min(1, "prompt is required")
27629
+ var experimentSandboxCreateInputSchema = external_exports.object({
27630
+ name: external_exports.string().min(1).refine((n) => !n.startsWith("agent-"), {
27631
+ message: "agent name cannot start with 'agent-' (reserved for IDs)"
27632
+ }),
27633
+ templateId: external_exports.string().optional(),
27634
+ image: external_exports.string().optional(),
27635
+ description: external_exports.string().optional(),
27636
+ connectionIds: external_exports.array(external_exports.string()).optional(),
27637
+ egressPreset: egressPresetSchema.optional(),
27638
+ size: agentSizeSchema.optional()
27639
+ }).refine((d2) => d2.templateId !== void 0 || d2.image !== void 0, {
27640
+ message: "Either templateId or image is required"
27493
27641
  });
27494
- var experimentAddArmInputSchema = external_exports.object({
27495
- experimentId: external_exports.string().min(1),
27496
- agentId: external_exports.string().min(1),
27497
- armVariation: armVariationSchema.default("")
27642
+
27643
+ // ../api-server-api/src/modules/knowledge-bases/schemas.ts
27644
+ var knowledgeBaseTemplateIdSchema = external_exports.enum(["llm-wiki", "plain-wiki"]);
27645
+ var knowledgeBaseCreateInputSchema = external_exports.object({
27646
+ name: external_exports.string().min(1).refine((n) => !n.startsWith("agent-"), {
27647
+ message: "agent name cannot start with 'agent-' (reserved for IDs)"
27648
+ }),
27649
+ templateId: external_exports.string().optional(),
27650
+ image: external_exports.string().optional(),
27651
+ description: external_exports.string().optional(),
27652
+ connectionIds: external_exports.array(external_exports.string()).optional(),
27653
+ egressPreset: egressPresetSchema.optional(),
27654
+ size: agentSizeSchema.optional(),
27655
+ // Which installation procedure to bootstrap the agent with. Defaults to
27656
+ // the sole current template so older callers keep working.
27657
+ kbTemplateId: knowledgeBaseTemplateIdSchema.default("llm-wiki")
27658
+ }).refine((d2) => d2.templateId !== void 0 || d2.image !== void 0, {
27659
+ message: "Either templateId or image is required"
27498
27660
  });
27499
27661
 
27500
27662
  // ../api-server-api/src/modules/artifact-library/schemas.ts
@@ -27568,7 +27730,7 @@ var folderUpdateInputSchema = external_exports.object({
27568
27730
  var folderIdInputSchema = external_exports.object({ id: external_exports.string().min(1) });
27569
27731
 
27570
27732
  // ../api-server-api/src/modules/features/schemas.ts
27571
- var featureIdSchema = external_exports.enum(["advanced-connections", "experiments"]);
27733
+ var featureIdSchema = external_exports.enum(["advanced-connections"]);
27572
27734
  var featureSetFlagInputSchema = external_exports.object({
27573
27735
  feature: featureIdSchema,
27574
27736
  enabled: external_exports.boolean()
@@ -30998,6 +31160,7 @@ var clientCredentialsCreateInput = external_exports.object({
30998
31160
  var githubAppCreateInput = external_exports.object({
30999
31161
  ...commonFields,
31000
31162
  authKind: external_exports.literal("github-app"),
31163
+ host: external_exports.string().min(1).optional(),
31001
31164
  appId: external_exports.string().min(1),
31002
31165
  installationId: external_exports.string().min(1),
31003
31166
  privateKey: external_exports.string().min(1)
@@ -31029,7 +31192,8 @@ var SessionType = {
31029
31192
  ChannelSlack: "channel_slack",
31030
31193
  ChannelTelegram: "channel_telegram",
31031
31194
  ScheduleCron: "schedule_cron",
31032
- ExperimentTrial: "experiment_trial"
31195
+ /** The turn that launches an experiment script (Execute on a draft). */
31196
+ ExperimentExecute: "experiment_execute"
31033
31197
  };
31034
31198
  var SessionMode = /* @__PURE__ */ ((SessionMode2) => {
31035
31199
  SessionMode2["Chat"] = "chat";
@@ -31287,7 +31451,8 @@ var slackOutboundRecordSchema = external_exports.discriminatedUnion("kind", [
31287
31451
  kind: external_exports.literal("message"),
31288
31452
  channel: external_exports.string(),
31289
31453
  text: external_exports.string(),
31290
- threadTs: external_exports.string().optional()
31454
+ threadTs: external_exports.string().optional(),
31455
+ replyBroadcast: external_exports.boolean().optional()
31291
31456
  }).strict(),
31292
31457
  external_exports.object({
31293
31458
  kind: external_exports.literal("ephemeral"),
@@ -40323,7 +40488,7 @@ function createProcessEnvReader() {
40323
40488
 
40324
40489
  // src/modules/cli/infrastructure/package-version.ts
40325
40490
  function readPackageVersion() {
40326
- return true ? "0.2.10-rc1" : DEV_VERSION;
40491
+ return true ? "0.2.11" : DEV_VERSION;
40327
40492
  }
40328
40493
 
40329
40494
  // src/modules/cli/infrastructure/version-probe.ts
@@ -40588,7 +40753,7 @@ function buildConnectCommand(deps) {
40588
40753
  String(DEFAULT_TIMEOUT_SECONDS3)
40589
40754
  ).addHelpText(
40590
40755
  "after",
40591
- '\nExamples:\n dam connection connect github\n dam connection connect github --client-id Iv1.\u2026 --client-secret \u2026 # use your own OAuth app\n dam connection connect github --no-browser\n dam connection connect my-api --header-name X-API-Key --value sk-\u2026\n dam connection connect custom-client-credentials --host api.example.com \\\n --issuer-url https://auth.example.com/realms/main --client-id \u2026 --client-secret \u2026\n dam connection connect github-app --app-id 123456 --installation-id 987654 \\\n --private-key "$(cat app.pem)"\n dam connection connect bob --value sk-\u2026 --config model=premium-shell --config chatMode=code\n dam connection connect https://mcp.example.com\n dam connection connect https://mcp.example.com --auth none\n'
40756
+ '\nExamples:\n dam connection connect github\n dam connection connect github --client-id Iv1.\u2026 --client-secret \u2026 # use your own OAuth app\n dam connection connect github --no-browser\n dam connection connect my-api --header-name X-API-Key --value sk-\u2026\n dam connection connect custom-client-credentials --host api.example.com \\\n --issuer-url https://auth.example.com/realms/main --client-id \u2026 --client-secret \u2026\n dam connection connect github-app --app-id 123456 --installation-id 987654 \\\n --private-key "$(cat app.pem)"\n dam connection connect github-enterprise-app --host ghe.acme.com \\\n --app-id 123456 --installation-id 987654 --private-key "$(cat app.pem)"\n dam connection connect bob --value sk-\u2026 --config model=premium-shell --config chatMode=code\n dam connection connect https://mcp.example.com\n dam connection connect https://mcp.example.com --auth none\n'
40592
40757
  ).action(async (providerOrUrl, opts) => {
40593
40758
  const json2 = opts.json ?? false;
40594
40759
  const timeoutSeconds = parseTimeout2(opts.timeout);
@@ -40865,6 +41030,7 @@ function buildPayload(template, name, values) {
40865
41030
  return {
40866
41031
  ...common2,
40867
41032
  authKind: "github-app",
41033
+ ...v2("host") ? { host: v2("host") } : {},
40868
41034
  appId,
40869
41035
  installationId,
40870
41036
  privateKey
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dam-agents/cli",
3
3
  "author": "IBM Corp.",
4
- "version": "0.2.10-rc1",
4
+ "version": "0.2.11",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
7
7
  "homepage": "https://github.com/dam-agents/dam/tree/main/packages/cli#readme",
@@ -43,8 +43,8 @@
43
43
  "vitest": "^4.1.3",
44
44
  "ws": "^8.20.0",
45
45
  "zod": "^4.4.3",
46
+ "agent-runtime-api": "0.0.1",
46
47
  "dev-config": "0.0.1",
47
- "api-server-api": "0.0.1",
48
- "agent-runtime-api": "0.0.1"
48
+ "api-server-api": "0.0.1"
49
49
  }
50
50
  }