@wardby/cli 0.1.0 → 0.2.1

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 (168) hide show
  1. package/README.md +183 -96
  2. package/deploy/local/docker-compose.yml +5 -5
  3. package/dist/claude-coding-worker/driver.d.ts +1 -0
  4. package/dist/claude-coding-worker/driver.js +4 -1
  5. package/dist/claude-coding-worker/main.js +3 -2
  6. package/dist/cli-help.d.ts +1 -1
  7. package/dist/cli-help.js +5 -0
  8. package/dist/cli.js +0 -0
  9. package/dist/coding/protocol.d.ts +28 -3
  10. package/dist/coding/protocol.js +53 -2
  11. package/dist/coding-worker/artifact.d.ts +12 -0
  12. package/dist/coding-worker/artifact.js +48 -6
  13. package/dist/coding-worker/driver.d.ts +1 -0
  14. package/dist/coding-worker/driver.js +4 -1
  15. package/dist/coding-worker/errors.d.ts +7 -0
  16. package/dist/coding-worker/errors.js +18 -0
  17. package/dist/coding-worker/main.js +3 -2
  18. package/dist/core/budget-groups.d.ts +1 -1
  19. package/dist/core/coding-queue.d.ts +1 -1
  20. package/dist/core/datastores.d.ts +1 -1
  21. package/dist/core/db.d.ts +36 -2
  22. package/dist/core/db.js +69 -2
  23. package/dist/core/dispatch.d.ts +16 -1
  24. package/dist/core/dispatch.js +33 -5
  25. package/dist/core/http-runtime.js +3 -4
  26. package/dist/core/lease.d.ts +1 -1
  27. package/dist/core/private-directory.d.ts +20 -0
  28. package/dist/core/private-directory.js +36 -0
  29. package/dist/core/reconciler.d.ts +1 -1
  30. package/dist/core/runner.d.ts +1 -1
  31. package/dist/core/scheduler.d.ts +1 -1
  32. package/dist/core/secrets.d.ts +1 -1
  33. package/dist/core/subagent-memory-tools.d.ts +1 -1
  34. package/dist/core/webhooks.d.ts +1 -1
  35. package/dist/env.js +8 -1
  36. package/dist/generated/prisma/browser.d.ts +228 -0
  37. package/dist/generated/prisma/browser.js +17 -0
  38. package/dist/generated/prisma/client.d.ts +247 -0
  39. package/dist/generated/prisma/client.js +34 -0
  40. package/dist/generated/prisma/commonInputTypes.d.ts +809 -0
  41. package/dist/generated/prisma/commonInputTypes.js +10 -0
  42. package/dist/generated/prisma/enums.d.ts +53 -0
  43. package/dist/generated/prisma/enums.js +54 -0
  44. package/dist/generated/prisma/internal/class.d.ts +462 -0
  45. package/dist/generated/prisma/internal/class.js +49 -0
  46. package/dist/generated/prisma/internal/prismaNamespace.d.ts +3325 -0
  47. package/dist/generated/prisma/internal/prismaNamespace.js +455 -0
  48. package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +449 -0
  49. package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +426 -0
  50. package/dist/generated/prisma/models/Agent.d.ts +3267 -0
  51. package/dist/generated/prisma/models/Agent.js +1 -0
  52. package/dist/generated/prisma/models/AgentDatastore.d.ts +1210 -0
  53. package/dist/generated/prisma/models/AgentDatastore.js +1 -0
  54. package/dist/generated/prisma/models/AgentMemory.d.ts +986 -0
  55. package/dist/generated/prisma/models/AgentMemory.js +1 -0
  56. package/dist/generated/prisma/models/AgentSecret.d.ts +1212 -0
  57. package/dist/generated/prisma/models/AgentSecret.js +1 -0
  58. package/dist/generated/prisma/models/AgentSubAgent.d.ts +1217 -0
  59. package/dist/generated/prisma/models/AgentSubAgent.js +1 -0
  60. package/dist/generated/prisma/models/AgentTool.d.ts +1309 -0
  61. package/dist/generated/prisma/models/AgentTool.js +1 -0
  62. package/dist/generated/prisma/models/AuthFormChallenge.d.ts +1298 -0
  63. package/dist/generated/prisma/models/AuthFormChallenge.js +1 -0
  64. package/dist/generated/prisma/models/AuthLoginKey.d.ts +1245 -0
  65. package/dist/generated/prisma/models/AuthLoginKey.js +1 -0
  66. package/dist/generated/prisma/models/AuthRateLimit.d.ts +979 -0
  67. package/dist/generated/prisma/models/AuthRateLimit.js +1 -0
  68. package/dist/generated/prisma/models/AuthSession.d.ts +1376 -0
  69. package/dist/generated/prisma/models/AuthSession.js +1 -0
  70. package/dist/generated/prisma/models/AuthUser.d.ts +1645 -0
  71. package/dist/generated/prisma/models/AuthUser.js +1 -0
  72. package/dist/generated/prisma/models/BudgetGroup.d.ts +1548 -0
  73. package/dist/generated/prisma/models/BudgetGroup.js +1 -0
  74. package/dist/generated/prisma/models/CodingAgentProfile.d.ts +1430 -0
  75. package/dist/generated/prisma/models/CodingAgentProfile.js +1 -0
  76. package/dist/generated/prisma/models/CodingProxyRequest.d.ts +1749 -0
  77. package/dist/generated/prisma/models/CodingProxyRequest.js +1 -0
  78. package/dist/generated/prisma/models/CodingProxySession.d.ts +1505 -0
  79. package/dist/generated/prisma/models/CodingProxySession.js +1 -0
  80. package/dist/generated/prisma/models/CodingRun.d.ts +2402 -0
  81. package/dist/generated/prisma/models/CodingRun.js +1 -0
  82. package/dist/generated/prisma/models/Datastore.d.ts +1434 -0
  83. package/dist/generated/prisma/models/Datastore.js +1 -0
  84. package/dist/generated/prisma/models/DatastoreEntry.d.ts +1314 -0
  85. package/dist/generated/prisma/models/DatastoreEntry.js +1 -0
  86. package/dist/generated/prisma/models/OAuthAuthorizationCode.d.ts +1526 -0
  87. package/dist/generated/prisma/models/OAuthAuthorizationCode.js +1 -0
  88. package/dist/generated/prisma/models/OAuthAuthorizationRequest.d.ts +1350 -0
  89. package/dist/generated/prisma/models/OAuthAuthorizationRequest.js +1 -0
  90. package/dist/generated/prisma/models/OAuthClient.d.ts +1289 -0
  91. package/dist/generated/prisma/models/OAuthClient.js +1 -0
  92. package/dist/generated/prisma/models/OAuthFamily.d.ts +1540 -0
  93. package/dist/generated/prisma/models/OAuthFamily.js +1 -0
  94. package/dist/generated/prisma/models/OAuthGrant.d.ts +1280 -0
  95. package/dist/generated/prisma/models/OAuthGrant.js +1 -0
  96. package/dist/generated/prisma/models/Principal.d.ts +1790 -0
  97. package/dist/generated/prisma/models/Principal.js +1 -0
  98. package/dist/generated/prisma/models/Run.d.ts +2281 -0
  99. package/dist/generated/prisma/models/Run.js +1 -0
  100. package/dist/generated/prisma/models/SchedulerLease.d.ts +970 -0
  101. package/dist/generated/prisma/models/SchedulerLease.js +1 -0
  102. package/dist/generated/prisma/models/Secret.d.ts +1399 -0
  103. package/dist/generated/prisma/models/Secret.js +1 -0
  104. package/dist/generated/prisma/models/SecretElicitationOutcome.d.ts +973 -0
  105. package/dist/generated/prisma/models/SecretElicitationOutcome.js +1 -0
  106. package/dist/generated/prisma/models/Task.d.ts +1176 -0
  107. package/dist/generated/prisma/models/Task.js +1 -0
  108. package/dist/generated/prisma/models/Tool.d.ts +1478 -0
  109. package/dist/generated/prisma/models/Tool.js +1 -0
  110. package/dist/generated/prisma/models/Webhook.d.ts +1386 -0
  111. package/dist/generated/prisma/models/Webhook.js +1 -0
  112. package/dist/generated/prisma/models.d.ts +32 -0
  113. package/dist/generated/prisma/models.js +1 -0
  114. package/dist/import/create.d.ts +1 -1
  115. package/dist/import/create.js +1 -1
  116. package/dist/import/index.d.ts +1 -1
  117. package/dist/mcp/auth/ownership.d.ts +19 -19
  118. package/dist/mcp/auth/principal.d.ts +1 -1
  119. package/dist/mcp/auth/resource-server.d.ts +1 -1
  120. package/dist/mcp/auth/self-hosted/browser.js +20 -6
  121. package/dist/mcp/auth/self-hosted/cli.d.ts +1 -1
  122. package/dist/mcp/auth/self-hosted/credentials.d.ts +1 -1
  123. package/dist/mcp/auth/self-hosted/rate-limit.d.ts +1 -1
  124. package/dist/mcp/auth/self-hosted/session.d.ts +1 -1
  125. package/dist/mcp/context.d.ts +1 -1
  126. package/dist/mcp/server.d.ts +1 -1
  127. package/dist/mcp/shared/page-style.d.ts +16 -0
  128. package/dist/mcp/shared/page-style.js +129 -0
  129. package/dist/mcp/tasks/manager.d.ts +1 -1
  130. package/dist/mcp/tools/agents.js +1 -1
  131. package/dist/mcp/tools/datastore.js +1 -1
  132. package/dist/mcp/tools/scheduling.js +1 -1
  133. package/dist/mcp/tools/secret-elicitation-form.d.ts +1 -1
  134. package/dist/mcp/tools/secret-elicitation-form.js +10 -28
  135. package/dist/mcp/tools/secret-elicitation.d.ts +1 -1
  136. package/dist/mcp/tools/subagents.js +1 -1
  137. package/dist/mcp/tools/tools.js +1 -1
  138. package/dist/mcp/transport/streamable-http.d.ts +1 -1
  139. package/dist/mcp/unattended-schedules.d.ts +1 -1
  140. package/dist/mcp/webhooks/ingress.d.ts +1 -1
  141. package/dist/providers/auth/index.d.ts +1 -1
  142. package/dist/providers/auth/self-hosted.d.ts +2 -2
  143. package/dist/providers/coding-proxy/prisma-ledger.d.ts +1 -1
  144. package/dist/providers/coding-proxy/runtime.d.ts +1 -1
  145. package/dist/providers/datastore/postgres.d.ts +1 -1
  146. package/dist/providers/executor/build.d.ts +1 -1
  147. package/dist/providers/executor/composition.d.ts +1 -1
  148. package/dist/providers/executor/container.d.ts +1 -1
  149. package/dist/providers/executor/container.js +10 -3
  150. package/dist/providers/executor/dbos.d.ts +1 -1
  151. package/dist/providers/jobs/docker.d.ts +11 -0
  152. package/dist/providers/jobs/docker.js +34 -18
  153. package/dist/providers/jobs/kubernetes.js +5 -10
  154. package/dist/providers/jobs/types.d.ts +2 -0
  155. package/dist/providers/memory/postgres.d.ts +1 -1
  156. package/dist/providers/vcs/git.js +2 -1
  157. package/dist/quickstart/config.d.ts +30 -0
  158. package/dist/quickstart/config.js +106 -0
  159. package/dist/quickstart/index.d.ts +5 -0
  160. package/dist/quickstart/index.js +527 -0
  161. package/dist/quickstart/migrate.d.ts +23 -0
  162. package/dist/quickstart/migrate.js +125 -0
  163. package/dist/wardby-bin.js +35 -9
  164. package/package.json +22 -9
  165. package/prisma/migrate.config.mjs +20 -0
  166. package/prisma/schema.prisma +10 -2
  167. package/dist/providers/auth/release-gate.d.ts +0 -1
  168. package/dist/providers/auth/release-gate.js +0 -4
