@sema-agent/cli 1.0.14 → 1.0.16

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 (3) hide show
  1. package/npm-shrinkwrap.json +17 -17
  2. package/package.json +5 -5
  3. package/sema.js +170 -26
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@sema-agent/cli",
3
- "version": "1.0.14",
3
+ "version": "1.0.16",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@sema-agent/cli",
9
- "version": "1.0.14",
9
+ "version": "1.0.16",
10
10
  "license": "BUSL-1.1",
11
11
  "dependencies": {
12
12
  "@sema-agent/sdk": "0.0.53",
13
- "@sema-agent/server": "1.218.0"
13
+ "@sema-agent/server": "1.223.0"
14
14
  },
15
15
  "bin": {
16
16
  "sema": "sema.js"
@@ -629,9 +629,9 @@
629
629
  }
630
630
  },
631
631
  "node_modules/@sema-agent/core": {
632
- "version": "1.312.0",
633
- "resolved": "https://registry.npmjs.org/@sema-agent/core/-/core-1.312.0.tgz",
634
- "integrity": "sha512-a50syYHBa3TT1FjqZCGwK2YH3gt6o4YiyamJYGwY4ABdwCaj8wGBJZmkQw48J+1XEDo7NL/rV5xtaNzxn656Gw==",
632
+ "version": "1.317.0",
633
+ "resolved": "https://registry.npmjs.org/@sema-agent/core/-/core-1.317.0.tgz",
634
+ "integrity": "sha512-5RI3IW6cW3hE4WWGGV6mOADCLblWiegRMOyIUcCudjPW0rwplUMH7WiKjsJ2mPHQN6a6aUe/3/OjPek1w/N3Aw==",
635
635
  "license": "BUSL-1.1",
636
636
  "dependencies": {
637
637
  "@modelcontextprotocol/sdk": "1.29.0",
@@ -645,9 +645,9 @@
645
645
  }
646
646
  },
647
647
  "node_modules/@sema-agent/registry-core": {
648
- "version": "0.10.14",
649
- "resolved": "https://registry.npmjs.org/@sema-agent/registry-core/-/registry-core-0.10.14.tgz",
650
- "integrity": "sha512-6EJe0WmrOrnEY/mITs8FHwCbBy5zcUWzRd1QaOYdEPF5H1DGvv/YcowZ4fR9HTWOpa9l8VI5mJv8gJA4EVxD0w==",
648
+ "version": "0.10.19",
649
+ "resolved": "https://registry.npmjs.org/@sema-agent/registry-core/-/registry-core-0.10.19.tgz",
650
+ "integrity": "sha512-cRqXxGfcnRGY7UM6/ljYZucTt1NcCC0nXt0g1ChDzy+KiiHKuYwgN0jf7iTaT1yyHl+15bYlbA6TMJ2/dEoOQA==",
651
651
  "license": "BUSL-1.1",
652
652
  "dependencies": {
653
653
  "zod": "^3.24.0"
@@ -678,13 +678,13 @@
678
678
  }
679
679
  },
680
680
  "node_modules/@sema-agent/server": {
681
- "version": "1.218.0",
682
- "resolved": "https://registry.npmjs.org/@sema-agent/server/-/server-1.218.0.tgz",
683
- "integrity": "sha512-D7XfWT1qu7JR/3tFcJSvi79cuKw23cceFbD8Ic/dflxyPAvUm1OOez6tDViUA1bqONkQjNqDI9I+7EzUtmM9Gg==",
681
+ "version": "1.223.0",
682
+ "resolved": "https://registry.npmjs.org/@sema-agent/server/-/server-1.223.0.tgz",
683
+ "integrity": "sha512-rpgtgF2mQKrFjGY/1SVxVGgkCtMPy7g856NTa5Vv35ugNtqkbRuLoJg70qAgfNWaqSWbGUqgpw5K7DYdOfJ9uw==",
684
684
  "license": "BUSL-1.1",
685
685
  "dependencies": {
686
- "@sema-agent/core": "^1.305.0",
687
- "@sema-agent/registry-core": "^0.10.12",
686
+ "@sema-agent/core": "^1.315.0",
687
+ "@sema-agent/registry-core": "^0.10.16",
688
688
  "e2b": "^2.28.0",
689
689
  "libsodium-wrappers": "^0.8.4",
690
690
  "mysql2": "^3.22.4",
@@ -1077,9 +1077,9 @@
1077
1077
  }
1078
1078
  },
