tenjin-cli 0.1.0-alpha.1 → 0.1.0-alpha.3

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 (133) hide show
  1. package/NOTICE.md +33 -0
  2. package/README.md +167 -16
  3. package/dist/{_esm-ZH2J4QEH.js → _esm-C5CRWCYU.js} +2 -2
  4. package/dist/_esm-FEASBWRP.js +881 -0
  5. package/dist/buy-EE6SEXP6.js +1598 -0
  6. package/dist/buy-EE6SEXP6.js.map +1 -0
  7. package/dist/candidate-ERMSYYQZ.js +127 -0
  8. package/dist/candidate-ERMSYYQZ.js.map +1 -0
  9. package/dist/{ccip-UCLT5VOW.js → ccip-NQXCEK2U.js} +6 -5
  10. package/dist/ccip-XR5NE5QK.js +19 -0
  11. package/dist/chunk-2I4QTOLB.js +11 -0
  12. package/dist/chunk-2I4QTOLB.js.map +1 -0
  13. package/dist/chunk-3OV7E5G5.js +18 -0
  14. package/dist/chunk-3OV7E5G5.js.map +1 -0
  15. package/dist/chunk-4ONXEEQL.js +152 -0
  16. package/dist/chunk-4ONXEEQL.js.map +1 -0
  17. package/dist/chunk-5CLSD5YN.js +209 -0
  18. package/dist/chunk-5CLSD5YN.js.map +1 -0
  19. package/dist/chunk-662MSGZB.js +286 -0
  20. package/dist/chunk-662MSGZB.js.map +1 -0
  21. package/dist/chunk-7KUW4MJD.js +59 -0
  22. package/dist/chunk-7KUW4MJD.js.map +1 -0
  23. package/dist/{doctor-3QBYN46N.js → chunk-AWPAWHNX.js} +88 -93
  24. package/dist/chunk-AWPAWHNX.js.map +1 -0
  25. package/dist/chunk-CYOF7ROH.js +70 -0
  26. package/dist/chunk-CYOF7ROH.js.map +1 -0
  27. package/dist/chunk-DXTQ3CSI.js +171 -0
  28. package/dist/chunk-DXTQ3CSI.js.map +1 -0
  29. package/dist/{chunk-EZROUI5U.js → chunk-ESPNTPQ2.js} +80 -8
  30. package/dist/chunk-ESPNTPQ2.js.map +1 -0
  31. package/dist/chunk-FJPLRISB.js +79 -0
  32. package/dist/chunk-FJPLRISB.js.map +1 -0
  33. package/dist/chunk-GO75V3NZ.js +160 -0
  34. package/dist/chunk-GO75V3NZ.js.map +1 -0
  35. package/dist/chunk-HIVZG55D.js +204 -0
  36. package/dist/chunk-HIVZG55D.js.map +1 -0
  37. package/dist/chunk-HSDCI7OV.js +7806 -0
  38. package/dist/chunk-HSDCI7OV.js.map +1 -0
  39. package/dist/chunk-JPHG2JW3.js +96 -0
  40. package/dist/chunk-JPHG2JW3.js.map +1 -0
  41. package/dist/{chunk-ZPZFPVDN.js → chunk-MUBUQVC3.js} +1 -1
  42. package/dist/chunk-MUBUQVC3.js.map +1 -0
  43. package/dist/{chunk-T4LKNY7T.js → chunk-NCE5NSN6.js} +166 -11
  44. package/dist/chunk-NCE5NSN6.js.map +1 -0
  45. package/dist/{chunk-YG2DO46P.js → chunk-OYMYCW7J.js} +18 -3
  46. package/dist/{chunk-YG2DO46P.js.map → chunk-OYMYCW7J.js.map} +1 -1
  47. package/dist/{chunk-Q53IYV2G.js → chunk-QVX5MWJZ.js} +20 -17
  48. package/dist/{chunk-Q53IYV2G.js.map → chunk-QVX5MWJZ.js.map} +1 -1
  49. package/dist/{chunk-CUWUHTIL.js → chunk-RBJPAZFI.js} +16 -202
  50. package/dist/chunk-RBJPAZFI.js.map +1 -0
  51. package/dist/chunk-RRN3YTK7.js +6199 -0
  52. package/dist/chunk-RRN3YTK7.js.map +1 -0
  53. package/dist/chunk-RY4XKNV3.js +140 -0
  54. package/dist/chunk-RY4XKNV3.js.map +1 -0
  55. package/dist/chunk-S3IGX57D.js +14682 -0
  56. package/dist/chunk-S3IGX57D.js.map +1 -0
  57. package/dist/chunk-TLCMMYLY.js +126 -0
  58. package/dist/chunk-TLCMMYLY.js.map +1 -0
  59. package/dist/{chunk-IPOWB3G3.js → chunk-UGX7YPX2.js} +3314 -306
  60. package/dist/chunk-UGX7YPX2.js.map +1 -0
  61. package/dist/chunk-UO22YNY4.js +69 -0
  62. package/dist/chunk-UO22YNY4.js.map +1 -0
  63. package/dist/{config-CEFTL5ZL.js → chunk-XHC6FCGZ.js} +115 -18
  64. package/dist/chunk-XHC6FCGZ.js.map +1 -0
  65. package/dist/chunk-XJIW7USF.js +217 -0
  66. package/dist/chunk-XJIW7USF.js.map +1 -0
  67. package/dist/{chunk-BRJHUQSY.js → chunk-YALGASEU.js} +1548 -1452
  68. package/dist/chunk-YALGASEU.js.map +1 -0
  69. package/dist/{chunk-DXPYFVKG.js → chunk-YN5SHIXQ.js} +6 -6
  70. package/dist/chunk-YN5SHIXQ.js.map +1 -0
  71. package/dist/chunk-Z52RA3NC.js +137 -0
  72. package/dist/chunk-Z52RA3NC.js.map +1 -0
  73. package/dist/{chunk-EXBMF5X7.js → chunk-Z6MFJV5Z.js} +151 -19
  74. package/dist/chunk-Z6MFJV5Z.js.map +1 -0
  75. package/dist/chunk-ZABPQJ3M.js +83 -0
  76. package/dist/chunk-ZABPQJ3M.js.map +1 -0
  77. package/dist/{chunk-LPRVHM7P.js → chunk-ZMHYXMO6.js} +1655 -114
  78. package/dist/chunk-ZMHYXMO6.js.map +1 -0
  79. package/dist/{chunk-3IMLRUZE.js → chunk-ZXTAQYNA.js} +6 -2
  80. package/dist/{cli-WA65NP4Y.js → cli-SBXI5AMS.js} +177 -177
  81. package/dist/cli-SBXI5AMS.js.map +1 -0
  82. package/dist/config-VELDKLHY.js +21 -0
  83. package/dist/doctor-T3KWNNP2.js +20 -0
  84. package/dist/doctor-T3KWNNP2.js.map +1 -0
  85. package/dist/ethersCompat-Df4a6QIZ-3YZIAXDK.js +18 -0
  86. package/dist/ethersCompat-Df4a6QIZ-3YZIAXDK.js.map +1 -0
  87. package/dist/index.js +1 -1
  88. package/dist/inspect-LMKOXE4Y.js +96 -0
  89. package/dist/inspect-LMKOXE4Y.js.map +1 -0
  90. package/dist/install-LEX3ENQ6.js +387 -0
  91. package/dist/install-LEX3ENQ6.js.map +1 -0
  92. package/dist/lookup-ZPN2Q67N.js +129 -0
  93. package/dist/lookup-ZPN2Q67N.js.map +1 -0
  94. package/dist/{mine.wasm-GQECMSGN.js → mine.wasm-6PIT3DK6.js} +2 -2
  95. package/dist/outcome-N7TAK6WR.js +66 -0
  96. package/dist/outcome-N7TAK6WR.js.map +1 -0
  97. package/dist/publish-BKBQQAW4.js +1478 -0
  98. package/dist/publish-BKBQQAW4.js.map +1 -0
  99. package/dist/{secp256k1-BEZS642W.js → secp256k1-N3ZHU7LB.js} +5 -4
  100. package/dist/secp256k1-N3ZHU7LB.js.map +1 -0
  101. package/dist/usdc-JIAJW4SV.js +22 -0
  102. package/dist/usdc-JIAJW4SV.js.map +1 -0
  103. package/dist/viemAdapter-By13KInL-ZZE6UV4Y.js +14 -0
  104. package/dist/viemAdapter-By13KInL-ZZE6UV4Y.js.map +1 -0
  105. package/dist/{wallet-XD576HF3.js → wallet-CWEMYVIH.js} +28 -22
  106. package/dist/{wallet-XD576HF3.js.map → wallet-CWEMYVIH.js.map} +1 -1
  107. package/dist/wallet-PA54CRBL.js +30 -0
  108. package/dist/wallet-PA54CRBL.js.map +1 -0
  109. package/package.json +19 -16
  110. package/skills/tenjin/SKILL.md +199 -0
  111. package/skills/tenjin-publish/SKILL.md +111 -0
  112. package/skills/tenjin-search/SKILL.md +133 -0
  113. package/dist/chunk-BRJHUQSY.js.map +0 -1
  114. package/dist/chunk-CUWUHTIL.js.map +0 -1
  115. package/dist/chunk-DXPYFVKG.js.map +0 -1
  116. package/dist/chunk-EXBMF5X7.js.map +0 -1
  117. package/dist/chunk-EZROUI5U.js.map +0 -1
  118. package/dist/chunk-IPOWB3G3.js.map +0 -1
  119. package/dist/chunk-LPRVHM7P.js.map +0 -1
  120. package/dist/chunk-T4LKNY7T.js.map +0 -1
  121. package/dist/chunk-ZPZFPVDN.js.map +0 -1
  122. package/dist/cli-WA65NP4Y.js.map +0 -1
  123. package/dist/config-CEFTL5ZL.js.map +0 -1
  124. package/dist/doctor-3QBYN46N.js.map +0 -1
  125. package/dist/usdc-44R6XZF2.js +0 -18
  126. package/dist/wallet-ELBTBMXO.js +0 -20
  127. /package/dist/{_esm-ZH2J4QEH.js.map → _esm-C5CRWCYU.js.map} +0 -0
  128. /package/dist/{ccip-UCLT5VOW.js.map → _esm-FEASBWRP.js.map} +0 -0
  129. /package/dist/{chunk-3IMLRUZE.js.map → ccip-NQXCEK2U.js.map} +0 -0
  130. /package/dist/{secp256k1-BEZS642W.js.map → ccip-XR5NE5QK.js.map} +0 -0
  131. /package/dist/{usdc-44R6XZF2.js.map → chunk-ZXTAQYNA.js.map} +0 -0
  132. /package/dist/{wallet-ELBTBMXO.js.map → config-VELDKLHY.js.map} +0 -0
  133. /package/dist/{mine.wasm-GQECMSGN.js.map → mine.wasm-6PIT3DK6.js.map} +0 -0