@@ -8,13 +8,39 @@ function packageVersion() {
8
8
  }
9
9
  return packageJson.version;
10
10
  }
11
- const command = process.argv[2];
12
- if (command === undefined || command === "--help" || command === "-h") {
13
- process.stdout.write(`${CLI_USAGE}\n`);
14
- }
15
- else if (command === "--version" || command === "-v") {
16
- process.stdout.write(`${packageVersion()}\n`);
17
- }
18
- else {
19
- await import("./cli.js");
11
+ async function main() {
12
+ const command = process.argv[2];
13
+ if (command === undefined || command === "--help" || command === "-h") {
14
+ process.stdout.write(`${CLI_USAGE}\n`);
15
+ }
16
+ else if (command === "--version" || command === "-v") {
17
+ process.stdout.write(`${packageVersion()}\n`);
18
+ }
19
+ else if (command === "quickstart") {
20
+ const { quickstartCommand } = await import("./quickstart/index.js");
21
+ await quickstartCommand(process.argv.slice(3));
22
+ }
23
+ else if (command === "doctor") {
24
+ const { doctorCommand } = await import("./quickstart/index.js");
25
+ await doctorCommand(process.argv.slice(3));
26
+ }
27
+ else if (command === "status") {
28
+ const { statusCommand } = await import("./quickstart/index.js");
29
+ await statusCommand(process.argv.slice(3));
30
+ }
31
+ else if (command === "logs") {
32
+ const { logsCommand } = await import("./quickstart/index.js");
33
+ await logsCommand(process.argv.slice(3));
34
+ }
35
+ else if (command === "down") {
36
+ const { downCommand } = await import("./quickstart/index.js");
37
+ await downCommand(process.argv.slice(3));
38
+ }
39
+ else {
40
+ await import("./cli.js");
41
+ }
20
42
  }
43
+ main().catch((error) => {
44
+ console.error(`error: ${error instanceof Error ? error.message : String(error)}`);
45
+ process.exitCode = 1;
46
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wardby/cli",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "Self-hosted control plane for budget-guarded AI agents.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/wardby/wardby#readme",
@@ -19,6 +19,12 @@
19
19
  "budget-control"
20
20
  ],
21
21
  "type": "module",
22
+ "imports": {
23
+ "#prisma": {
24
+ "wardby-source": "./src/generated/prisma/client.ts",
25
+ "default": "./dist/generated/prisma/client.js"
26
+ }
27
+ },
22
28
  "engines": {
23
29
  "node": ">=24.0.0"
24
30
  },
@@ -32,6 +38,7 @@
32
38
  "deploy/local/docker-compose.yml",
33
39
  "dist/",
34
40
  "prisma/migrations/",
41
+ "prisma/migrate.config.mjs",
35
42
  "prisma/schema.prisma",
36
43
  "scripts/git-askpass.sh"
37
44
  ],
@@ -45,17 +52,16 @@
45
52
  "format": "prettier --write .",
46
53
  "format:check": "prettier --check .",
47
54
  "build:vendor": "node scripts/build-sandbox-vendor.mjs",
48
- "build": "npm run build:vendor && tsc -p tsconfig.build.json",
49
- "prepare": "npm run build:vendor",
55
+ "build": "npm run build:vendor && PRISMA_HIDE_UPDATE_MESSAGE=1 prisma generate && tsc -p tsconfig.build.json",
56
+ "prepare": "npm run build:vendor && PRISMA_HIDE_UPDATE_MESSAGE=1 prisma generate",
50
57
  "prepack": "npm run build",
51
- "postinstall": "prisma generate --schema prisma/schema.prisma",
52
- "cli": "tsx src/cli.ts",
53
- "capture:autopilot": "tsx src/tools/capture-autopilot-dry-run.ts",
58
+ "cli": "tsx --conditions=wardby-source src/cli.ts",
59
+ "capture:autopilot": "tsx --conditions=wardby-source src/tools/capture-autopilot-dry-run.ts",
54
60
  "test": "npm run build:vendor && vitest run",
55
61
  "test:package": "node scripts/npm-package-acceptance.mjs",
56
62
  "test:contract": "vitest run --config vitest.contract.config.ts",
57
63
  "test:kubernetes": "WARDBY_KUBERNETES_TEST=1 vitest run src/providers/jobs/kubernetes.integration.test.ts",
58
- "prisma:generate": "prisma generate",
64
+ "prisma:generate": "PRISMA_HIDE_UPDATE_MESSAGE=1 prisma generate",
59
65
  "prisma:migrate": "prisma migrate deploy",
60
66
  "db:up": "docker compose -f deploy/local/docker-compose.yml up -d",
61
67
  "db:down": "docker compose -f deploy/local/docker-compose.yml down",
@@ -85,7 +91,8 @@
85
91
  "@modelcontextprotocol/client": "^2.0.0",
86
92
  "@modelcontextprotocol/node": "^2.0.0",
87
93
  "@modelcontextprotocol/server": "^2.0.0",
88
- "@prisma/client": "^6.19.3",
94
+ "@prisma/adapter-pg": "7.10.0",
95
+ "@prisma/client": "7.10.0",
89
96
  "@prometheus-io/client": "^0.16.1",
90
97
  "croner": "^10.0.1",
91
98
  "dotenv-flow": "^4.1.0",
@@ -95,8 +102,8 @@
95
102
  "node-html-parser": "^9.0.3",
96
103
  "openai": "^4.67.0",
97
104
  "papaparse": "^5.7.0",
105
+ "pg": "8.23.0",
98
106
  "pino": "^9.14.0",
99
- "prisma": "^6.19.3",
100
107
  "quickjs-emscripten": "^0.32.0",
101
108
  "tar-stream": "^3.2.1",
102
109
  "undici": "^8.7.0",
@@ -108,6 +115,7 @@
108
115
  "@openai/codex-sdk": "0.153.4",
109
116
  "@types/node": "^24.0.0",
110
117
  "@types/papaparse": "^5.5.2",
118
+ "@types/pg": "8.23.1",
111
119
  "@types/tar-stream": "^3.1.4",
112
120
  "esbuild": "^0.28.2",
113
121
  "eslint": "^10.10.0",
@@ -115,9 +123,14 @@
115
123
  "globals": "^17.12.0",
116
124
  "playwright": "^1.63.0",
117
125
  "prettier": "^3.9.6",
126
+ "prisma": "7.10.0",
118
127
  "tsx": "^4.19.0",
119
128
  "typescript": "^5.6.0",
120
129
  "typescript-eslint": "^8.69.0",
121
130
  "vitest": "^4.1.11"
131
+ },
132
+ "overrides": {
133
+ "deepmerge-ts": "8.0.2",
134
+ "mysql2": "3.24.4"
122
135
  }
