cnagent 2.2.19 → 2.2.21

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/package.json +1 -1
  2. package/tools/dist/cn.js +219 -213
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cnagent",
3
- "version": "2.2.19",
3
+ "version": "2.2.21",
4
4
  "description": "Coherent Network agent CLI — everything runs through cn",
5
5
  "keywords": [
6
6
  "cn-agent",
package/tools/dist/cn.js CHANGED
@@ -13667,7 +13667,7 @@ var require_cn_lib = __commonJS({
13667
13667
  );
13668
13668
  }
13669
13669
  var help_text = "cn - Coherent Network agent CLI\n\nUsage: cn <command> [options]\n\nCommands:\n # Agent decisions (output)\n delete <thread> GTD: discard\n defer <thread> GTD: postpone\n delegate <t> <peer> GTD: forward\n do <thread> GTD: claim/start\n done <thread> GTD: complete \xE2\x86\x92 archive\n reply <thread> <msg> Append to thread\n send <peer> <msg> Message to peer (or self)\n \n # cn operations (orchestrator)\n sync Fetch inbound + send outbound\n in Queue inbox \xE2\x86\x92 input.md \xE2\x86\x92 wake agent (alias: inbound, process)\n queue [list|clear] View or clear the task queue\n mca [list|add <desc>] Surface MCAs for community pickup\n inbox List inbox threads\n outbox List outbox threads\n next Get next inbox item (with cadence)\n read <thread> Read thread with cadence\n \n # Thread creation\n adhoc <title> Create adhoc thread\n daily Create/show daily reflection\n weekly Create/show weekly reflection\n \n # Hub management\n init [name] Create new hub\n setup System setup (logrotate + cron) \xE2\x80\x94 run with sudo\n status Show hub state\n commit [msg] Stage + commit\n push Push to origin\n save [msg] Commit + push\n peer Manage peers\n doctor Health check\n update Update cn to latest version\n\nAliases:\n i = inbox, o = outbox, s = status, d = doctor\n\nFlags:\n --help, -h Show help\n --version, -V Show version\n --json Machine-readable output\n --quiet, -q Minimal output\n --dry-run Show what would happen\n\nActor Model:\n cn runs on cron (every 5 min). It:\n 1. Syncs peers \xE2\x86\x92 queues new inbox items to state/queue/\n 2. If input.md empty \xE2\x86\x92 pops from queue \xE2\x86\x92 writes input.md \xE2\x86\x92 wakes agent\n Agent reads input.md, processes, deletes when done.\n";
13670
- var version = "2.2.19";
13670
+ var version = "2.2.21";
13671
13671
  module2.exports = {
13672
13672
  starts_with,
13673
13673
  strip_prefix,
@@ -33183,11 +33183,228 @@ function wake_agent(hub_path) {
33183
33183
  }
33184
33184
  console.log(warn("No input.md to wake with"));
33185
33185
  }
33186
+ function update_runtime(hub_path) {
33187
+ const runtime_path = Path.join(hub_path, "state/runtime.md");
33188
+ const v = exec("cn --version 2>/dev/null");
33189
+ let cn_ver;
33190
+ if (v !== void 0) {
33191
+ const s = Stdlib__String.trim(v);
33192
+ const match2 = Stdlib__String.split_on_char(
33193
+ /* ' ' */
33194
+ 32,
33195
+ s
33196
+ );
33197
+ if (match2) {
33198
+ const match$1 = match2.tl;
33199
+ cn_ver = match$1 ? match$1.hd : "unknown";
33200
+ } else {
33201
+ cn_ver = "unknown";
33202
+ }
33203
+ } else {
33204
+ cn_ver = "unknown";
33205
+ }
33206
+ const v$1 = exec("openclaw --version 2>/dev/null");
33207
+ const oc_ver = v$1 !== void 0 ? Stdlib__String.trim(v$1) : "unknown";
33208
+ const hub_name = Cn_lib.derive_name(hub_path);
33209
+ const c = exec_in(hub_path, "git rev-parse --short HEAD 2>/dev/null");
33210
+ const hub_commit = c !== void 0 ? Stdlib__String.trim(c) : "unknown";
33211
+ const c$1 = exec("git -C $(npm root -g)/cnagent rev-parse --short HEAD 2>/dev/null");
33212
+ const cn_commit = c$1 !== void 0 ? Stdlib__String.trim(c$1) : "unknown";
33213
+ const peers_path = Path.join(hub_path, "state/peers.md");
33214
+ let peer_count;
33215
+ if (Fs.existsSync(peers_path)) {
33216
+ const content = Fs.readFileSync(peers_path, "utf8");
33217
+ const lines = Stdlib__String.split_on_char(
33218
+ /* '\n' */
33219
+ 10,
33220
+ content
33221
+ );
33222
+ peer_count = Stdlib__List.length(Stdlib__List.filter((function(l) {
33223
+ if (l.length > 2) {
33224
+ return Stdlib__String.sub(l, 0, 2) === "- ";
33225
+ } else {
33226
+ return false;
33227
+ }
33228
+ }), lines));
33229
+ } else {
33230
+ peer_count = 0;
33231
+ }
33232
+ const content$1 = Curry._8(Stdlib__Printf.sprintf({
33233
+ TAG: (
33234
+ /* Format */
33235
+ 0
33236
+ ),
33237
+ _0: {
33238
+ TAG: (
33239
+ /* String_literal */
33240
+ 11
33241
+ ),
33242
+ _0: "# Runtime State\n\nAuto-generated by cn. Do not edit manually.\n\n```yaml\nlast_sync: ",
33243
+ _1: {
33244
+ TAG: (
33245
+ /* String */
33246
+ 2
33247
+ ),
33248
+ _0: (
33249
+ /* No_padding */
33250
+ 0
33251
+ ),
33252
+ _1: {
33253
+ TAG: (
33254
+ /* String_literal */
33255
+ 11
33256
+ ),
33257
+ _0: "\ncn_version: ",
33258
+ _1: {
33259
+ TAG: (
33260
+ /* String */
33261
+ 2
33262
+ ),
33263
+ _0: (
33264
+ /* No_padding */
33265
+ 0
33266
+ ),
33267
+ _1: {
33268
+ TAG: (
33269
+ /* String_literal */
33270
+ 11
33271
+ ),
33272
+ _0: "\ncn_commit: ",
33273
+ _1: {
33274
+ TAG: (
33275
+ /* String */
33276
+ 2
33277
+ ),
33278
+ _0: (
33279
+ /* No_padding */
33280
+ 0
33281
+ ),
33282
+ _1: {
33283
+ TAG: (
33284
+ /* String_literal */
33285
+ 11
33286
+ ),
33287
+ _0: "\ntemplate_version: ",
33288
+ _1: {
33289
+ TAG: (
33290
+ /* String */
33291
+ 2
33292
+ ),
33293
+ _0: (
33294
+ /* No_padding */
33295
+ 0
33296
+ ),
33297
+ _1: {
33298
+ TAG: (
33299
+ /* String_literal */
33300
+ 11
33301
+ ),
33302
+ _0: "\nopenclaw_version: ",
33303
+ _1: {
33304
+ TAG: (
33305
+ /* String */
33306
+ 2
33307
+ ),
33308
+ _0: (
33309
+ /* No_padding */
33310
+ 0
33311
+ ),
33312
+ _1: {
33313
+ TAG: (
33314
+ /* String_literal */
33315
+ 11
33316
+ ),
33317
+ _0: "\nhub_name: ",
33318
+ _1: {
33319
+ TAG: (
33320
+ /* String */
33321
+ 2
33322
+ ),
33323
+ _0: (
33324
+ /* No_padding */
33325
+ 0
33326
+ ),
33327
+ _1: {
33328
+ TAG: (
33329
+ /* String_literal */
33330
+ 11
33331
+ ),
33332
+ _0: "\nhub_commit: ",
33333
+ _1: {
33334
+ TAG: (
33335
+ /* String */
33336
+ 2
33337
+ ),
33338
+ _0: (
33339
+ /* No_padding */
33340
+ 0
33341
+ ),
33342
+ _1: {
33343
+ TAG: (
33344
+ /* String_literal */
33345
+ 11
33346
+ ),
33347
+ _0: "\npeer_count: ",
33348
+ _1: {
33349
+ TAG: (
33350
+ /* Int */
33351
+ 4
33352
+ ),
33353
+ _0: (
33354
+ /* Int_d */
33355
+ 0
33356
+ ),
33357
+ _1: (
33358
+ /* No_padding */
33359
+ 0
33360
+ ),
33361
+ _2: (
33362
+ /* No_precision */
33363
+ 0
33364
+ ),
33365
+ _3: {
33366
+ TAG: (
33367
+ /* String_literal */
33368
+ 11
33369
+ ),
33370
+ _0: "\n```\n",
33371
+ _1: (
33372
+ /* End_of_format */
33373
+ 0
33374
+ )
33375
+ }
33376
+ }
33377
+ }
33378
+ }
33379
+ }
33380
+ }
33381
+ }
33382
+ }
33383
+ }
33384
+ }
33385
+ }
33386
+ }
33387
+ }
33388
+ }
33389
+ }
33390
+ }
33391
+ },
33392
+ _1: "# Runtime State\n\nAuto-generated by cn. Do not edit manually.\n\n```yaml\nlast_sync: %s\ncn_version: %s\ncn_commit: %s\ntemplate_version: %s\nopenclaw_version: %s\nhub_name: %s\nhub_commit: %s\npeer_count: %d\n```\n"
33393
+ }), (/* @__PURE__ */ new Date()).toISOString(), cn_ver, cn_commit, cn_ver, oc_ver, hub_name, hub_commit, peer_count);
33394
+ Fs.writeFileSync(runtime_path, content$1);
33395
+ console.log(ok("Updated state/runtime.md"));
33396
+ }
33186
33397
  function run_sync(hub_path, name) {
33187
33398
  console.log(color("36", "Syncing..."));
33188
33399
  inbox_check(hub_path, name);
33189
33400
  inbox_process(hub_path);
33190
33401
  outbox_flush(hub_path, name);
33402
+ update_runtime(hub_path);
33403
+ exec_in(hub_path, "git add state/runtime.md");
33404
+ const commit_result = exec_in(hub_path, "git commit -m 'heartbeat' --allow-empty");
33405
+ if (commit_result !== void 0) {
33406
+ exec_in(hub_path, "git push origin 2>/dev/null");
33407
+ }
33191
33408
  console.log(ok("Sync complete"));
33192
33409
  }
33193
33410
  function run_queue_list(hub_path) {
@@ -36211,217 +36428,6 @@ function run_inbound(hub_path, name) {
36211
36428
  return;
36212
36429
  }
36213
36430
  }
36214
- function update_runtime(hub_path) {
36215
- const runtime_path = Path.join(hub_path, "state/runtime.md");
36216
- const v = exec("cn --version 2>/dev/null");
36217
- let cn_ver;
36218
- if (v !== void 0) {
36219
- const s = Stdlib__String.trim(v);
36220
- const match2 = Stdlib__String.split_on_char(
36221
- /* ' ' */
36222
- 32,
36223
- s
36224
- );
36225
- if (match2) {
36226
- const match$1 = match2.tl;
36227
- cn_ver = match$1 ? match$1.hd : "unknown";
36228
- } else {
36229
- cn_ver = "unknown";
36230
- }
36231
- } else {
36232
- cn_ver = "unknown";
36233
- }
36234
- const v$1 = exec("openclaw --version 2>/dev/null");
36235
- const oc_ver = v$1 !== void 0 ? Stdlib__String.trim(v$1) : "unknown";
36236
- const hub_name = Cn_lib.derive_name(hub_path);
36237
- const c = exec_in(hub_path, "git rev-parse --short HEAD 2>/dev/null");
36238
- const hub_commit = c !== void 0 ? Stdlib__String.trim(c) : "unknown";
36239
- const c$1 = exec("git -C $(npm root -g)/cnagent rev-parse --short HEAD 2>/dev/null");
36240
- const cn_commit = c$1 !== void 0 ? Stdlib__String.trim(c$1) : "unknown";
36241
- const peers_path = Path.join(hub_path, "state/peers.md");
36242
- let peer_count;
36243
- if (Fs.existsSync(peers_path)) {
36244
- const content = Fs.readFileSync(peers_path, "utf8");
36245
- const lines = Stdlib__String.split_on_char(
36246
- /* '\n' */
36247
- 10,
36248
- content
36249
- );
36250
- peer_count = Stdlib__List.length(Stdlib__List.filter((function(l) {
36251
- if (l.length > 2) {
36252
- return Stdlib__String.sub(l, 0, 2) === "- ";
36253
- } else {
36254
- return false;
36255
- }
36256
- }), lines));
36257
- } else {
36258
- peer_count = 0;
36259
- }
36260
- const content$1 = Curry._8(Stdlib__Printf.sprintf({
36261
- TAG: (
36262
- /* Format */
36263
- 0
36264
- ),
36265
- _0: {
36266
- TAG: (
36267
- /* String_literal */
36268
- 11
36269
- ),
36270
- _0: "# Runtime State\n\nAuto-generated by `cn update`. Do not edit manually.\n\n```yaml\nsession_start: ",
36271
- _1: {
36272
- TAG: (
36273
- /* String */
36274
- 2
36275
- ),
36276
- _0: (
36277
- /* No_padding */
36278
- 0
36279
- ),
36280
- _1: {
36281
- TAG: (
36282
- /* String_literal */
36283
- 11
36284
- ),
36285
- _0: "\ncn_version: ",
36286
- _1: {
36287
- TAG: (
36288
- /* String */
36289
- 2
36290
- ),
36291
- _0: (
36292
- /* No_padding */
36293
- 0
36294
- ),
36295
- _1: {
36296
- TAG: (
36297
- /* String_literal */
36298
- 11
36299
- ),
36300
- _0: "\ncn_commit: ",
36301
- _1: {
36302
- TAG: (
36303
- /* String */
36304
- 2
36305
- ),
36306
- _0: (
36307
- /* No_padding */
36308
- 0
36309
- ),
36310
- _1: {
36311
- TAG: (
36312
- /* String_literal */
36313
- 11
36314
- ),
36315
- _0: "\ntemplate_version: ",
36316
- _1: {
36317
- TAG: (
36318
- /* String */
36319
- 2
36320
- ),
36321
- _0: (
36322
- /* No_padding */
36323
- 0
36324
- ),
36325
- _1: {
36326
- TAG: (
36327
- /* String_literal */
36328
- 11
36329
- ),
36330
- _0: "\nopenclaw_version: ",
36331
- _1: {
36332
- TAG: (
36333
- /* String */
36334
- 2
36335
- ),
36336
- _0: (
36337
- /* No_padding */
36338
- 0
36339
- ),
36340
- _1: {
36341
- TAG: (
36342
- /* String_literal */
36343
- 11
36344
- ),
36345
- _0: "\nhub_name: ",
36346
- _1: {
36347
- TAG: (
36348
- /* String */
36349
- 2
36350
- ),
36351
- _0: (
36352
- /* No_padding */
36353
- 0
36354
- ),
36355
- _1: {
36356
- TAG: (
36357
- /* String_literal */
36358
- 11
36359
- ),
36360
- _0: "\nhub_commit: ",
36361
- _1: {
36362
- TAG: (
36363
- /* String */
36364
- 2
36365
- ),
36366
- _0: (
36367
- /* No_padding */
36368
- 0
36369
- ),
36370
- _1: {
36371
- TAG: (
36372
- /* String_literal */
36373
- 11
36374
- ),
36375
- _0: "\npeer_count: ",
36376
- _1: {
36377
- TAG: (
36378
- /* Int */
36379
- 4
36380
- ),
36381
- _0: (
36382
- /* Int_d */
36383
- 0
36384
- ),
36385
- _1: (
36386
- /* No_padding */
36387
- 0
36388
- ),
36389
- _2: (
36390
- /* No_precision */
36391
- 0
36392
- ),
36393
- _3: {
36394
- TAG: (
36395
- /* String_literal */
36396
- 11
36397
- ),
36398
- _0: "\n```\n",
36399
- _1: (
36400
- /* End_of_format */
36401
- 0
36402
- )
36403
- }
36404
- }
36405
- }
36406
- }
36407
- }
36408
- }
36409
- }
36410
- }
36411
- }
36412
- }
36413
- }
36414
- }
36415
- }
36416
- }
36417
- }
36418
- }
36419
- },
36420
- _1: "# Runtime State\n\nAuto-generated by `cn update`. Do not edit manually.\n\n```yaml\nsession_start: %s\ncn_version: %s\ncn_commit: %s\ntemplate_version: %s\nopenclaw_version: %s\nhub_name: %s\nhub_commit: %s\npeer_count: %d\n```\n"
36421
- }), (/* @__PURE__ */ new Date()).toISOString(), cn_ver, cn_commit, cn_ver, oc_ver, hub_name, hub_commit, peer_count);
36422
- Fs.writeFileSync(runtime_path, content$1);
36423
- console.log(ok("Updated state/runtime.md"));
36424
- }
36425
36431
  function run_init(name) {
36426
36432
  const hub_name = name !== void 0 ? name : Path.basename(process.cwd());
36427
36433
  const hub_dir = "cn-" + hub_name;
@@ -38508,6 +38514,7 @@ module.exports = {
38508
38514
  feed_next_input,
38509
38515
  shell_escape,
38510
38516
  wake_agent,
38517
+ update_runtime,
38511
38518
  run_sync,
38512
38519
  run_queue_list,
38513
38520
  run_queue_clear,
@@ -38525,7 +38532,6 @@ module.exports = {
38525
38532
  queue_mca_review,
38526
38533
  auto_save,
38527
38534
  run_inbound,
38528
- update_runtime,
38529
38535
  run_init,
38530
38536
  format_peers_md,
38531
38537
  run_peer_list,