1079
1079
  "node_modules/e2b": {
1080
- "version": "2.34.0",
1081
- "resolved": "https://registry.npmjs.org/e2b/-/e2b-2.34.0.tgz",
1082
- "integrity": "sha512-oQ+5k1WHBEgZEPPx/ziBbFR9fM+x0ywsd74MGRcbUZQuC0XDbL8tVpHrv/gfGLOEwmZwewxTZcLHTg4xVZp5Lg==",
1080
+ "version": "2.35.0",
1081
+ "resolved": "https://registry.npmjs.org/e2b/-/e2b-2.35.0.tgz",
1082
+ "integrity": "sha512-ZOu2aNbnTtUcMBbLMB6houapLJxACco+PbmybzP42Id3H7ud8Z1HkQAVKj9nXwSH4g8llojwsRx6Ro6asQGJrg==",
1083
1083
  "license": "MIT",
1084
1084
  "dependencies": {
1085
1085
  "@bufbuild/protobuf": "^2.12.1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sema-agent/cli",
3
- "version": "1.0.14",
3
+ "version": "1.0.16",
4
4
  "description": "Sema — your own Claude Code-grade coding agent, in the terminal.",
5
5
  "license": "BUSL-1.1",
6
6
  "bin": {
@@ -22,13 +22,13 @@
22
22
  ],
23
23
  "dependencies": {
24
24
  "@sema-agent/sdk": "0.0.53",
25
- "@sema-agent/server": "1.218.0"
25
+ "@sema-agent/server": "1.223.0"
26
26
  },
27
27
  "overrides": {
28
- "@sema-agent/core": "1.312.0",
29
- "@sema-agent/registry-core": "0.10.14"
28
+ "@sema-agent/core": "1.317.0",
29
+ "@sema-agent/registry-core": "0.10.19"
30
30
  },
31
- "semaEngineVersion": "server 1.218.0 / core 1.312.0 / registry-core 0.10.14",
31
+ "semaEngineVersion": "server 1.223.0 / core 1.317.0 / registry-core 0.10.19",
32
32
  "engines": {
33
33
  "node": ">=18"
34
34
  }
package/sema.js CHANGED
@@ -157487,8 +157487,23 @@ var init_selfOrchestrationWireCaps = __esm({
157487
157487
  }
157488
157488
  });
157489
157489
 
157490
- // build-src/src/sema/forkWireCaps.ts
157490
+ // build-src/src/sema/retainBackgroundWireCaps.ts
157491
157491
  function isTruthy(v2) {
157492
+ const s = typeof v2 === "string" ? v2.trim().toLowerCase() : "";
157493
+ return s === "1" || s === "true" || s === "yes" || s === "on";
157494
+ }
157495
+ function retainBackgroundFromEnv(env5 = process.env) {
157496
+ return isTruthy(env5[RETAIN_BACKGROUND_ENV]) ? true : void 0;
157497
+ }
157498
+ var RETAIN_BACKGROUND_ENV;
157499
+ var init_retainBackgroundWireCaps = __esm({
157500
+ "build-src/src/sema/retainBackgroundWireCaps.ts"() {
157501
+ RETAIN_BACKGROUND_ENV = "SEMA_RETAIN_BACKGROUND";
157502
+ }
157503
+ });
157504
+
157505
+ // build-src/src/sema/forkWireCaps.ts
157506
+ function isTruthy2(v2) {
157492
157507
  const s = v2.trim().toLowerCase();
157493
157508
  return s === "1" || s === "true" || s === "yes" || s === "on";
157494
157509
  }
@@ -157499,7 +157514,7 @@ function isFalsy2(v2) {
157499
157514
  function enableForkFromEnv(env5 = process.env) {
157500
157515
  const raw2 = env5[ENABLE_FORK_ENV];
157501
157516
  if (typeof raw2 !== "string" || raw2.trim() === "") return void 0;
157502
- if (isTruthy(raw2)) return true;
157517
+ if (isTruthy2(raw2)) return true;
157503
157518
  if (isFalsy2(raw2)) return false;
157504
157519
  return void 0;
157505
157520
  }
@@ -157557,11 +157572,41 @@ function ultracodeFromInput(humanInput) {
157557
157572
  function ultracodeForRequest(humanInput) {
157558
157573
  return getUltracodePreset() || ultracodeFromInput(humanInput) ? true : void 0;
157559
157574
  }
157560
- var ultracodePreset, ULTRACODE_KEYWORD;
157575
+ function workflowFromInput(humanInput) {
157576
+ return typeof humanInput === "string" && WORKFLOW_KEYWORD.test(humanInput) ? true : void 0;
157577
+ }
157578
+ function deferOptedOut(env5) {
157579
+ const raw2 = env5[WORKFLOW_DEFER_ENV];
157580
+ const s = typeof raw2 === "string" ? raw2.trim().toLowerCase() : "";
157581
+ return s === "0" || s === "false" || s === "no" || s === "off";
157582
+ }
157583
+ function workflowDeferForRequest(humanInput, env5 = process.env) {
157584
+ if (deferOptedOut(env5)) return void 0;
157585
+ if (getUltracodePreset() || ultracodeFromInput(humanInput) || workflowFromInput(humanInput)) return void 0;
157586
+ return ["Workflow"];
157587
+ }
157588
+ function extraDeferFromEnv(env5) {
157589
+ const raw2 = env5[DEFER_TOOLS_ENV];
157590
+ if (typeof raw2 !== "string" || raw2.trim().length === 0) return [];
157591
+ return raw2.split(",").map((s) => s.trim()).filter((s) => s.length > 0);
157592
+ }
157593
+ function deferToolsForRequest(humanInput, env5 = process.env) {
157594
+ const workflowLane = workflowDeferForRequest(humanInput, env5) ?? [];
157595
+ const extra = extraDeferFromEnv(env5).filter(
157596
+ (name) => name !== "Workflow" || workflowLane.length > 0
157597
+ // activation wins over the env list for Workflow
157598
+ );
157599
+ const merged = [.../* @__PURE__ */ new Set([...workflowLane, ...extra])];
157600
+ return merged.length > 0 ? merged : void 0;
157601
+ }
157602
+ var ultracodePreset, ULTRACODE_KEYWORD, WORKFLOW_KEYWORD, WORKFLOW_DEFER_ENV, DEFER_TOOLS_ENV;
157561
157603
  var init_ultracodeWireCaps = __esm({
157562
157604
  "build-src/src/sema/ultracodeWireCaps.ts"() {
157563
157605
  ultracodePreset = false;
157564
157606
  ULTRACODE_KEYWORD = /\bultracode\b/i;
157607
+ WORKFLOW_KEYWORD = /\bworkflows?\b/i;
157608
+ WORKFLOW_DEFER_ENV = "SEMA_WORKFLOW_DEFER";
157609
+ DEFER_TOOLS_ENV = "SEMA_DEFER_TOOLS";
157565
157610
  }
157566
157611
  });
157567
157612
 
@@ -268575,7 +268620,7 @@ var require_websocket2 = __commonJS({
268575
268620
  var http3 = __require("http");
268576
268621
  var net = __require("net");
268577
268622
  var tls = __require("tls");
268578
- var { randomBytes: randomBytes26, createHash: createHash27 } = __require("crypto");
268623
+ var { randomBytes: randomBytes26, createHash: createHash28 } = __require("crypto");
268579
268624
  var { Duplex, Readable: Readable5 } = __require("stream");
268580
268625
  var { URL: URL6 } = __require("url");
268581
268626
  var PerMessageDeflate2 = require_permessage_deflate2();
@@ -269243,7 +269288,7 @@ var require_websocket2 = __commonJS({
269243
269288
  abortHandshake(websocket, socket, "Invalid Upgrade header");
269244
269289
  return;
269245
269290
  }
269246
- const digest = createHash27("sha1").update(key + GUID).digest("base64");
269291
+ const digest = createHash28("sha1").update(key + GUID).digest("base64");
269247
269292
  if (res.headers["sec-websocket-accept"] !== digest) {
269248
269293
  abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header");
269249
269294
  return;
@@ -269612,7 +269657,7 @@ var require_websocket_server = __commonJS({
269612
269657
  var EventEmitter5 = __require("events");
269613
269658
  var http3 = __require("http");
269614
269659
  var { Duplex } = __require("stream");
269615
- var { createHash: createHash27 } = __require("crypto");
269660
+ var { createHash: createHash28 } = __require("crypto");
269616
269661
  var extension2 = require_extension();
269617
269662
  var PerMessageDeflate2 = require_permessage_deflate2();
269618
269663
  var subprotocol2 = require_subprotocol();
@@ -269919,7 +269964,7 @@ var require_websocket_server = __commonJS({
269919
269964
  );
269920
269965
  }
269921
269966
  if (this._state > RUNNING) return abortHandshake(socket, 503);
269922
- const digest = createHash27("sha1").update(key + GUID).digest("base64");
269967
+ const digest = createHash28("sha1").update(key + GUID).digest("base64");
269923
269968
  const headers = [
269924
269969
  "HTTP/1.1 101 Switching Protocols",
269925
269970
  "Upgrade: websocket",
@@ -354261,7 +354306,7 @@ var init_classifierApprovalsHook = __esm({
354261
354306
  var React29, SentryErrorBoundary;
354262
354307
  var init_SentryErrorBoundary = __esm({
354263
354308
  "build-src/src/components/SentryErrorBoundary.ts"() {
354264
- React29 = __toESM(require_react(), 1);
354309
+ React29 = __toESM(require_react());
354265
354310
  SentryErrorBoundary = class extends React29.Component {
354266
354311
  constructor(props) {
354267
354312
  super(props);
@@ -433322,6 +433367,14 @@ function toTaskRequest(params) {
433322
433367
  if (selfOrchestration && process.env.SEMA_DEBUG) {
433323
433368
  console.error("[sema][seamQuery] selfOrchestration wire: SEMA_SELF_ORCHESTRATION \u2192 TaskRequest.selfOrchestration=true (run_workflow)");
433324
433369
  }
433370
+ const deferTools = selfOrchestration ? deferToolsForRequest(objective) : void 0;
433371
+ if (deferTools && process.env.SEMA_DEBUG) {
433372
+ console.error("[sema][seamQuery] deferTools wire: Workflow deferred (no activation source this turn)");
433373
+ }
433374
+ const retainBackground = process.env.SEMA_LIVE_BASEURL ? retainBackgroundFromEnv() : void 0;
433375
+ if (retainBackground && process.env.SEMA_DEBUG) {
433376
+ console.error("[sema][seamQuery] retainBackground wire: SEMA_RETAIN_BACKGROUND \u2192 TaskRequest.retainBackgroundProcesses=true");
433377
+ }
433325
433378
  const attachments = process.env.SEMA_LIVE_BASEURL ? attachmentsForRequest() : void 0;
433326
433379
  if (attachments && process.env.SEMA_DEBUG) {
433327
433380
  console.error(`[sema][seamQuery] attachments wire: ${Object.keys(attachments).join("+")} \u2192 TaskRequest.attachments`);
@@ -433401,6 +433454,10 @@ ${objective}`;
433401
433454
  // Workflow super-set: the top-level selfOrchestration flag (SEMA_SELF_ORCHESTRATION env opt-in, live-gated).
433402
433455
  // Present ⇒ the SERVICE mounts core run_workflow (gated on its deployment/tenant policy); absent ⇒ no stamp.
433403
433456
  ...selfOrchestration ? { selfOrchestration } : {},
433457
+ // Workflow deferred-disclosure ([1052]①): absent = fully exposed (activation turn / opt-out); present =
433458
+ // core 1.314 placeholder-on-wire, schema bytes out of the cache prefix, ToolSearch-activatable.
433459
+ ...deferTools ? { deferTools } : {},
433460
+ ...retainBackground ? { retainBackgroundProcesses: retainBackground } : {},
433404
433461
  // Fork super-set: the top-level enableFork flag — EXPLICIT boolean on live (core ≥1.257 treats absent
433405
433462
  // as granted; the shell's default-OFF product decision must be spelled out). Mock path stays unstamped.
433406
433463
  ...enableFork !== void 0 ? { enableFork } : {},
@@ -433721,6 +433778,7 @@ var init_seamQuery = __esm({
433721
433778
  init_imagesWireCaps();
433722
433779
  init_webSearchWireCaps();
433723
433780
  init_selfOrchestrationWireCaps();
433781
+ init_retainBackgroundWireCaps();
433724
433782
  init_forkWireCaps();
433725
433783
  init_attachmentsWireCaps();
433726
433784
  init_clientContextWireCaps();
@@ -479528,8 +479586,8 @@ var init_sema_brand = __esm({
479528
479586
  "Slash-command gating wired to the fleet capability handshake"
479529
479587
  ]
479530
479588
  },
479531
- productVersion: "1.0.14",
479532
- announcement: "sema 1.0.14 \u2014 CJK input method candidate windows now anchor to the input caret (the terminal cursor is shown while typing), and autonomous-loop wakeups resolve to real tick instructions instead of a literal sentinel"
479589
+ productVersion: "1.0.16",
479590
+ announcement: 'sema 1.0.16 \u2014 Workflow is now exposed on demand: say "workflow" or "ultracode" (or pick /effort ultracode) to surface it that turn; otherwise its schema stays out of your prompt for a leaner, cache-stable context. Opt out with SEMA_WORKFLOW_DEFER=0.'
479533
479591
  };
479534
479592
  }
479535
479593
  });
@@ -482463,8 +482521,8 @@ var require_sema_brand = __commonJS({
482463
482521
  "Slash-command gating wired to the fleet capability handshake"
482464
482522
  ]
482465
482523
  },
482466
- productVersion: "1.0.14",
482467
- announcement: "sema 1.0.14 \u2014 CJK input method candidate windows now anchor to the input caret (the terminal cursor is shown while typing), and autonomous-loop wakeups resolve to real tick instructions instead of a literal sentinel"
482524
+ productVersion: "1.0.16",
482525
+ announcement: 'sema 1.0.16 \u2014 Workflow is now exposed on demand: say "workflow" or "ultracode" (or pick /effort ultracode) to surface it that turn; otherwise its schema stays out of your prompt for a leaner, cache-stable context. Opt out with SEMA_WORKFLOW_DEFER=0.'
482468
482526
  };
482469
482527
  }
482470
482528
  });
@@ -496950,7 +497008,7 @@ function extraBodyUnsafe(v2) {
496950
497008
  function workerRouteKey(w2) {
496951
497009
  return w2.routePrefix ?? w2.name;
496952
497010
  }
496953
- var SECRET_LITERAL_RE, ENV_NAME, hasNul, NON_SECRET_URL, K8S_QUANTITY, TCP_PORT, ModelCost, SEALED_BOX_ALG, BASE64_SHAPE, SealedApiKey, ModelEntry2, ModelRole, RoleTarget, TierBindings, TierGroup, ModelsConfig, RosterEntry, RostersConfig, ScenarioEntry, ScenarioConfig, DELIVER_DENYLIST, SystemEntry, SystemsConfig, SystemStatusEntry, RuntimeConfig, GovernanceConfig, EntitlementBudget, TokenQuota, BudgetGroupMember, BudgetGroup, ScenarioAssignments, EntitlementRuntimeCaps, EntitlementTier, EntitlementOverride, EntitlementSubject, EntitlementGroupBinding, EntitlementConfig, SESSION_MIRROR_ENGINE_URL, SessionMirrorPolicy, ExecutionPublicKey, ExecutionPolicy, PROJECT_ID_REGEX, ProjectRegistration, ProjectsConfig, CollabTopology, CollabFinalizerType, CollabEarlyStop, CollabPersistence, CollabMember, CollabSlot, CollabTemplate, CollabConfig, DURATION, WorkerLifecycle, WorkerSecretRefs, RESERVED_WORKER_ENV, RESERVED_ENV_FIELD, WorkerSpec, WorkersConfig, WorkerCondition, WorkerStatus, HOST_NAME_MAX, HOSTS_ARRAY_MAX, HostEntry, HostsConfig, PROBE_CPU_CORES_MAX, PROBE_MEM_BYTES_MAX, HostProbes, HostStatus, SkillSpec, SkillsConfig, McpEnvRefs, HTTP_HEADER_NAME, McpHeaderRefs, McpTransport, McpServerSpec, McpConfig, PLUGIN_ORIGIN, GIT_COMMIT_SHA, PluginSource, PluginSpec, PluginsConfig, DOMAIN_SCHEMAS, SettingSource, EffectiveKey, DOMAINS;
497011
+ var SECRET_LITERAL_RE, ENV_NAME, hasNul, NON_SECRET_URL, K8S_QUANTITY, TCP_PORT, ModelCost, SEALED_BOX_ALG, BASE64_SHAPE, SealedApiKey, ModelEntry2, ModelRole, RoleTarget, TierBindings, TierGroup, ModelsConfig, RosterEntry, RostersConfig, ScenarioEntry, ScenarioConfig, DELIVER_DENYLIST, SystemEntry, SystemsConfig, SystemStatusEntry, RuntimeConfig, GovernanceConfig, EntitlementBudget, TokenQuota, BudgetGroupMember, BudgetGroup, ScenarioAssignments, EntitlementRuntimeCaps, EntitlementTier, EntitlementOverride, EntitlementSubject, EntitlementGroupBinding, EntitlementConfig, SESSION_MIRROR_ENGINE_URL, SessionMirrorPolicy, ExecutionPublicKey, ExecutionPolicy, PROJECT_ID_REGEX, ProjectRegistration, ProjectsConfig, CollabTopology, CollabFinalizerType, CollabEarlyStop, CollabPersistence, CollabMember, CollabSlot, CollabTemplate, CollabConfig, DURATION, WorkerLifecycle, WorkerSecretRefs, RESERVED_WORKER_ENV, RESERVED_ENV_FIELD, WorkerSpec, WorkersConfig, WorkerCondition, WorkerStatus, HOST_NAME_MAX, HOSTS_ARRAY_MAX, HostEntry, HostsConfig, PROBE_CPU_CORES_MAX, PROBE_MEM_BYTES_MAX, HostProbes, HostStatus, SkillSpec, SkillsConfig, McpEnvRefs, HTTP_HEADER_NAME, McpHeaderRefs, McpTransport, McpServerSpec, McpConfig, PLUGIN_ORIGIN, GIT_COMMIT_SHA, PluginSource, PluginSpec, PluginsConfig, PromptTextDeclaration, PromptBinding, PromptsConfig, EffectivePrompts, DOMAIN_SCHEMAS, SettingSource, EffectiveKey, DOMAINS;
496954
497012
  var init_types19 = __esm({
496955
497013
  "node_modules/@sema-agent/registry-core/dist/types.js"() {
496956
497014
  init_zod2();
@@ -497136,7 +497194,6 @@ var init_types19 = __esm({
497136
497194
  ScenarioEntry = external_exports3.object({
497137
497195
  name: external_exports3.string().regex(/^[a-z][a-z0-9-]{1,31}$/, "lowercase slug, 2-32 chars (a-z, 0-9, -)"),
497138
497196
  toolset: external_exports3.string().regex(/^[a-z][a-z0-9-]{0,63}$/, "toolset key (lowercase slug)"),
497139
- prompt: external_exports3.string().max(4096).optional(),
497140
497197
  enabled: external_exports3.boolean().default(true),
497141
497198
  notes: external_exports3.string().optional()
497142
497199
  });
@@ -497763,6 +497820,36 @@ var init_types19 = __esm({
497763
497820
  seen.add(p.name);
497764
497821
  });
497765
497822
  });
497823
+ PromptTextDeclaration = external_exports3.object({
497824
+ id: external_exports3.string().min(1).max(128),
497825
+ slot: external_exports3.enum(["identity", "scenario", "behavior"]),
497826
+ text: external_exports3.string().max(65536),
497827
+ contentHash: external_exports3.string().regex(/^sha256:[0-9a-f]{64}$/).optional()
497828
+ });
497829
+ PromptBinding = external_exports3.object({
497830
+ level: external_exports3.enum(["global", "worker", "scenario"]),
497831
+ worker: external_exports3.string().min(1).max(190).optional(),
497832
+ scenario: external_exports3.string().regex(/^[a-z][a-z0-9-]{1,31}$/).optional(),
497833
+ declarations: external_exports3.array(PromptTextDeclaration).max(64),
497834
+ enabled: external_exports3.boolean().default(true),
497835
+ notes: external_exports3.string().optional()
497836
+ }).superRefine((b3, ctx) => {
497837
+ if (b3.level === "worker" && !b3.worker)
497838
+ ctx.addIssue({ code: "custom", message: "level=worker requires `worker`" });
497839
+ if (b3.level === "scenario" && !b3.scenario)
497840
+ ctx.addIssue({ code: "custom", message: "level=scenario requires `scenario`" });
497841
+ if (b3.level === "global" && (b3.worker || b3.scenario))
497842
+ ctx.addIssue({ code: "custom", message: "level=global must not carry a selector" });
497843
+ });
497844
+ PromptsConfig = external_exports3.object({
497845
+ bindings: external_exports3.array(PromptBinding).max(256).default([])
497846
+ });
497847
+ EffectivePrompts = external_exports3.object({
497848
+ packId: external_exports3.string().regex(/^center:[0-9a-f]{12}$/),
497849
+ contentDigest: external_exports3.string().regex(/^sha256:[0-9a-f]{64}$/),
497850
+ sections: external_exports3.array(PromptTextDeclaration),
497851
+ scenarioOverrides: external_exports3.record(external_exports3.string(), external_exports3.array(PromptTextDeclaration)).optional()
497852
+ });
497766
497853
  DOMAIN_SCHEMAS = {
497767
497854
  models: ModelsConfig,
497768
497855
  rosters: RostersConfig,
@@ -497778,7 +497865,8 @@ var init_types19 = __esm({
497778
497865
  governance: GovernanceConfig,
497779
497866
  entitlement: EntitlementConfig,
497780
497867
  execution: ExecutionPolicy,
497781
- projects: ProjectsConfig
497868
+ projects: ProjectsConfig,
497869
+ prompts: PromptsConfig
497782
497870
  };
497783
497871
  SettingSource = external_exports3.discriminatedUnion("axis", [
497784
497872
  external_exports3.object({ axis: external_exports3.literal("layer"), layer: external_exports3.enum(["MANAGED", "PROJECT", "LOCAL"]), applied: external_exports3.boolean().optional(), reason: external_exports3.string().optional() }),
@@ -552713,7 +552801,8 @@ var init_epoch = __esm({
552713
552801
  orchestrationEnabled: false,
552714
552802
  awarenessEnabled: false,
552715
552803
  goalEnabled: false,
552716
- worktreeIsolated: false
552804
+ worktreeIsolated: false,
552805
+ teammateEnabled: false
552717
552806
  };
552718
552807
  PROBE_FACTS_ON = Object.fromEntries(Object.keys(PROBE_FACTS_OFF).map((k2) => [k2, true]));
552719
552808
  PROBE_VECTORS = [
@@ -553503,6 +553592,20 @@ An object or array parameter value must be a single JSON value \u2014 never writ
553503
553592
  }
553504
553593
  });
553505
553594
 
553595
+ // node_modules/@sema-agent/core/dist/prompts/coordinator.js
553596
+ var TEAMMATE_COMMUNICATION_ADDENDUM;
553597
+ var init_coordinator = __esm({
553598
+ "node_modules/@sema-agent/core/dist/prompts/coordinator.js"() {
553599
+ TEAMMATE_COMMUNICATION_ADDENDUM = `# Agent Teammate Communication
553600
+
553601
+ IMPORTANT: You are running as a named agent in a team. To communicate, use the SendMessage tool \u2014 \`to: "main"\` sends an update to the spawning conversation; \`to: "<name>"\` continues a teammate that has COMPLETED its run (a running teammate cannot receive messages yet \u2014 wait for its completion).
553602
+
553603
+ Just writing a response in text is not visible to others on your team - you MUST use the SendMessage tool.
553604
+
553605
+ The user interacts primarily with the spawning conversation. Your work is coordinated through teammate messaging.`;
553606
+ }
553607
+ });
553608
+
553506
553609
  // node_modules/@sema-agent/core/dist/prompt-assembly/packs/sema-default.js
553507
553610
  function harnessHeadText(inputs) {
553508
553611
  return harnessHeadLines(inputs.facts);
@@ -553512,6 +553615,7 @@ var init_sema_default = __esm({
553512
553615
  "node_modules/@sema-agent/core/dist/prompt-assembly/packs/sema-default.js"() {
553513
553616
  init_default6();
553514
553617
  init_supervisor();
553618
+ init_coordinator();
553515
553619
  CORE = {
553516
553620
  owner: "core",
553517
553621
  trust: "locked",
@@ -553569,6 +553673,7 @@ var init_sema_default = __esm({
553569
553673
  content: (i) => i.roleAppend,
553570
553674
  legacyBlockId: "role.append"
553571
553675
  },
553676
+ { id: "core/mode.teammate", slot: "scenario", rank: 405, ...CORE, admit: (i) => i.facts.teammateEnabled, content: () => TEAMMATE_COMMUNICATION_ADDENDUM, legacyBlockId: "mode.teammate" },
553572
553677
  {
553573
553678
  id: "core/discovery.mcp-instructions",
553574
553679
  slot: "discovery",
@@ -555796,7 +555901,7 @@ var init_subagent_steps = __esm({
555796
555901
  });
555797
555902
 
555798
555903
  // node_modules/@sema-agent/core/dist/agents/subagent.js
555799
- var EXTRA_TOOLS_MAX_FACTORY_CALLS_PER_TREE, EXTRA_TOOLS_BUDGET_NOTE, SESSION_BG_DEFAULT_TIMEOUT_SEC, RETAIN_DEFAULT_TTL_MS, FAILED_SESSION_RETAIN_TTL_MS;
555904
+ var EXTRA_TOOLS_MAX_FACTORY_CALLS_PER_TREE, EXTRA_TOOLS_BUDGET_NOTE, SESSION_BG_DEFAULT_TIMEOUT_SEC, RETAIN_DEFAULT_TTL_MS, FAILED_SESSION_RETAIN_TTL_MS, uplinkSeqGlobal;
555800
555905
  var init_subagent = __esm({
555801
555906
  "node_modules/@sema-agent/core/dist/agents/subagent.js"() {
555802
555907
  init_build3();
@@ -555823,6 +555928,7 @@ var init_subagent = __esm({
555823
555928
  SESSION_BG_DEFAULT_TIMEOUT_SEC = 30 * 60;
555824
555929
  RETAIN_DEFAULT_TTL_MS = 30 * 60 * 1e3;
555825
555930
  FAILED_SESSION_RETAIN_TTL_MS = 15 * 60 * 1e3;
555931
+ uplinkSeqGlobal = Date.now();
555826
555932
  }
555827
555933
  });
555828
555934
 
@@ -557147,6 +557253,13 @@ var init_workflow_run_store_contract = __esm({
557147
557253
  }
557148
557254
  });
557149
557255
 
557256
+ // node_modules/@sema-agent/core/dist/agents/roster-store.js
557257
+ var init_roster_store = __esm({
557258
+ "node_modules/@sema-agent/core/dist/agents/roster-store.js"() {
557259
+ init_task_registry();
557260
+ }
557261
+ });
557262
+
557150
557263
  // node_modules/@sema-agent/core/dist/agents/agent-definition.js
557151
557264
  var init_agent_definition = __esm({
557152
557265
  "node_modules/@sema-agent/core/dist/agents/agent-definition.js"() {
@@ -557247,6 +557360,8 @@ var init_routing = __esm({
557247
557360
  var init_explain = __esm({
557248
557361
  "node_modules/@sema-agent/core/dist/prompt-assembly/explain.js"() {
557249
557362
  init_event_registry();
557363
+ init_sema_default();
557364
+ init_default6();
557250
557365
  }
557251
557366
  });
557252
557367
 
@@ -557384,6 +557499,9 @@ var init_dist9 = __esm({
557384
557499
  init_workflow_run_store_contract();
557385
557500
  init_workflow_journal_store();
557386
557501
  init_untrusted_egress();
557502
+ init_roster_store();
557503
+ init_task_registry();
557504
+ init_coordinator();
557387
557505
  init_subagent();
557388
557506
  init_agent_definition();
557389
557507
  init_builtin_agents();
@@ -607667,8 +607785,8 @@ function _temp161() {
607667
607785
  var import_compiler_runtime316, import_react313, SETTINGS_ERRORS_NOTIFICATION_KEY;
607668
607786
  var init_useSettingsErrors = __esm({
607669
607787
  "build-src/src/hooks/notifs/useSettingsErrors.tsx"() {
607670
- import_compiler_runtime316 = __toESM(require_compiler_runtime());
607671
- import_react313 = __toESM(require_react());
607788
+ import_compiler_runtime316 = __toESM(require_compiler_runtime(), 1);
607789
+ import_react313 = __toESM(require_react(), 1);
607672
607790
  init_notifications();
607673
607791
  init_state();
607674
607792
  init_allErrors();
@@ -628944,8 +629062,19 @@ __export(liveInitToolFace_exports, {
628944
629062
  ENGINE_SCENARIO_EXTRAS_DEFAULT: () => ENGINE_SCENARIO_EXTRAS_DEFAULT,
628945
629063
  _resetLiveInitToolFaceForTest: () => _resetLiveInitToolFaceForTest,
628946
629064
  probeScenarioTools: () => probeScenarioTools,
628947
- resolveLiveInitToolFace: () => resolveLiveInitToolFace
629065
+ resolveLiveInitToolFace: () => resolveLiveInitToolFace,
629066
+ runnerFaceForEnv: () => runnerFaceForEnv
628948
629067
  });
629068
+ function runnerFaceForEnv(env5) {
629069
+ let face = [...ENGINE_RUNNER_FACE];
629070
+ if (env5.SCHEDULER_ENABLED === "false") {
629071
+ face = face.filter((n2) => !["CronCreate", "CronDelete", "CronList", "ScheduleWakeup"].includes(n2));
629072
+ }
629073
+ if (env5.SELF_ORCHESTRATION_ENABLED === "false") {
629074
+ face = face.filter((n2) => n2 !== "Workflow");
629075
+ }
629076
+ return face;
629077
+ }
628949
629078
  function _resetLiveInitToolFaceForTest() {
628950
629079
  cached4 = null;
628951
629080
  }
@@ -628999,7 +629128,7 @@ async function resolveLiveInitToolFace(argv, env5, opts) {
628999
629128
  ...askUserQuestion ? ["AskUserQuestion"] : [],
629000
629129
  ...webSearch ? ["WebSearch"] : []
629001
629130
  ];
629002
- const key = `${baseUrl}::${scenario2 ?? ""}::${askUserQuestion ? "q" : ""}${webSearch ? "w" : ""}`;
629131
+ const key = `${baseUrl}::${scenario2 ?? ""}::${askUserQuestion ? "q" : ""}${webSearch ? "w" : ""}::${env5.SCHEDULER_ENABLED === "false" ? "ns" : ""}${env5.SELF_ORCHESTRATION_ENABLED === "false" ? "nw" : ""}`;
629003
629132
  if (cached4 && cached4.key === key) return cached4.face;
629004
629133
  let names;
629005
629134
  let source = "wire-vocabulary";
@@ -629019,7 +629148,7 @@ async function resolveLiveInitToolFace(argv, env5, opts) {
629019
629148
  });
629020
629149
  if (probed) {
629021
629150
  const handsBand = probed.toolset === "full-body" ? ENGINE_HANDS_BAND : [];
629022
- names = [.../* @__PURE__ */ new Set([...probed.tools, ...handsBand, ...ENGINE_RUNNER_FACE, ...knobTools])];
629151
+ names = [.../* @__PURE__ */ new Set([...probed.tools, ...handsBand, ...runnerFaceForEnv(env5), ...knobTools])];
629023
629152
  source = "scenario-probe";
629024
629153
  if (env5.SEMA_DEBUG) {
629025
629154
  console.error(
@@ -629027,7 +629156,7 @@ async function resolveLiveInitToolFace(argv, env5, opts) {
629027
629156
  );
629028
629157
  }
629029
629158
  } else {
629030
- names = [...ENGINE_HANDS_BAND, ...ENGINE_SCENARIO_EXTRAS_DEFAULT, ...ENGINE_RUNNER_FACE, ...knobTools];
629159
+ names = [...ENGINE_HANDS_BAND, ...ENGINE_SCENARIO_EXTRAS_DEFAULT, ...runnerFaceForEnv(env5), ...knobTools];
629031
629160
  if (env5.SEMA_DEBUG) {
629032
629161
  console.error(
629033
629162
  `[sema] init tool face: scenario "${scenario2}" detail probe unavailable \u2014 falling back to the default wire vocabulary (may not match this scenario's roster)`
@@ -629035,7 +629164,7 @@ async function resolveLiveInitToolFace(argv, env5, opts) {
629035
629164
  }
629036
629165
  }
629037
629166
  } else {
629038
- names = [...ENGINE_HANDS_BAND, ...ENGINE_SCENARIO_EXTRAS_DEFAULT, ...ENGINE_RUNNER_FACE, ...knobTools];
629167
+ names = [...ENGINE_HANDS_BAND, ...ENGINE_SCENARIO_EXTRAS_DEFAULT, ...runnerFaceForEnv(env5), ...knobTools];
629039
629168
  }
629040
629169
  const face = { tools: names.map((name) => ({ name })), source };
629041
629170
  cached4 = { key, face };
@@ -629496,6 +629625,14 @@ async function* ask(params) {
629496
629625
  if (selfOrchestration && process.env.SEMA_DEBUG) {
629497
629626
  console.error("[sema] print-mode ask: selfOrchestration wire \u2192 TaskRequest.selfOrchestration=true (run_workflow)");
629498
629627
  }
629628
+ const deferTools = selfOrchestration ? deferToolsForRequest(objective) : void 0;
629629
+ if (deferTools && process.env.SEMA_DEBUG) {
629630
+ console.error("[sema] print-mode ask: deferTools wire \u2192 Workflow deferred (no activation source)");
629631
+ }
629632
+ const retainBackground = process.env.SEMA_LIVE_BASEURL ? retainBackgroundFromEnv() : void 0;
629633
+ if (retainBackground && process.env.SEMA_DEBUG) {
629634
+ console.error("[sema] print-mode ask: retainBackground wire \u2192 TaskRequest.retainBackgroundProcesses=true");
629635
+ }
629499
629636
  const attachments = process.env.SEMA_LIVE_BASEURL ? attachmentsForRequest() : void 0;
629500
629637
  if (attachments && process.env.SEMA_DEBUG) {
629501
629638
  console.error(`[sema] print-mode ask: attachments wire \u2192 TaskRequest.attachments (${Object.keys(attachments).join("+")})`);
@@ -629687,6 +629824,9 @@ async function* ask(params) {
629687
629824
  ...interactiveToolsField.interactiveTools === false ? { interactiveTools: false } : {},
629688
629825
  ...webSearch || wireHooks ? { settings: { ...webSearch ? { webSearch } : {}, ...wireHooks ? { hooks: wireHooks } : {} } } : {},
629689
629826
  ...selfOrchestration ? { selfOrchestration } : {},
629827
+ // Workflow deferred-disclosure ([1052]①): absent = fully exposed (activation turn / opt-out).
629828
+ ...deferTools ? { deferTools } : {},
629829
+ ...retainBackground ? { retainBackgroundProcesses: retainBackground } : {},
629690
629830
  ...enableFork !== void 0 ? { enableFork } : {},
629691
629831
  ...attachments ? { attachments } : {},
629692
629832
  ...skillsMcpFields
@@ -629877,6 +630017,8 @@ var init_seamQueryEngine = __esm({
629877
630017
  init_mockClient();
629878
630018
  init_webSearchWireCaps();
629879
630019
  init_selfOrchestrationWireCaps();
630020
+ init_ultracodeWireCaps();
630021
+ init_retainBackgroundWireCaps();
629880
630022
  init_forkWireCaps();
629881
630023
  init_attachmentsWireCaps();
629882
630024
  init_hooksWireCaps();
@@ -640538,6 +640680,7 @@ async function ensurePrintModeEngine() {
640538
640680
  async function ensureLocalEngineOneShot(label = "one-shot") {
640539
640681
  seedUserSettingsEnv();
640540
640682
  process.env.SCHEDULER_SESSION_WAKEUP ??= "false";
640683
+ process.env.SCHEDULER_ENABLED ??= "false";
640541
640684
  try {
640542
640685
  const { applyPersistedTlsTrust: applyPersistedTlsTrust2 } = await Promise.resolve().then(() => (init_tlsTrust(), tlsTrust_exports));
640543
640686
  await applyPersistedTlsTrust2();
@@ -653790,7 +653933,7 @@ Auth: unix socket -R \u2192 local proxy`, "info");
653790
653933
  pendingHookMessages
653791
653934
  }, renderAndRun);
653792
653935
  }
653793
- }).version("sema 1.0.14", "-v, --version", "Output the version number");
653936
+ }).version("sema 1.0.16", "-v, --version", "Output the version number");
653794
653937
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
653795
653938
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
653796
653939
  if (canUserConfigureAdvisor()) {
@@ -657656,7 +657799,7 @@ var init_local_load = __esm({
657656
657799
  // node_modules/@sema-agent/registry-core/dist/scheduler-store-node.js
657657
657800
  import { mkdirSync as mkdirSync24, readFileSync as readFileSync51, writeFileSync as writeFileSync21, renameSync as renameSync10 } from "node:fs";
657658
657801
  import { dirname as dirname88 } from "node:path";
657659
- import { randomBytes as randomBytes25 } from "node:crypto";
657802
+ import { randomBytes as randomBytes25, createHash as createHash27 } from "node:crypto";
657660
657803
  function loadSchedulerStore(path27) {
657661
657804
  try {
657662
657805
  return parseSchedulerStore(readFileSync51(path27, "utf-8"));
@@ -657697,6 +657840,7 @@ function mutateSchedulerStore(path27, fn2, opts) {
657697
657840
  var init_scheduler_store_node = __esm({
657698
657841
  "node_modules/@sema-agent/registry-core/dist/scheduler-store-node.js"() {
657699
657842
  init_scheduler_store();
657843
+ init_hash2();
657700
657844
  }
657701
657845
  });
657702
657846