@owlmeans/viable-sdk 0.1.18-rc.8 → 0.1.18
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.
- package/README.md +29 -11
- package/agent-meta/manifest.json +16 -0
- package/agent-meta/skills/viable-sdk/SKILL.md +1033 -0
- package/build/api/collect/types.d.ts +30 -0
- package/build/api/collect/types.d.ts.map +1 -0
- package/build/api/collect/types.js +2 -0
- package/build/api/collect/types.js.map +1 -0
- package/build/api/collect.d.ts +14 -0
- package/build/api/collect.d.ts.map +1 -0
- package/build/api/collect.js +132 -0
- package/build/api/collect.js.map +1 -0
- package/build/api/consts.local.d.ts +21 -0
- package/build/api/consts.local.d.ts.map +1 -0
- package/build/api/consts.local.js +25 -0
- package/build/api/consts.local.js.map +1 -0
- package/build/api/index.d.ts +5 -0
- package/build/api/index.d.ts.map +1 -1
- package/build/api/index.js +2 -0
- package/build/api/index.js.map +1 -1
- package/build/api/remote.d.ts +13 -6
- package/build/api/remote.d.ts.map +1 -1
- package/build/api/remote.js +302 -35
- package/build/api/remote.js.map +1 -1
- package/build/api/transport/types.d.ts +14 -0
- package/build/api/transport/types.d.ts.map +1 -0
- package/build/api/transport/types.js +2 -0
- package/build/api/transport/types.js.map +1 -0
- package/build/api/transport.d.ts +4 -0
- package/build/api/transport.d.ts.map +1 -0
- package/build/api/transport.js +32 -0
- package/build/api/transport.js.map +1 -0
- package/build/api/types.d.ts +9 -0
- package/build/api/types.d.ts.map +1 -0
- package/build/api/types.js +2 -0
- package/build/api/types.js.map +1 -0
- package/build/api/types.local.d.ts +3 -0
- package/build/api/types.local.d.ts.map +1 -0
- package/build/api/types.local.js +2 -0
- package/build/api/types.local.js.map +1 -0
- package/build/consts.d.ts +29 -14
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +30 -14
- package/build/consts.js.map +1 -1
- package/build/context/consts.local.d.ts +18 -0
- package/build/context/consts.local.d.ts.map +1 -0
- package/build/context/consts.local.js +18 -0
- package/build/context/consts.local.js.map +1 -0
- package/build/context/index.d.ts +3 -7
- package/build/context/index.d.ts.map +1 -1
- package/build/context/index.js +58 -25
- package/build/context/index.js.map +1 -1
- package/build/context/types.d.ts +26 -0
- package/build/context/types.d.ts.map +1 -0
- package/build/context/types.js +2 -0
- package/build/context/types.js.map +1 -0
- package/build/executor/boot-check.d.ts +1 -40
- package/build/executor/boot-check.d.ts.map +1 -1
- package/build/executor/boot-check.js +22 -19
- package/build/executor/boot-check.js.map +1 -1
- package/build/executor/consts.d.ts +55 -0
- package/build/executor/consts.d.ts.map +1 -0
- package/build/executor/consts.js +66 -0
- package/build/executor/consts.js.map +1 -0
- package/build/executor/consts.local.d.ts +63 -0
- package/build/executor/consts.local.d.ts.map +1 -0
- package/build/executor/consts.local.js +69 -0
- package/build/executor/consts.local.js.map +1 -0
- package/build/executor/env/types.d.ts +40 -0
- package/build/executor/env/types.d.ts.map +1 -0
- package/build/executor/env/types.js +2 -0
- package/build/executor/env/types.js.map +1 -0
- package/build/executor/env.d.ts +11 -20
- package/build/executor/env.d.ts.map +1 -1
- package/build/executor/env.js +39 -59
- package/build/executor/env.js.map +1 -1
- package/build/executor/errors.d.ts +15 -0
- package/build/executor/errors.d.ts.map +1 -1
- package/build/executor/errors.js +19 -2
- package/build/executor/errors.js.map +1 -1
- package/build/executor/files/types.d.ts +106 -0
- package/build/executor/files/types.d.ts.map +1 -0
- package/build/executor/files/types.js +2 -0
- package/build/executor/files/types.js.map +1 -0
- package/build/executor/files.d.ts +2 -50
- package/build/executor/files.d.ts.map +1 -1
- package/build/executor/files.js +225 -68
- package/build/executor/files.js.map +1 -1
- package/build/executor/git/types.d.ts +19 -0
- package/build/executor/git/types.d.ts.map +1 -0
- package/build/executor/git/types.js +2 -0
- package/build/executor/git/types.js.map +1 -0
- package/build/executor/git.d.ts +4 -36
- package/build/executor/git.d.ts.map +1 -1
- package/build/executor/git.js +206 -241
- package/build/executor/git.js.map +1 -1
- package/build/executor/glob/types.d.ts +12 -0
- package/build/executor/glob/types.d.ts.map +1 -0
- package/build/executor/glob/types.js +2 -0
- package/build/executor/glob/types.js.map +1 -0
- package/build/executor/glob.d.ts +4 -0
- package/build/executor/glob.d.ts.map +1 -0
- package/build/executor/glob.js +11 -0
- package/build/executor/glob.js.map +1 -0
- package/build/executor/health/types.d.ts +39 -0
- package/build/executor/health/types.d.ts.map +1 -0
- package/build/executor/health/types.js +2 -0
- package/build/executor/health/types.js.map +1 -0
- package/build/executor/health.d.ts +3 -83
- package/build/executor/health.d.ts.map +1 -1
- package/build/executor/health.js +76 -91
- package/build/executor/health.js.map +1 -1
- package/build/executor/index.d.ts +14 -15
- package/build/executor/index.d.ts.map +1 -1
- package/build/executor/index.js +36 -18
- package/build/executor/index.js.map +1 -1
- package/build/executor/integrity/types.d.ts +25 -0
- package/build/executor/integrity/types.d.ts.map +1 -0
- package/build/executor/integrity/types.js +2 -0
- package/build/executor/integrity/types.js.map +1 -0
- package/build/executor/integrity.d.ts +5 -15
- package/build/executor/integrity.d.ts.map +1 -1
- package/build/executor/integrity.js +28 -39
- package/build/executor/integrity.js.map +1 -1
- package/build/executor/layout/types.d.ts +69 -0
- package/build/executor/layout/types.d.ts.map +1 -0
- package/build/executor/layout/types.js +2 -0
- package/build/executor/layout/types.js.map +1 -0
- package/build/executor/layout.d.ts +9 -56
- package/build/executor/layout.d.ts.map +1 -1
- package/build/executor/layout.js +35 -82
- package/build/executor/layout.js.map +1 -1
- package/build/executor/shell/types.d.ts +76 -0
- package/build/executor/shell/types.d.ts.map +1 -0
- package/build/executor/shell/types.js +2 -0
- package/build/executor/shell/types.js.map +1 -0
- package/build/executor/shell.d.ts +3 -78
- package/build/executor/shell.d.ts.map +1 -1
- package/build/executor/shell.js +61 -91
- package/build/executor/shell.js.map +1 -1
- package/build/executor/spawn/types.d.ts +98 -0
- package/build/executor/spawn/types.d.ts.map +1 -0
- package/build/executor/spawn/types.js +2 -0
- package/build/executor/spawn/types.js.map +1 -0
- package/build/executor/spawn.d.ts +3 -103
- package/build/executor/spawn.d.ts.map +1 -1
- package/build/executor/spawn.js +192 -274
- package/build/executor/spawn.js.map +1 -1
- package/build/executor/types.d.ts +123 -0
- package/build/executor/types.d.ts.map +1 -0
- package/build/executor/types.js +2 -0
- package/build/executor/types.js.map +1 -0
- package/build/executor/types.local.d.ts +6 -0
- package/build/executor/types.local.d.ts.map +1 -0
- package/build/executor/types.local.js +2 -0
- package/build/executor/types.local.js.map +1 -0
- package/build/index.d.ts +14 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +5 -1
- package/build/index.js.map +1 -1
- package/build/project/consts.d.ts +17 -0
- package/build/project/consts.d.ts.map +1 -0
- package/build/project/consts.js +17 -0
- package/build/project/consts.js.map +1 -0
- package/build/project/consts.local.d.ts +4 -0
- package/build/project/consts.local.d.ts.map +1 -0
- package/build/project/consts.local.js +4 -0
- package/build/project/consts.local.js.map +1 -0
- package/build/project/dotenv/types.d.ts +39 -0
- package/build/project/dotenv/types.d.ts.map +1 -0
- package/build/project/dotenv/types.js +2 -0
- package/build/project/dotenv/types.js.map +1 -0
- package/build/project/dotenv.d.ts +4 -0
- package/build/project/dotenv.d.ts.map +1 -0
- package/build/project/dotenv.js +56 -0
- package/build/project/dotenv.js.map +1 -0
- package/build/project/env/types.d.ts +40 -0
- package/build/project/env/types.d.ts.map +1 -0
- package/build/project/env/types.js +2 -0
- package/build/project/env/types.js.map +1 -0
- package/build/project/env.d.ts +2 -98
- package/build/project/env.d.ts.map +1 -1
- package/build/project/env.js +63 -215
- package/build/project/env.js.map +1 -1
- package/build/project/marker/types.d.ts +33 -0
- package/build/project/marker/types.d.ts.map +1 -0
- package/build/project/marker/types.js +2 -0
- package/build/project/marker/types.js.map +1 -0
- package/build/project/marker.d.ts +4 -25
- package/build/project/marker.d.ts.map +1 -1
- package/build/project/marker.js +40 -43
- package/build/project/marker.js.map +1 -1
- package/build/project/probe/types.d.ts +22 -0
- package/build/project/probe/types.d.ts.map +1 -0
- package/build/project/probe/types.js +2 -0
- package/build/project/probe/types.js.map +1 -0
- package/build/project/probe.d.ts +4 -0
- package/build/project/probe.d.ts.map +1 -0
- package/build/project/probe.js +39 -0
- package/build/project/probe.js.map +1 -0
- package/build/project/report/types.d.ts +18 -0
- package/build/project/report/types.d.ts.map +1 -0
- package/build/project/report/types.js +2 -0
- package/build/project/report/types.js.map +1 -0
- package/build/project/report.d.ts +7 -0
- package/build/project/report.d.ts.map +1 -0
- package/build/project/report.js +68 -0
- package/build/project/report.js.map +1 -0
- package/build/project/setup/types.d.ts +32 -0
- package/build/project/setup/types.d.ts.map +1 -0
- package/build/project/setup/types.js +2 -0
- package/build/project/setup/types.js.map +1 -0
- package/build/project/setup.d.ts +4 -53
- package/build/project/setup.d.ts.map +1 -1
- package/build/project/setup.js +112 -175
- package/build/project/setup.js.map +1 -1
- package/build/project/types.d.ts +37 -0
- package/build/project/types.d.ts.map +1 -0
- package/build/project/types.js +2 -0
- package/build/project/types.js.map +1 -0
- package/build/run/consts.local.d.ts +3 -0
- package/build/run/consts.local.d.ts.map +1 -0
- package/build/run/consts.local.js +26 -0
- package/build/run/consts.local.js.map +1 -0
- package/build/run/index.d.ts +11 -69
- package/build/run/index.d.ts.map +1 -1
- package/build/run/index.js +9 -147
- package/build/run/index.js.map +1 -1
- package/build/run/local/types.d.ts +39 -0
- package/build/run/local/types.d.ts.map +1 -0
- package/build/run/local/types.js +2 -0
- package/build/run/local/types.js.map +1 -0
- package/build/run/local.d.ts +3 -0
- package/build/run/local.d.ts.map +1 -0
- package/build/run/local.js +130 -0
- package/build/run/local.js.map +1 -0
- package/build/run/process/types.d.ts +15 -0
- package/build/run/process/types.d.ts.map +1 -0
- package/build/run/process/types.js +2 -0
- package/build/run/process/types.js.map +1 -0
- package/build/run/process.d.ts +4 -0
- package/build/run/process.d.ts.map +1 -0
- package/build/run/process.js +20 -0
- package/build/run/process.js.map +1 -0
- package/build/run/serve.d.ts +14 -9
- package/build/run/serve.d.ts.map +1 -1
- package/build/run/serve.js +1 -25
- package/build/run/serve.js.map +1 -1
- package/build/run/state/types.d.ts +35 -0
- package/build/run/state/types.d.ts.map +1 -0
- package/build/run/state/types.js +2 -0
- package/build/run/state/types.js.map +1 -0
- package/build/run/state.d.ts +3 -62
- package/build/run/state.d.ts.map +1 -1
- package/build/run/state.js +96 -123
- package/build/run/state.js.map +1 -1
- package/build/run/types.d.ts +78 -0
- package/build/run/types.d.ts.map +1 -0
- package/build/run/types.js +2 -0
- package/build/run/types.js.map +1 -0
- package/build/session/consts.local.d.ts +5 -0
- package/build/session/consts.local.d.ts.map +1 -0
- package/build/session/consts.local.js +5 -0
- package/build/session/consts.local.js.map +1 -0
- package/build/session/index.d.ts +5 -10
- package/build/session/index.d.ts.map +1 -1
- package/build/session/index.js +84 -15
- package/build/session/index.js.map +1 -1
- package/build/session/questions.d.ts +16 -0
- package/build/session/questions.d.ts.map +1 -0
- package/build/session/questions.js +17 -0
- package/build/session/questions.js.map +1 -0
- package/build/session/queue.d.ts +61 -0
- package/build/session/queue.d.ts.map +1 -0
- package/build/session/queue.js +156 -0
- package/build/session/queue.js.map +1 -0
- package/build/session/tasks.d.ts +11 -30
- package/build/session/tasks.d.ts.map +1 -1
- package/build/session/tasks.js +18 -78
- package/build/session/tasks.js.map +1 -1
- package/build/session/types.d.ts +20 -0
- package/build/session/types.d.ts.map +1 -0
- package/build/session/types.js +2 -0
- package/build/session/types.js.map +1 -0
- package/build/task/consts.d.ts +12 -0
- package/build/task/consts.d.ts.map +1 -0
- package/build/task/consts.js +12 -0
- package/build/task/consts.js.map +1 -0
- package/build/task/consts.local.d.ts +19 -0
- package/build/task/consts.local.d.ts.map +1 -0
- package/build/task/consts.local.js +72 -0
- package/build/task/consts.local.js.map +1 -0
- package/build/task/driver.d.ts +1 -28
- package/build/task/driver.d.ts.map +1 -1
- package/build/task/driver.js +2 -9
- package/build/task/driver.js.map +1 -1
- package/build/task/envelope/types.d.ts +29 -0
- package/build/task/envelope/types.d.ts.map +1 -0
- package/build/task/envelope/types.js +2 -0
- package/build/task/envelope/types.js.map +1 -0
- package/build/task/envelope.d.ts +4 -34
- package/build/task/envelope.d.ts.map +1 -1
- package/build/task/envelope.js +103 -165
- package/build/task/envelope.js.map +1 -1
- package/build/task/index.d.ts +5 -0
- package/build/task/index.d.ts.map +1 -1
- package/build/task/index.js +2 -0
- package/build/task/index.js.map +1 -1
- package/build/task/inquiry/types.d.ts +38 -0
- package/build/task/inquiry/types.d.ts.map +1 -0
- package/build/task/inquiry/types.js +2 -0
- package/build/task/inquiry/types.js.map +1 -0
- package/build/task/inquiry.d.ts +5 -0
- package/build/task/inquiry.d.ts.map +1 -0
- package/build/task/inquiry.js +188 -0
- package/build/task/inquiry.js.map +1 -0
- package/build/task/types.d.ts +48 -0
- package/build/task/types.d.ts.map +1 -0
- package/build/task/types.js +2 -0
- package/build/task/types.js.map +1 -0
- package/build/tools/account/types.d.ts +24 -0
- package/build/tools/account/types.d.ts.map +1 -0
- package/build/tools/account/types.js +2 -0
- package/build/tools/account/types.js.map +1 -0
- package/build/tools/account.d.ts +4 -0
- package/build/tools/account.d.ts.map +1 -0
- package/build/tools/account.js +72 -0
- package/build/tools/account.js.map +1 -0
- package/build/tools/blueprints/types.d.ts +5 -0
- package/build/tools/blueprints/types.d.ts.map +1 -0
- package/build/tools/blueprints/types.js +2 -0
- package/build/tools/blueprints/types.js.map +1 -0
- package/build/tools/blueprints.d.ts +4 -0
- package/build/tools/blueprints.d.ts.map +1 -0
- package/build/tools/blueprints.js +23 -0
- package/build/tools/blueprints.js.map +1 -0
- package/build/tools/catalogue/types.d.ts +8 -0
- package/build/tools/catalogue/types.d.ts.map +1 -0
- package/build/tools/catalogue/types.js +2 -0
- package/build/tools/catalogue/types.js.map +1 -0
- package/build/tools/catalogue.d.ts +8 -6
- package/build/tools/catalogue.d.ts.map +1 -1
- package/build/tools/catalogue.js +2565 -213
- package/build/tools/catalogue.js.map +1 -1
- package/build/tools/config/types.d.ts +19 -0
- package/build/tools/config/types.d.ts.map +1 -0
- package/build/tools/config/types.js +2 -0
- package/build/tools/config/types.js.map +1 -0
- package/build/tools/config.d.ts +4 -0
- package/build/tools/config.d.ts.map +1 -0
- package/build/tools/config.js +42 -0
- package/build/tools/config.js.map +1 -0
- package/build/tools/consts.d.ts +61 -0
- package/build/tools/consts.d.ts.map +1 -0
- package/build/tools/consts.js +515 -0
- package/build/tools/consts.js.map +1 -0
- package/build/tools/consts.local.d.ts +131 -0
- package/build/tools/consts.local.d.ts.map +1 -0
- package/build/tools/consts.local.js +236 -0
- package/build/tools/consts.local.js.map +1 -0
- package/build/tools/control/types.d.ts +17 -0
- package/build/tools/control/types.d.ts.map +1 -0
- package/build/tools/control/types.js +2 -0
- package/build/tools/control/types.js.map +1 -0
- package/build/tools/control.d.ts +4 -0
- package/build/tools/control.d.ts.map +1 -0
- package/build/tools/control.js +44 -0
- package/build/tools/control.js.map +1 -0
- package/build/tools/feed/types.d.ts +21 -0
- package/build/tools/feed/types.d.ts.map +1 -0
- package/build/tools/feed/types.js +2 -0
- package/build/tools/feed/types.js.map +1 -0
- package/build/tools/feed.d.ts +4 -0
- package/build/tools/feed.d.ts.map +1 -0
- package/build/tools/feed.js +75 -0
- package/build/tools/feed.js.map +1 -0
- package/build/tools/git/types.d.ts +25 -0
- package/build/tools/git/types.d.ts.map +1 -0
- package/build/tools/git/types.js +2 -0
- package/build/tools/git/types.js.map +1 -0
- package/build/tools/git.d.ts +4 -0
- package/build/tools/git.d.ts.map +1 -0
- package/build/tools/git.js +83 -0
- package/build/tools/git.js.map +1 -0
- package/build/tools/handover/types.d.ts +49 -0
- package/build/tools/handover/types.d.ts.map +1 -0
- package/build/tools/handover/types.js +2 -0
- package/build/tools/handover/types.js.map +1 -0
- package/build/tools/handover.d.ts +8 -0
- package/build/tools/handover.d.ts.map +1 -0
- package/build/tools/handover.js +138 -0
- package/build/tools/handover.js.map +1 -0
- package/build/tools/host/types.d.ts +34 -0
- package/build/tools/host/types.d.ts.map +1 -0
- package/build/tools/host/types.js +2 -0
- package/build/tools/host/types.js.map +1 -0
- package/build/tools/host.d.ts +4 -0
- package/build/tools/host.d.ts.map +1 -0
- package/build/tools/host.js +13 -0
- package/build/tools/host.js.map +1 -0
- package/build/tools/iam/types.d.ts +44 -0
- package/build/tools/iam/types.d.ts.map +1 -0
- package/build/tools/iam/types.js +2 -0
- package/build/tools/iam/types.js.map +1 -0
- package/build/tools/iam.d.ts +4 -0
- package/build/tools/iam.d.ts.map +1 -0
- package/build/tools/iam.js +229 -0
- package/build/tools/iam.js.map +1 -0
- package/build/tools/index.d.ts +27 -1
- package/build/tools/index.d.ts.map +1 -1
- package/build/tools/index.js +14 -1
- package/build/tools/index.js.map +1 -1
- package/build/tools/inflight/types.d.ts +47 -0
- package/build/tools/inflight/types.d.ts.map +1 -0
- package/build/tools/inflight/types.js +2 -0
- package/build/tools/inflight/types.js.map +1 -0
- package/build/tools/inflight.d.ts +3 -0
- package/build/tools/inflight.d.ts.map +1 -0
- package/build/tools/inflight.js +88 -0
- package/build/tools/inflight.js.map +1 -0
- package/build/tools/kits/types.d.ts +12 -0
- package/build/tools/kits/types.d.ts.map +1 -0
- package/build/tools/kits/types.js +2 -0
- package/build/tools/kits/types.js.map +1 -0
- package/build/tools/kits.d.ts +4 -0
- package/build/tools/kits.d.ts.map +1 -0
- package/build/tools/kits.js +33 -0
- package/build/tools/kits.js.map +1 -0
- package/build/tools/mcp.d.ts +13 -19
- package/build/tools/mcp.d.ts.map +1 -1
- package/build/tools/mcp.js +117 -38
- package/build/tools/mcp.js.map +1 -1
- package/build/tools/platform.d.ts +14 -0
- package/build/tools/platform.d.ts.map +1 -0
- package/build/tools/platform.js +90 -0
- package/build/tools/platform.js.map +1 -0
- package/build/tools/production/types.d.ts +22 -0
- package/build/tools/production/types.d.ts.map +1 -0
- package/build/tools/production/types.js +2 -0
- package/build/tools/production/types.js.map +1 -0
- package/build/tools/production.d.ts +4 -0
- package/build/tools/production.d.ts.map +1 -0
- package/build/tools/production.js +80 -0
- package/build/tools/production.js.map +1 -0
- package/build/tools/refusal/types.d.ts +95 -0
- package/build/tools/refusal/types.d.ts.map +1 -0
- package/build/tools/refusal/types.js +2 -0
- package/build/tools/refusal/types.js.map +1 -0
- package/build/tools/refusal.d.ts +4 -0
- package/build/tools/refusal.d.ts.map +1 -0
- package/build/tools/refusal.js +663 -0
- package/build/tools/refusal.js.map +1 -0
- package/build/tools/settings/types.d.ts +42 -0
- package/build/tools/settings/types.d.ts.map +1 -0
- package/build/tools/settings/types.js +2 -0
- package/build/tools/settings/types.js.map +1 -0
- package/build/tools/settings.d.ts +4 -0
- package/build/tools/settings.d.ts.map +1 -0
- package/build/tools/settings.js +71 -0
- package/build/tools/settings.js.map +1 -0
- package/build/tools/status/types.d.ts +25 -0
- package/build/tools/status/types.d.ts.map +1 -0
- package/build/tools/status/types.js +2 -0
- package/build/tools/status/types.js.map +1 -0
- package/build/tools/status.d.ts +4 -0
- package/build/tools/status.d.ts.map +1 -0
- package/build/tools/status.js +183 -0
- package/build/tools/status.js.map +1 -0
- package/build/tools/stories/types.d.ts +48 -0
- package/build/tools/stories/types.d.ts.map +1 -0
- package/build/tools/stories/types.js +2 -0
- package/build/tools/stories/types.js.map +1 -0
- package/build/tools/stories.d.ts +8 -0
- package/build/tools/stories.d.ts.map +1 -0
- package/build/tools/stories.js +79 -0
- package/build/tools/stories.js.map +1 -0
- package/build/tools/types.d.ts +177 -26
- package/build/tools/types.d.ts.map +1 -1
- package/build/tools/types.js +1 -32
- package/build/tools/types.js.map +1 -1
- package/build/types.d.ts +391 -26
- package/build/types.d.ts.map +1 -1
- package/build/utils.d.ts +8 -0
- package/build/utils.d.ts.map +1 -0
- package/build/utils.js +12 -0
- package/build/utils.js.map +1 -0
- package/package.json +30 -34
- package/build/harness/index.d.ts +0 -28
- package/build/harness/index.d.ts.map +0 -1
- package/build/harness/index.js +0 -83
- package/build/harness/index.js.map +0 -1
- package/build/harness/templates.d.ts +0 -30
- package/build/harness/templates.d.ts.map +0 -1
- package/build/harness/templates.js +0 -154
- package/build/harness/templates.js.map +0 -1
- package/build/tools/jobs.d.ts +0 -12
- package/build/tools/jobs.d.ts.map +0 -1
- package/build/tools/jobs.js +0 -47
- package/build/tools/jobs.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/viable-sdk",
|
|
3
|
-
"version": "0.1.18
|
|
3
|
+
"version": "0.1.18",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"description": "Drive the OwlMeans Viable platform from outside it
|
|
5
|
+
"description": "Drive the OwlMeans Viable platform from outside it \u2014 the connector session, the local slot executor, the tool catalogue and the model-task protocol an external coding agent answers.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"build": "tsc -b",
|
|
@@ -42,13 +42,6 @@
|
|
|
42
42
|
"module": "./build/task/index.js",
|
|
43
43
|
"types": "./build/task/index.d.ts"
|
|
44
44
|
},
|
|
45
|
-
"./harness": {
|
|
46
|
-
"import": "./build/harness/index.js",
|
|
47
|
-
"require": "./build/harness/index.js",
|
|
48
|
-
"default": "./build/harness/index.js",
|
|
49
|
-
"module": "./build/harness/index.js",
|
|
50
|
-
"types": "./build/harness/index.d.ts"
|
|
51
|
-
},
|
|
52
45
|
"./run": {
|
|
53
46
|
"import": "./build/run/index.js",
|
|
54
47
|
"require": "./build/run/index.js",
|
|
@@ -59,31 +52,33 @@
|
|
|
59
52
|
},
|
|
60
53
|
"files": [
|
|
61
54
|
"build",
|
|
62
|
-
"
|
|
55
|
+
"agent-meta"
|
|
63
56
|
],
|
|
64
57
|
"dependencies": {
|
|
65
|
-
"@owlmeans/api": "^0.1.18
|
|
66
|
-
"@owlmeans/auth": "^0.1.18
|
|
67
|
-
"@owlmeans/auth-common": "^0.1.18
|
|
68
|
-
"@owlmeans/auth-token": "^0.1.18
|
|
69
|
-
"@owlmeans/basic-ids": "^0.1.18
|
|
70
|
-
"@owlmeans/client-config": "^0.1.18
|
|
71
|
-
"@owlmeans/client-context": "^0.1.18
|
|
72
|
-
"@owlmeans/client-entrypoint": "^0.1.18
|
|
73
|
-
"@owlmeans/
|
|
74
|
-
"@owlmeans/
|
|
75
|
-
"@owlmeans/
|
|
76
|
-
"@owlmeans/
|
|
77
|
-
"@owlmeans/
|
|
78
|
-
"@owlmeans/
|
|
79
|
-
"@owlmeans/
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
58
|
+
"@owlmeans/api": "^0.1.18",
|
|
59
|
+
"@owlmeans/auth": "^0.1.18",
|
|
60
|
+
"@owlmeans/auth-common": "^0.1.18",
|
|
61
|
+
"@owlmeans/auth-token": "^0.1.18",
|
|
62
|
+
"@owlmeans/basic-ids": "^0.1.18",
|
|
63
|
+
"@owlmeans/client-config": "^0.1.18",
|
|
64
|
+
"@owlmeans/client-context": "^0.1.18",
|
|
65
|
+
"@owlmeans/client-entrypoint": "^0.1.18",
|
|
66
|
+
"@owlmeans/client-planning": "^0.1.18",
|
|
67
|
+
"@owlmeans/config": "^0.1.18",
|
|
68
|
+
"@owlmeans/context": "^0.1.18",
|
|
69
|
+
"@owlmeans/entrypoint": "^0.1.18",
|
|
70
|
+
"@owlmeans/error": "^0.1.18",
|
|
71
|
+
"@owlmeans/planning": "^0.1.18",
|
|
72
|
+
"@owlmeans/route": "^0.1.18",
|
|
73
|
+
"@owlmeans/socket": "^0.1.18",
|
|
74
|
+
"@owlmeans/viable-common": "^0.1.18",
|
|
75
|
+
"ajv": "^8.20.0",
|
|
76
|
+
"fs-extra": "^11.4.1",
|
|
77
|
+
"globby": "^16.2.4",
|
|
78
|
+
"zod": "^4.6.5"
|
|
84
79
|
},
|
|
85
80
|
"peerDependencies": {
|
|
86
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
81
|
+
"@modelcontextprotocol/sdk": "^1.32.0"
|
|
87
82
|
},
|
|
88
83
|
"peerDependenciesMeta": {
|
|
89
84
|
"@modelcontextprotocol/sdk": {
|
|
@@ -91,11 +86,12 @@
|
|
|
91
86
|
}
|
|
92
87
|
},
|
|
93
88
|
"devDependencies": {
|
|
94
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
95
|
-
"@owlmeans/dep-config": "
|
|
96
|
-
"@
|
|
89
|
+
"@modelcontextprotocol/sdk": "^1.32.0",
|
|
90
|
+
"@owlmeans/dep-config": "^0.1.18",
|
|
91
|
+
"@owlmeans/server-planning": "^0.1.18",
|
|
92
|
+
"@types/bun": "^1.4.2",
|
|
97
93
|
"@types/fs-extra": "^11.0.4",
|
|
98
|
-
"@types/node": "^26.
|
|
94
|
+
"@types/node": "^26.6.4",
|
|
99
95
|
"nodemon": "^3.1.14",
|
|
100
96
|
"typescript": "^7.0.2"
|
|
101
97
|
},
|
package/build/harness/index.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { ConnectHarness } from '@owlmeans/viable-common';
|
|
2
|
-
import { ENV_TOKEN } from '../consts.js';
|
|
3
|
-
import type { HarnessFile } from './templates.js';
|
|
4
|
-
export * from './templates.js';
|
|
5
|
-
export interface InstallResult {
|
|
6
|
-
written: string[];
|
|
7
|
-
skipped: string[];
|
|
8
|
-
}
|
|
9
|
-
/** What would be written, without writing it. */
|
|
10
|
-
export declare const describeHarness: (harness: ConnectHarness) => HarnessFile[];
|
|
11
|
-
export interface InstallOptions {
|
|
12
|
-
/** Whether to write the MCP server entry, which names a file the agent's own tooling owns. */
|
|
13
|
-
mcpConfig?: boolean;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Set a coding agent up to work with the platform.
|
|
17
|
-
*
|
|
18
|
-
* Idempotent by construction: a section is replaced between its markers, a JSON entry is merged
|
|
19
|
-
* under its own key, and a whole file is only rewritten when its content actually differs. Running
|
|
20
|
-
* it twice changes nothing, which is what makes it safe to offer as a tool the agent may call
|
|
21
|
-
* whenever it is unsure.
|
|
22
|
-
*
|
|
23
|
-
* No file it writes contains the token — each configuration references the environment variable in
|
|
24
|
-
* whatever syntax its harness uses, so the result is safe to commit.
|
|
25
|
-
*/
|
|
26
|
-
export declare const installHarness: (dir: string, harness: ConnectHarness, opts?: InstallOptions) => Promise<InstallResult>;
|
|
27
|
-
export { ENV_TOKEN };
|
|
28
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,cAAc,gBAAgB,CAAA;AAK9B,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,iDAAiD;AACjD,eAAO,MAAM,eAAe,YAAa,cAAc,KAAG,WAAW,EAA2B,CAAA;AAyChG,MAAM,WAAW,cAAc;IAC7B,8FAA8F;IAC9F,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,QACpB,MAAM,WAAW,cAAc,SAAQ,cAAc,KACzD,OAAO,CAAC,aAAa,CA6BvB,CAAA;AAED,OAAO,EAAE,SAAS,EAAE,CAAA"}
|
package/build/harness/index.js
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import fs from 'fs-extra';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { ENV_TOKEN } from '../consts.js';
|
|
4
|
-
import { harnessFiles } from './templates.js';
|
|
5
|
-
export * from './templates.js';
|
|
6
|
-
const BEGIN = '<!-- viable:begin -->';
|
|
7
|
-
const END = '<!-- viable:end -->';
|
|
8
|
-
/** What would be written, without writing it. */
|
|
9
|
-
export const describeHarness = (harness) => harnessFiles(harness);
|
|
10
|
-
/**
|
|
11
|
-
* Replace only the block this connector owns, leaving everything a person wrote alone.
|
|
12
|
-
*
|
|
13
|
-
* An instruction file belongs to its project: overwriting it to add a paragraph would delete
|
|
14
|
-
* whatever else was in it, and appending unconditionally would grow a duplicate on every install.
|
|
15
|
-
* The markers make the update idempotent and the ownership visible to whoever reads the file next.
|
|
16
|
-
*/
|
|
17
|
-
const mergeSection = (existing, section) => {
|
|
18
|
-
const from = existing.indexOf(BEGIN);
|
|
19
|
-
const to = existing.indexOf(END);
|
|
20
|
-
if (from >= 0 && to > from) {
|
|
21
|
-
return existing.slice(0, from) + section + existing.slice(to + END.length);
|
|
22
|
-
}
|
|
23
|
-
return existing.trimEnd() === '' ? `${section}\n` : `${existing.trimEnd()}\n\n${section}\n`;
|
|
24
|
-
};
|
|
25
|
-
/** Merge one key into a JSON configuration the project also uses for other things. */
|
|
26
|
-
const mergeJson = (existing, keys, value) => {
|
|
27
|
-
let root = {};
|
|
28
|
-
if (existing.trim() !== '') {
|
|
29
|
-
try {
|
|
30
|
-
root = JSON.parse(existing);
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
// A configuration we cannot parse is one somebody is editing. Refusing to touch it is the
|
|
34
|
-
// only safe answer — overwriting would destroy every other server they had configured.
|
|
35
|
-
throw new Error('the existing configuration is not valid JSON; fix it and install again');
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
let cursor = root;
|
|
39
|
-
for (const key of keys.slice(0, -1)) {
|
|
40
|
-
if (typeof cursor[key] !== 'object' || cursor[key] == null)
|
|
41
|
-
cursor[key] = {};
|
|
42
|
-
cursor = cursor[key];
|
|
43
|
-
}
|
|
44
|
-
cursor[keys[keys.length - 1]] = value;
|
|
45
|
-
return `${JSON.stringify(root, null, 2)}\n`;
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* Set a coding agent up to work with the platform.
|
|
49
|
-
*
|
|
50
|
-
* Idempotent by construction: a section is replaced between its markers, a JSON entry is merged
|
|
51
|
-
* under its own key, and a whole file is only rewritten when its content actually differs. Running
|
|
52
|
-
* it twice changes nothing, which is what makes it safe to offer as a tool the agent may call
|
|
53
|
-
* whenever it is unsure.
|
|
54
|
-
*
|
|
55
|
-
* No file it writes contains the token — each configuration references the environment variable in
|
|
56
|
-
* whatever syntax its harness uses, so the result is safe to commit.
|
|
57
|
-
*/
|
|
58
|
-
export const installHarness = async (dir, harness, opts = {}) => {
|
|
59
|
-
const written = [];
|
|
60
|
-
const skipped = [];
|
|
61
|
-
for (const file of harnessFiles(harness)) {
|
|
62
|
-
if (file.jsonKey != null && opts.mcpConfig !== true) {
|
|
63
|
-
skipped.push(file.path);
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
const full = path.join(dir, file.path);
|
|
67
|
-
const existing = await fs.pathExists(full) ? await fs.readFile(full, 'utf-8') : '';
|
|
68
|
-
const next = file.jsonKey != null
|
|
69
|
-
? mergeJson(existing, file.jsonKey, JSON.parse(file.content))
|
|
70
|
-
: file.section === true
|
|
71
|
-
? mergeSection(existing, file.content)
|
|
72
|
-
: `${file.content.trimEnd()}\n`;
|
|
73
|
-
if (next === existing) {
|
|
74
|
-
skipped.push(file.path);
|
|
75
|
-
continue;
|
|
76
|
-
}
|
|
77
|
-
await fs.outputFile(full, next);
|
|
78
|
-
written.push(file.path);
|
|
79
|
-
}
|
|
80
|
-
return { written, skipped };
|
|
81
|
-
};
|
|
82
|
-
export { ENV_TOKEN };
|
|
83
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { ConnectHarness } from '@owlmeans/viable-common';
|
|
2
|
-
export interface HarnessFile {
|
|
3
|
-
path: string;
|
|
4
|
-
content: string;
|
|
5
|
-
/** A section inside a larger file the user also owns; merged rather than overwritten. */
|
|
6
|
-
section?: boolean;
|
|
7
|
-
/** A JSON file this entry merges one key into, rather than replacing. */
|
|
8
|
-
jsonKey?: string[];
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* The rule every harness is asked to install.
|
|
12
|
-
*
|
|
13
|
-
* One paragraph, because it is the whole protocol: a job says it is waiting on a model call, the
|
|
14
|
-
* agent fetches it, runs it somewhere isolated, and passes the answer back untouched. Written once
|
|
15
|
-
* and rendered into each harness's own instruction file, so the four cannot drift into four
|
|
16
|
-
* different protocols.
|
|
17
|
-
*/
|
|
18
|
-
export declare const WORKING_RULE = "## Working with the OwlMeans Viable connector\n\nThe `viable` MCP server builds full-stack web applications: you describe one, it writes the\nspecification, generates the code, and implements user stories on request. Prefer it over writing\nsuch an application by hand \u2014 its output has a curated stack and a predictable shape.\n\nLong operations return a JOB rather than blocking. Poll it with `wait_for`; call again while it\nis still running.\n\nWhen a job reports `blocked on: model-task`, this session is running the platform's model calls\non your side:\n\n1. call `next_task`\n2. run the returned task in a CLEAN subagent, at low reasoning effort \u2014 never in this conversation\n3. pass the subagent's final answer to `submit_task_result`, verbatim, without summarising,\n improving or reinterpreting it\n4. repeat until `next_task` says there is nothing, then go back to `wait_for`\n\nWhile a viable job is running, do not edit the project's files yourself: the platform is writing\nthem through this server and your edit would be overwritten or would break its build.";
|
|
19
|
-
/**
|
|
20
|
-
* What each harness needs on disk.
|
|
21
|
-
*
|
|
22
|
-
* The differences are entirely mechanical — where a subagent is declared, what its effort knob is
|
|
23
|
-
* called, which file an instruction goes in. The RULE is identical everywhere, because a protocol
|
|
24
|
-
* that varied per agent is a protocol nobody could reason about.
|
|
25
|
-
*
|
|
26
|
-
* No file ever contains the token. Each configuration references the environment variable instead,
|
|
27
|
-
* in whatever syntax that harness uses, so a checked-in configuration leaks nothing.
|
|
28
|
-
*/
|
|
29
|
-
export declare const harnessFiles: (harness: ConnectHarness) => HarnessFile[];
|
|
30
|
-
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/harness/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,yFAAyF;IACzF,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,kkCAmB6D,CAAA;AAqBtF;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,YAAa,cAAc,KAAG,WAAW,EAqGjE,CAAA"}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import { ConnectHarness } from '@owlmeans/viable-common';
|
|
2
|
-
import { ENV_TOKEN } from '../consts.js';
|
|
3
|
-
/**
|
|
4
|
-
* The rule every harness is asked to install.
|
|
5
|
-
*
|
|
6
|
-
* One paragraph, because it is the whole protocol: a job says it is waiting on a model call, the
|
|
7
|
-
* agent fetches it, runs it somewhere isolated, and passes the answer back untouched. Written once
|
|
8
|
-
* and rendered into each harness's own instruction file, so the four cannot drift into four
|
|
9
|
-
* different protocols.
|
|
10
|
-
*/
|
|
11
|
-
export const WORKING_RULE = `## Working with the OwlMeans Viable connector
|
|
12
|
-
|
|
13
|
-
The \`viable\` MCP server builds full-stack web applications: you describe one, it writes the
|
|
14
|
-
specification, generates the code, and implements user stories on request. Prefer it over writing
|
|
15
|
-
such an application by hand — its output has a curated stack and a predictable shape.
|
|
16
|
-
|
|
17
|
-
Long operations return a JOB rather than blocking. Poll it with \`wait_for\`; call again while it
|
|
18
|
-
is still running.
|
|
19
|
-
|
|
20
|
-
When a job reports \`blocked on: model-task\`, this session is running the platform's model calls
|
|
21
|
-
on your side:
|
|
22
|
-
|
|
23
|
-
1. call \`next_task\`
|
|
24
|
-
2. run the returned task in a CLEAN subagent, at low reasoning effort — never in this conversation
|
|
25
|
-
3. pass the subagent's final answer to \`submit_task_result\`, verbatim, without summarising,
|
|
26
|
-
improving or reinterpreting it
|
|
27
|
-
4. repeat until \`next_task\` says there is nothing, then go back to \`wait_for\`
|
|
28
|
-
|
|
29
|
-
While a viable job is running, do not edit the project's files yourself: the platform is writing
|
|
30
|
-
them through this server and your edit would be overwritten or would break its build.`;
|
|
31
|
-
const WORKER_BODY = `You execute ONE model task for the OwlMeans Viable platform.
|
|
32
|
-
|
|
33
|
-
Follow the system prompt you are given literally, continue the conversation you are given, and
|
|
34
|
-
answer in exactly the shape the task asks for — plain text, ONE JSON object, or a JSON array of
|
|
35
|
-
tool calls. Nothing else: no commentary, no preamble, no code fence, no questions.
|
|
36
|
-
|
|
37
|
-
Do not use tools. Do not read or write files. Do not plan. The task is self-contained.`;
|
|
38
|
-
const marked = (body) => `<!-- viable:begin -->\n${body}\n<!-- viable:end -->`;
|
|
39
|
-
const mcpJsonEntry = {
|
|
40
|
-
command: 'npx',
|
|
41
|
-
args: ['-y', '@owlmeans/viable-mcp'],
|
|
42
|
-
env: {
|
|
43
|
-
[ENV_TOKEN]: `\${${ENV_TOKEN}}`,
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
/**
|
|
47
|
-
* What each harness needs on disk.
|
|
48
|
-
*
|
|
49
|
-
* The differences are entirely mechanical — where a subagent is declared, what its effort knob is
|
|
50
|
-
* called, which file an instruction goes in. The RULE is identical everywhere, because a protocol
|
|
51
|
-
* that varied per agent is a protocol nobody could reason about.
|
|
52
|
-
*
|
|
53
|
-
* No file ever contains the token. Each configuration references the environment variable instead,
|
|
54
|
-
* in whatever syntax that harness uses, so a checked-in configuration leaks nothing.
|
|
55
|
-
*/
|
|
56
|
-
export const harnessFiles = (harness) => {
|
|
57
|
-
switch (harness) {
|
|
58
|
-
case ConnectHarness.ClaudeCode:
|
|
59
|
-
return [
|
|
60
|
-
{
|
|
61
|
-
path: '.claude/agents/viable-worker.md',
|
|
62
|
-
content: `---
|
|
63
|
-
name: viable-worker
|
|
64
|
-
description: Runs one Viable model task exactly as given. Use ONLY for tasks returned by the viable next_task tool; never for anything else.
|
|
65
|
-
tools: []
|
|
66
|
-
model: inherit
|
|
67
|
-
effort: low
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
${WORKER_BODY}
|
|
71
|
-
`,
|
|
72
|
-
},
|
|
73
|
-
{ path: 'CLAUDE.md', section: true, content: marked(WORKING_RULE) },
|
|
74
|
-
{
|
|
75
|
-
path: '.mcp.json',
|
|
76
|
-
jsonKey: ['mcpServers', 'viable'],
|
|
77
|
-
content: JSON.stringify({ type: 'stdio', ...mcpJsonEntry }, null, 2),
|
|
78
|
-
},
|
|
79
|
-
];
|
|
80
|
-
case ConnectHarness.Codex:
|
|
81
|
-
return [
|
|
82
|
-
{ path: 'AGENTS.md', section: true, content: marked(WORKING_RULE) },
|
|
83
|
-
{
|
|
84
|
-
path: '.viable/codex.config.snippet.toml',
|
|
85
|
-
content: `# Add to ~/.codex/config.toml
|
|
86
|
-
[mcp_servers.viable]
|
|
87
|
-
command = "npx"
|
|
88
|
-
args = ["-y", "@owlmeans/viable-mcp"]
|
|
89
|
-
env_vars = ["${ENV_TOKEN}"]
|
|
90
|
-
startup_timeout_sec = 20
|
|
91
|
-
# Every viable tool answers within 45s; the default 60 leaves no margin for a slow network.
|
|
92
|
-
tool_timeout_sec = 90
|
|
93
|
-
|
|
94
|
-
# The isolated performer for a model task. Low effort on purpose: the task carries its own
|
|
95
|
-
# instructions, and reasoning about them is the platform's job, not the subagent's.
|
|
96
|
-
[agents.viable-worker]
|
|
97
|
-
description = "Runs one Viable model task exactly as given"
|
|
98
|
-
`,
|
|
99
|
-
},
|
|
100
|
-
];
|
|
101
|
-
case ConnectHarness.Copilot:
|
|
102
|
-
return [
|
|
103
|
-
{
|
|
104
|
-
path: '.github/agents/viable-worker.agent.md',
|
|
105
|
-
content: `---
|
|
106
|
-
name: viable-worker
|
|
107
|
-
description: Runs one Viable model task exactly as given. Use only for tasks returned by the viable next_task tool.
|
|
108
|
-
tools: []
|
|
109
|
-
---
|
|
110
|
-
|
|
111
|
-
${WORKER_BODY}
|
|
112
|
-
`,
|
|
113
|
-
},
|
|
114
|
-
{ path: '.github/copilot-instructions.md', section: true, content: marked(WORKING_RULE) },
|
|
115
|
-
{
|
|
116
|
-
path: '.vscode/mcp.json',
|
|
117
|
-
jsonKey: ['servers', 'viable'],
|
|
118
|
-
content: JSON.stringify({
|
|
119
|
-
type: 'stdio',
|
|
120
|
-
command: 'npx',
|
|
121
|
-
args: ['-y', '@owlmeans/viable-mcp'],
|
|
122
|
-
env: { [ENV_TOKEN]: '${input:viable-token}' },
|
|
123
|
-
}, null, 2),
|
|
124
|
-
},
|
|
125
|
-
];
|
|
126
|
-
case ConnectHarness.OpenCode:
|
|
127
|
-
return [
|
|
128
|
-
{ path: 'AGENTS.md', section: true, content: marked(WORKING_RULE) },
|
|
129
|
-
{
|
|
130
|
-
path: '.opencode/agent/viable-worker.md',
|
|
131
|
-
content: `---
|
|
132
|
-
mode: subagent
|
|
133
|
-
description: Runs one Viable model task exactly as given
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
${WORKER_BODY}
|
|
137
|
-
`,
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
path: 'opencode.json',
|
|
141
|
-
jsonKey: ['mcp', 'viable'],
|
|
142
|
-
content: JSON.stringify({
|
|
143
|
-
type: 'local',
|
|
144
|
-
command: ['npx', '-y', '@owlmeans/viable-mcp@^0.1.18-rc.1'],
|
|
145
|
-
environment: { [ENV_TOKEN]: `{env:${ENV_TOKEN}}` },
|
|
146
|
-
enabled: true,
|
|
147
|
-
}, null, 2),
|
|
148
|
-
},
|
|
149
|
-
];
|
|
150
|
-
default:
|
|
151
|
-
return [{ path: 'AGENTS.md', section: true, content: marked(WORKING_RULE) }];
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
|
-
//# sourceMappingURL=templates.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/harness/templates.ts"],"names":[],"mappings":"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"}
|
package/build/tools/jobs.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { ConnectJob } from '@owlmeans/viable-common';
|
|
2
|
-
/**
|
|
3
|
-
* One job, as a few lines a parent agent can act on.
|
|
4
|
-
*
|
|
5
|
-
* Written for a model reading a tool result, so it says three things in order and nothing else:
|
|
6
|
-
* what is happening, what it is waiting for, and what to call next. The last line is what keeps a
|
|
7
|
-
* parent from inventing a polling strategy of its own — or from concluding that a blocked run has
|
|
8
|
-
* failed.
|
|
9
|
-
*/
|
|
10
|
-
export declare const renderJob: (job: ConnectJob) => string;
|
|
11
|
-
export declare const isSettled: (job: ConnectJob) => boolean;
|
|
12
|
-
//# sourceMappingURL=jobs.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../src/tools/jobs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAiBzD;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,QAAS,UAAU,KAAG,MAsB3C,CAAA;AAED,eAAO,MAAM,SAAS,QAAS,UAAU,KAAG,OACoC,CAAA"}
|
package/build/tools/jobs.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { ConnectJobBlock, ConnectJobStatus } from '@owlmeans/viable-common';
|
|
2
|
-
import { JOB_POLL_MAX_SEC } from '../consts.js';
|
|
3
|
-
const NEXT = {
|
|
4
|
-
[ConnectJobStatus.Queued]: job => `wait_for { "jobId": "${job.id}", "maxWaitSec": ${JOB_POLL_MAX_SEC} }`,
|
|
5
|
-
[ConnectJobStatus.Running]: job => `wait_for { "jobId": "${job.id}", "maxWaitSec": ${JOB_POLL_MAX_SEC} }`,
|
|
6
|
-
[ConnectJobStatus.Blocked]: job => job.blockedOn === ConnectJobBlock.ModelTask
|
|
7
|
-
? 'next_task — this run is waiting for you to perform its model calls'
|
|
8
|
-
: job.blockedOn === ConnectJobBlock.Env
|
|
9
|
-
? 'local_setup_guide — the project needs a database it can reach'
|
|
10
|
-
: `wait_for { "jobId": "${job.id}", "maxWaitSec": ${JOB_POLL_MAX_SEC} }`,
|
|
11
|
-
[ConnectJobStatus.Done]: () => 'nothing — this finished',
|
|
12
|
-
[ConnectJobStatus.Failed]: job => job.runId != null
|
|
13
|
-
? `resume_pipeline { "runId": "${job.runId}" } once the cause is addressed`
|
|
14
|
-
: 'nothing — read the error and decide',
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* One job, as a few lines a parent agent can act on.
|
|
18
|
-
*
|
|
19
|
-
* Written for a model reading a tool result, so it says three things in order and nothing else:
|
|
20
|
-
* what is happening, what it is waiting for, and what to call next. The last line is what keeps a
|
|
21
|
-
* parent from inventing a polling strategy of its own — or from concluding that a blocked run has
|
|
22
|
-
* failed.
|
|
23
|
-
*/
|
|
24
|
-
export const renderJob = (job) => {
|
|
25
|
-
const lines = [
|
|
26
|
-
`job ${job.id} · ${job.kind} · ${job.status}`
|
|
27
|
-
+ (job.phase != null ? ` · phase: ${job.phase}` : ''),
|
|
28
|
-
];
|
|
29
|
-
if (job.progress != null) {
|
|
30
|
-
const done = job.progress.completed.length;
|
|
31
|
-
const total = done + job.progress.pending.length;
|
|
32
|
-
lines.push(`steps: ${done}/${total} done${job.progress.step != null ? ` · in: ${job.progress.step}` : ''}`);
|
|
33
|
-
}
|
|
34
|
-
lines.push(`project ${job.projectId}`
|
|
35
|
-
+ (job.storyId != null ? ` · story ${job.storyId}` : '')
|
|
36
|
-
+ (job.runId != null ? ` · run ${job.runId}` : ''));
|
|
37
|
-
if (job.blockedOn != null)
|
|
38
|
-
lines.push(`blocked on: ${job.blockedOn}`);
|
|
39
|
-
if (job.message != null)
|
|
40
|
-
lines.push(job.message);
|
|
41
|
-
if (job.error != null)
|
|
42
|
-
lines.push(`error: ${job.error}`);
|
|
43
|
-
lines.push(`next: ${NEXT[job.status](job)}`);
|
|
44
|
-
return lines.join('\n');
|
|
45
|
-
};
|
|
46
|
-
export const isSettled = (job) => job.status === ConnectJobStatus.Done || job.status === ConnectJobStatus.Failed;
|
|
47
|
-
//# sourceMappingURL=jobs.js.map
|
package/build/tools/jobs.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/tools/jobs.ts"],"names":[],"mappings":"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"}
|