123
136
  }
@@ -0,0 +1,20 @@
1
+ // Prisma CLI configuration shipped in the npm package for `wardby quickstart`
2
+ // and `wardby doctor` (src/quickstart/migrate.ts). The installed package has
3
+ // no Prisma CLI -- it is a devDependency -- so quickstart runs the pinned CLI
4
+ // on demand (`npx --yes prisma@<version> migrate deploy|status --config
5
+ // <this file>`).
6
+ //
7
+ // Deliberately import-free: the CLI loads this file from the installed
8
+ // package, where neither `prisma/config` nor dotenv-flow is resolvable. A plain
9
+ // object is accepted in place of defineConfig(). Paths are resolved relative
10
+ // to this file, so they point at the schema and migrations shipped beside it.
11
+ //
12
+ // The URL comes from the environment quickstart passes to the child process
13
+ // (never from argv): the .wardby/.env DATABASE_URL.
14
+ export default {
15
+ schema: "schema.prisma",
16
+ migrations: { path: "migrations" },
17
+ datasource: {
18
+ url: process.env.DATABASE_URL ?? "",
19
+ },
20
+ };
@@ -2,13 +2,21 @@
2
2
  // schema. Targets PostgreSQL even for the laptop demo; "portable" means any
3
3
  // Postgres (see deploy/local/docker-compose.yml), not a cloud dependency.
4
4
 
5
+ // Generated into src/generated/prisma (gitignored; `npm run build` and
6
+ // `prepare` regenerate it) and imported everywhere as "#prisma" (package.json
7
+ // "imports"). Pure TS + wasm query compiler: no native engine, so the built
8
+ // client is portable across platforms.
5
9
  generator client {
6
- provider = "prisma-client-js"
10
+ provider = "prisma-client"
11
+ output = "../src/generated/prisma"
12
+ moduleFormat = "esm"
13
+ runtime = "nodejs"
7
14
  }
8
15
 
16
+ // The connection URL lives in prisma.config.ts (CLI) and src/core/db.ts
17
+ // (runtime, through @prisma/adapter-pg).
9
18
  datasource db {
10
19
  provider = "postgresql"
11
- url = env("DATABASE_URL")
12
20
  }
13
21
 
14
22
  model Agent {
@@ -1 +0,0 @@
1
- export declare function assertSelfHostedReleased(): void;
@@ -1,4 +0,0 @@
1
- // Remove only after the database, browser, migration, and independent review gates pass.
2
- export function assertSelfHostedReleased() {
3
- throw new Error("Self-hosted OAuth issuance is quarantined pending the security release gates. Use delegating OAuth or stdio.");
4
- }