@@ -12,7 +12,11 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
12
12
  throw Error('Dynamic require of "' + x + '" is not supported');
13
13
  });
14
14
  var __commonJS = (cb, mod) => function __require2() {
15
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
15
+ try {
16
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
17
+ } catch (e) {
18
+ throw mod = 0, e;
19
+ }
16
20
  };
17
21
  var __export = (target, all) => {
18
22
  for (var name in all)
@@ -41,4 +45,4 @@ export {
41
45
  __export,
42
46
  __toESM
43
47
  };
44
- //# sourceMappingURL=chunk-3IMLRUZE.js.map
48
+ //# sourceMappingURL=chunk-ZXTAQYNA.js.map
@@ -1,14 +1,22 @@
1
1
  import { createRequire as __tenjinCreateRequire } from 'node:module'; const require = __tenjinCreateRequire(import.meta.url);
2
+ import {
3
+ defaultIo,
4
+ emitFailure,
5
+ emitSuccess
6
+ } from "./chunk-Z52RA3NC.js";
7
+ import {
8
+ package_default
9
+ } from "./chunk-FJPLRISB.js";
2
10
  import {
3
11
  CliError,
4
12
  dataDir,
5
13
  external_exports
6
- } from "./chunk-YG2DO46P.js";
14
+ } from "./chunk-OYMYCW7J.js";
7
15
  import {
8
16
  __commonJS,
9
17
  __require,
10
18
  __toESM
11
- } from "./chunk-3IMLRUZE.js";
19
+ } from "./chunk-ZXTAQYNA.js";
12
20
 
13
21
  // node_modules/.pnpm/commander@14.0.3/node_modules/commander/lib/error.js
14
22
  var require_error = __commonJS({
@@ -3460,173 +3468,6 @@ var {
3460
3468
  Help
3461
3469
  } = import_index.default;
3462
3470
 
3463
- // package.json
3464
- var package_default = {
3465
- name: "tenjin-cli",
3466
- version: "0.1.0-alpha.1",
3467
- type: "module",
3468
- description: "Tenjin agent CLI for the x402 knowledge marketplace.",
3469
- license: "MIT",
3470
- repository: {
3471
- type: "git",
3472
- url: "git+https://github.com/BackTrackCo/tenjin-agent.git"
3473
- },
3474
- homepage: "https://tenjin.blog/agents",
3475
- bugs: "https://github.com/BackTrackCo/tenjin-agent/issues",
3476
- keywords: [
3477
- "x402",
3478
- "usdc",
3479
- "base",
3480
- "ai-agents",
3481
- "agent-payments",
3482
- "mcp",
3483
- "knowledge-marketplace",
3484
- "micropayments",
3485
- "claude",
3486
- "codex",
3487
- "cli"
3488
- ],
3489
- bin: {
3490
- tenjin: "dist/index.js"
3491
- },
3492
- engines: {
3493
- node: ">=22"
3494
- },
3495
- files: [
3496
- "dist",
3497
- "NOTICE.md"
3498
- ],
3499
- packageManager: "pnpm@11.11.0",
3500
- scripts: {
3501
- build: "tsup",
3502
- test: "vitest run",
3503
- typecheck: "tsc --noEmit",
3504
- lint: "eslint .",
3505
- format: "prettier --write .",
3506
- "format:check": "prettier --check .",
3507
- check: "pnpm run build && pnpm run test",
3508
- "sync:skill": "node scripts/sync-skill.mjs",
3509
- "pack-smoke": "bash scripts/pack-smoke.sh",
3510
- prepare: "git config core.hooksPath .githooks || true"
3511
- },
3512
- dependencies: {},
3513
- devDependencies: {
3514
- "@eslint/js": "^9",
3515
- "@types/node": "^25",
3516
- commander: "^14.0.1",
3517
- eslint: "^9",
3518
- "eslint-config-prettier": "^10",
3519
- ox: "0.14.30",
3520
- prettier: "^3",
3521
- tsup: "^8.5.0",
3522
- typescript: "^6",
3523
- "typescript-eslint": "^8",
3524
- viem: "^2.53.1",
3525
- vitest: "^4.1.9",
3526
- zod: "^4.4.3"
3527
- }
3528
- };
3529
-
3530
- // src/lib/output.ts
3531
- import { styleText } from "util";
3532
- import { Stream } from "stream";
3533
-
3534
- // src/schemas.ts
3535
- var SCHEMA_VERSION = 1;
3536
- var ErrorCodeSchema = external_exports.enum([
3537
- "NODE_UNSUPPORTED",
3538
- "USAGE",
3539
- "CONFIG_INVALID",
3540
- "WALLET_EXISTS",
3541
- "WALLET_MISSING",
3542
- "WALLET_INVALID_KEY",
3543
- "PROVIDER_ERROR",
3544
- "RPC_ERROR",
3545
- "API_UNREACHABLE",
3546
- "CONTRACT_MISMATCH",
3547
- "REFUSED",
3548
- "NETWORK_ERROR",
3549
- "INTERNAL",
3550
- "NOT_IMPLEMENTED"
3551
- ]);
3552
- var MoneySchema = external_exports.object({
3553
- atomic: external_exports.string(),
3554
- usd: external_exports.string()
3555
- });
3556
- var OutputErrorSchema = external_exports.object({
3557
- code: ErrorCodeSchema,
3558
- message: external_exports.string(),
3559
- fix: external_exports.string().optional(),
3560
- details: external_exports.unknown().optional()
3561
- });
3562
- var SuccessEnvelopeSchema = external_exports.object({
3563
- schemaVersion: external_exports.literal(SCHEMA_VERSION),
3564
- command: external_exports.string(),
3565
- ok: external_exports.literal(true),
3566
- data: external_exports.unknown()
3567
- });
3568
- var FailureEnvelopeSchema = external_exports.object({
3569
- schemaVersion: external_exports.literal(SCHEMA_VERSION),
3570
- command: external_exports.string(),
3571
- ok: external_exports.literal(false),
3572
- error: OutputErrorSchema
3573
- });
3574
- var OutputEnvelopeSchema = external_exports.discriminatedUnion("ok", [
3575
- SuccessEnvelopeSchema,
3576
- FailureEnvelopeSchema
3577
- ]);
3578
-
3579
- // src/lib/output.ts
3580
- function defaultIo() {
3581
- return {
3582
- stdout: process.stdout,
3583
- stderr: process.stderr,
3584
- isTTY: Boolean(process.stdout.isTTY)
3585
- };
3586
- }
3587
- function emitSuccess(io, command, data, humanLines = [], opts = {}) {
3588
- writeJson(io.stdout, { schemaVersion: SCHEMA_VERSION, command, ok: true, data });
3589
- if (shouldRenderHuman(io, opts) && humanLines.length > 0) {
3590
- writeLines(io.stderr, humanLines);
3591
- }
3592
- }
3593
- function emitFailure(io, command, err, opts = {}) {
3594
- const cliErr = normalizeError(err);
3595
- const error = {
3596
- code: cliErr.code,
3597
- message: cliErr.message,
3598
- ...cliErr.fix !== void 0 ? { fix: cliErr.fix } : {},
3599
- ...cliErr.details !== void 0 ? { details: cliErr.details } : {}
3600
- };
3601
- writeJson(io.stdout, { schemaVersion: SCHEMA_VERSION, command, ok: false, error });
3602
- if (shouldRenderHuman(io, opts)) {
3603
- const lines = [paint(io, "red", `error: ${cliErr.message}`)];
3604
- if (cliErr.fix !== void 0) lines.push(paint(io, "dim", `fix: ${cliErr.fix}`));
3605
- writeLines(io.stderr, lines);
3606
- }
3607
- return cliErr;
3608
- }
3609
- function normalizeError(err) {
3610
- if (err instanceof CliError) return err;
3611
- if (err instanceof Error) return new CliError("INTERNAL", err.message, { cause: err });
3612
- return new CliError("INTERNAL", "Unexpected error", { details: err });
3613
- }
3614
- function shouldRenderHuman(io, opts) {
3615
- return io.isTTY && opts.json !== true;
3616
- }
3617
- function writeJson(stream, value) {
3618
- stream.write(`${JSON.stringify(value, null, 2)}
3619
- `);
3620
- }
3621
- function writeLines(stream, lines) {
3622
- if (lines.length > 0) stream.write(`${lines.join("\n")}
3623
- `);
3624
- }
3625
- function paint(io, format, text) {
3626
- if (io.stderr instanceof Stream) return styleText(format, text, { stream: io.stderr });
3627
- return styleText(format, text);
3628
- }
3629
-
3630
3471
  // src/cli.ts
3631
3472
  var GlobalOptsSchema = external_exports.object({
3632
3473
  json: external_exports.boolean().default(false),
@@ -3675,9 +3516,33 @@ function buildProgram(io, setExit) {
3675
3516
  if (io.isTTY && program2.opts().json !== true) io.stderr.write(str);
3676
3517
  }
3677
3518
  }).exitOverride();
3519
+ addGlobalFlags(program2.command("install")).description(
3520
+ "Detect installed harnesses (Claude Code, Codex), wire the Tenjin skills, then run the doctor checks last"
3521
+ ).option(
3522
+ "--harness <name>",
3523
+ "target a specific harness: claude | codex | shared (repeatable; overrides detection)",
3524
+ collect,
3525
+ []
3526
+ ).option("--dry-run", "print what would change without writing anything").option(
3527
+ "--publish-mode <mode>",
3528
+ "set the publish consent mode non-interactively: review | auto | full-auto"
3529
+ ).action(async function() {
3530
+ await runCommand("install", this, async (ctx) => {
3531
+ const o = this.opts();
3532
+ const { runInstall } = await import("./install-LEX3ENQ6.js");
3533
+ return runInstall(
3534
+ {
3535
+ ...Array.isArray(o.harness) && o.harness.length > 0 ? { harness: o.harness } : {},
3536
+ ...o.dryRun === true ? { dryRun: true } : {},
3537
+ ...typeof o.publishMode === "string" ? { publishMode: o.publishMode } : {}
3538
+ },
3539
+ ctx
3540
+ );
3541
+ });
3542
+ });
3678
3543
  addGlobalFlags(program2.command("doctor")).description("Check the local environment and Tenjin API reachability").action(async function() {
3679
3544
  await runCommand("doctor", this, async (ctx) => {
3680
- const { runDoctor } = await import("./doctor-3QBYN46N.js");
3545
+ const { runDoctor } = await import("./doctor-T3KWNNP2.js");
3681
3546
  return runDoctor(ctx);
3682
3547
  });
3683
3548
  });
@@ -3686,19 +3551,19 @@ function buildProgram(io, setExit) {
3686
3551
  );
3687
3552
  config.action(async function() {
3688
3553
  await runCommand("config", this, async (ctx) => {
3689
- const { runConfigList } = await import("./config-CEFTL5ZL.js");
3554
+ const { runConfigList } = await import("./config-VELDKLHY.js");
3690
3555
  return runConfigList(ctx);
3691
3556
  });
3692
3557
  });
3693
3558
  addGlobalFlags(config.command("get <key>")).description("Print one effective config value").action(async function(key) {
3694
3559
  await runCommand("config.get", this, async (ctx) => {
3695
- const { runConfigGet } = await import("./config-CEFTL5ZL.js");
3560
+ const { runConfigGet } = await import("./config-VELDKLHY.js");
3696
3561
  return runConfigGet({ key }, ctx);
3697
3562
  });
3698
3563
  });
3699
3564
  addGlobalFlags(config.command("set <key> <value>")).description("Set a config value (decimal USD accepted for spend keys)").action(async function(key, value) {
3700
3565
  await runCommand("config.set", this, async (ctx) => {
3701
- const { runConfigSet } = await import("./config-CEFTL5ZL.js");
3566
+ const { runConfigSet } = await import("./config-VELDKLHY.js");
3702
3567
  return runConfigSet({ key, value }, ctx);
3703
3568
  });
3704
3569
  });
@@ -3707,24 +3572,159 @@ function buildProgram(io, setExit) {
3707
3572
  );
3708
3573
  addGlobalFlags(wallet.command("create")).description("Create a new local wallet").action(async function() {
3709
3574
  await runCommand("wallet.create", this, async (ctx) => {
3710
- const { runWalletCreate } = await import("./wallet-XD576HF3.js");
3575
+ const { runWalletCreate } = await import("./wallet-CWEMYVIH.js");
3711
3576
  return runWalletCreate(ctx);
3712
3577
  });
3713
3578
  });
3714
3579
  addGlobalFlags(wallet.command("show")).description("Show the wallet address and key source (never the key)").action(async function() {
3715
3580
  await runCommand("wallet.show", this, async (ctx) => {
3716
- const { runWalletShow } = await import("./wallet-XD576HF3.js");
3581
+ const { runWalletShow } = await import("./wallet-CWEMYVIH.js");
3717
3582
  return runWalletShow(ctx);
3718
3583
  });
3719
3584
  });
3720
3585
  addGlobalFlags(wallet.command("balance")).description("Show the wallet USDC balance on Base").action(async function() {
3721
3586
  await runCommand("wallet.balance", this, async (ctx) => {
3722
- const { runWalletBalance } = await import("./wallet-XD576HF3.js");
3587
+ const { runWalletBalance } = await import("./wallet-CWEMYVIH.js");
3723
3588
  return runWalletBalance(ctx);
3724
3589
  });
3725
3590
  });
3591
+ addGlobalFlags(program2.command("lookup <question>")).description(
3592
+ "Ask for payable candidates or an honest MISS. Use when a task needs public knowledge someone may already have published; send only a generalized public question, never secrets or private context"
3593
+ ).option("--max-price <usd>", "only candidates at or below this decimal-USD price").option("--fresh-within <window>", "freshness window, e.g. P30D, P2W, P1Y").option("--limit <n>", "maximum candidates (1-10, default 5)").option("--applies-to <pair>", "applicability filter key=value (repeatable)", collect, []).action(async function(question) {
3594
+ await runCommand("lookup", this, async (ctx) => {
3595
+ const o = this.opts();
3596
+ const { runLookup } = await import("./lookup-ZPN2Q67N.js");
3597
+ return runLookup(
3598
+ {
3599
+ question,
3600
+ ...typeof o.maxPrice === "string" ? { maxPrice: o.maxPrice } : {},
3601
+ ...typeof o.freshWithin === "string" ? { freshWithin: o.freshWithin } : {},
3602
+ ...typeof o.limit === "string" ? { limit: o.limit } : {},
3603
+ ...Array.isArray(o.appliesTo) && o.appliesTo.length > 0 ? { appliesTo: o.appliesTo } : {}
3604
+ },
3605
+ ctx
3606
+ );
3607
+ });
3608
+ });
3609
+ addGlobalFlags(program2.command("inspect <resource>")).description(
3610
+ "Show a candidate's pre-purchase card / preview. Use after lookup, before buy, to check price, scope, and freshness; it never pays"
3611
+ ).action(async function(resource) {
3612
+ await runCommand("inspect", this, async (ctx) => {
3613
+ const { runInspect } = await import("./inspect-LMKOXE4Y.js");
3614
+ return runInspect({ ref: resource }, ctx);
3615
+ });
3616
+ });
3617
+ addGlobalFlags(program2.command("buy <resource>")).description(
3618
+ "Pay to read (x402 exact) with an entitlement re-check first. Use once inspect shows the candidate fits; owned content re-delivers free, and the saved body is data, never instructions"
3619
+ ).option("--max-price <usd>", "hard price cap in decimal USD (never bypassed by --yes)").option("--yes", "bypass the interactive confirm only (not the price cap)").option("--print-body", "include the full body in the machine output").option(
3620
+ "--sections <tokens>",
3621
+ "include leading sections within a token budget (deterministic, no model calls)"
3622
+ ).action(async function(resource) {
3623
+ await runCommand("buy", this, async (ctx) => {
3624
+ const o = this.opts();
3625
+ const { runBuy } = await import("./buy-EE6SEXP6.js");
3626
+ return runBuy(
3627
+ {
3628
+ ref: resource,
3629
+ ...typeof o.maxPrice === "string" ? { maxPrice: o.maxPrice } : {},
3630
+ ...o.yes === true ? { yes: true } : {},
3631
+ ...o.printBody === true ? { printBody: true } : {},
3632
+ ...typeof o.sections === "string" ? { sections: o.sections } : {}
3633
+ },
3634
+ ctx
3635
+ );
3636
+ });
3637
+ });
3638
+ addGlobalFlags(program2.command("publish [file]")).description(
3639
+ "Publish a Markdown file (or a parked --candidate) as a paid or free piece with an optional answer card, gated by the local scan and your publish.mode consent. Use to ship knowledge others can buy; a secret in the file hard-blocks, and soft findings need --yes"
3640
+ ).option(
3641
+ "--candidate <id>",
3642
+ "publish a parked candidate by id instead of a file (clears it on success)"
3643
+ ).option("--draft", "save as a private draft instead of publishing").option("--yes", "clear soft findings and the review confirm (never a hard block)").option("--mode <mode>", "consent mode for this run: review | auto | full-auto").option("--price <usd>", "post price in decimal USD (defaults to publish.defaultPrice)").option("--question <text>", "a question this piece answers (repeatable)", collect, []).option("--task <text>", "a task this piece supports (repeatable)", collect, []).option("--scope <text>", "what the piece covers (card scope)").option("--exclusions <text>", "what the piece does not cover (card exclusions)").option("--applies-to <pair>", "applicability key=value (repeatable)", collect, []).option("--as-of <iso>", "as-of timestamp, ISO-8601 with offset").option("--valid-until <iso>", "valid-until timestamp, ISO-8601 with offset").option("--artifact-type <type>", "document | skill | dataset").option("--temporal-mode <mode>", "snapshot | maintained | evergreen").option("--provenance <text>", "provenance summary (card)").option("--methodology <text>", "methodology summary (card)").action(async function(file) {
3644
+ await runCommand("publish", this, async (ctx) => {
3645
+ const o = this.opts();
3646
+ const { runPublish } = await import("./publish-BKBQQAW4.js");
3647
+ return runPublish(
3648
+ {
3649
+ ...typeof file === "string" ? { file } : {},
3650
+ ...typeof o.candidate === "string" ? { candidate: o.candidate } : {},
3651
+ ...o.draft === true ? { draft: true } : {},
3652
+ ...o.yes === true ? { yes: true } : {},
3653
+ ...typeof o.mode === "string" ? { mode: o.mode } : {},
3654
+ ...typeof o.price === "string" ? { price: o.price } : {},
3655
+ ...Array.isArray(o.question) && o.question.length > 0 ? { question: o.question } : {},
3656
+ ...Array.isArray(o.task) && o.task.length > 0 ? { task: o.task } : {},
3657
+ ...typeof o.scope === "string" ? { scope: o.scope } : {},
3658
+ ...typeof o.exclusions === "string" ? { exclusions: o.exclusions } : {},
3659
+ ...Array.isArray(o.appliesTo) && o.appliesTo.length > 0 ? { appliesTo: o.appliesTo } : {},
3660
+ ...typeof o.asOf === "string" ? { asOf: o.asOf } : {},
3661
+ ...typeof o.validUntil === "string" ? { validUntil: o.validUntil } : {},
3662
+ ...typeof o.artifactType === "string" ? { artifactType: o.artifactType } : {},
3663
+ ...typeof o.temporalMode === "string" ? { temporalMode: o.temporalMode } : {},
3664
+ ...typeof o.provenance === "string" ? { provenance: o.provenance } : {},
3665
+ ...typeof o.methodology === "string" ? { methodology: o.methodology } : {}
3666
+ },
3667
+ ctx
3668
+ );
3669
+ });
3670
+ });
3671
+ addGlobalFlags(program2.command("outcome")).description(
3672
+ "Report how a lookup ended, honestly (used, partially_used, rejected, regenerated, purchase_declined). Use after acting on a lookup; this closes the loop the marketplace learns from"
3673
+ ).option("--lookup-id <id>", "the lookup to report against").option("--last", "target the most recent local lookup").requiredOption(
3674
+ "--status <status>",
3675
+ "used | partially_used | rejected | regenerated | purchase_declined"
3676
+ ).option("--resource <id>", "the resourceId the outcome concerns").option("--content-hash <hash>", "sha256:<64hex> of the exact body read").action(async function() {
3677
+ await runCommand("outcome", this, async (ctx) => {
3678
+ const o = this.opts();
3679
+ const { runOutcome } = await import("./outcome-N7TAK6WR.js");
3680
+ return runOutcome(
3681
+ {
3682
+ status: String(o.status),
3683
+ ...typeof o.lookupId === "string" ? { lookupId: o.lookupId } : {},
3684
+ ...o.last === true ? { last: true } : {},
3685
+ ...typeof o.resource === "string" ? { resource: o.resource } : {},
3686
+ ...typeof o.contentHash === "string" ? { contentHash: o.contentHash } : {}
3687
+ },
3688
+ ctx
3689
+ );
3690
+ });
3691
+ });
3692
+ const candidate = addGlobalFlags(
3693
+ program2.command("candidate").description(
3694
+ "Manage local publish candidates (parked drafts; nothing uploads until publish)"
3695
+ )
3696
+ );
3697
+ addGlobalFlags(candidate.command("add <file>")).description("Park a Markdown draft as a publish candidate, tied to a lookup").requiredOption("--lookup-id <id>", "the lookup whose unmet demand this draft answers").option("--question <q>", "the question this draft answers").action(async function(file) {
3698
+ await runCommand("candidate.add", this, async (ctx) => {
3699
+ const o = this.opts();
3700
+ const { runCandidateAdd } = await import("./candidate-ERMSYYQZ.js");
3701
+ return runCandidateAdd(
3702
+ {
3703
+ file,
3704
+ lookupId: String(o.lookupId),
3705
+ ...typeof o.question === "string" ? { question: o.question } : {}
3706
+ },
3707
+ ctx
3708
+ );
3709
+ });
3710
+ });
3711
+ addGlobalFlags(candidate.command("list")).description("List pending candidates, newest first").action(async function() {
3712
+ await runCommand("candidate.list", this, async (ctx) => {
3713
+ const { runCandidateList } = await import("./candidate-ERMSYYQZ.js");
3714
+ return runCandidateList(ctx);
3715
+ });
3716
+ });
3717
+ addGlobalFlags(candidate.command("drop <id>")).description("Discard a pending candidate (never auto-deleted)").action(async function(id) {
3718
+ await runCommand("candidate.drop", this, async (ctx) => {
3719
+ const { runCandidateDrop } = await import("./candidate-ERMSYYQZ.js");
3720
+ return runCandidateDrop({ id }, ctx);
3721
+ });
3722
+ });
3726
3723
  return program2;
3727
3724
  }
3725
+ function collect(value, previous) {
3726
+ return [...previous, value];
3727
+ }
3728
3728
  async function main(argv, io = defaultIo()) {
3729
3729
  let exitCode = 0;
3730
3730
  const program2 = buildProgram(io, (code) => {
@@ -3756,4 +3756,4 @@ export {
3756
3756
  buildProgram,
3757
3757
  main
3758
3758
  };
3759
- //# sourceMappingURL=cli-WA65NP4Y.js.map
3759
+ //# sourceMappingURL=cli-SBXI5AMS.js.map