@blogic-cz/agent-tools 0.17.1 → 0.18.0
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 +43 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/types.d.ts +17 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/db-tool/service.d.ts +23 -0
- package/dist/db-tool/service.d.ts.map +1 -1
- package/dist/db-tool/types.d.ts +2 -0
- package/dist/db-tool/types.d.ts.map +1 -1
- package/dist/gh-tool/pr/core.d.ts.map +1 -1
- package/dist/gh-tool/pr/review.d.ts.map +1 -1
- package/dist/gh-tool/types.d.ts +10 -0
- package/dist/gh-tool/types.d.ts.map +1 -1
- package/dist/gh-tool/workflow.d.ts.map +1 -1
- package/dist/logs-tool/index.d.ts.map +1 -1
- package/dist/session-tool/index.d.ts.map +1 -1
- package/dist/shared/format.d.ts +3 -1
- package/dist/shared/format.d.ts.map +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/schemas/agent-tools.schema.json +8 -0
- package/src/audit-tool/index.ts +4 -3
- package/src/az-tool/index.ts +9 -8
- package/src/config/loader.ts +2 -0
- package/src/config/types.ts +17 -0
- package/src/db-tool/index.ts +6 -5
- package/src/db-tool/service.ts +113 -1
- package/src/db-tool/types.ts +2 -0
- package/src/gh-tool/pr/commands.ts +2 -2
- package/src/gh-tool/pr/core.ts +2 -1
- package/src/gh-tool/pr/review.ts +8 -0
- package/src/gh-tool/types.ts +10 -0
- package/src/gh-tool/workflow.ts +4 -4
- package/src/k8s-tool/index.ts +4 -3
- package/src/logs-tool/index.ts +4 -3
- package/src/observability-tool/logs.ts +4 -4
- package/src/observability-tool/metrics.ts +4 -4
- package/src/observability-tool/trace.ts +6 -6
- package/src/session-tool/index.ts +5 -5
- package/src/shared/format.ts +18 -3
- package/src/shared/index.ts +1 -1
package/README.md
CHANGED
|
@@ -290,6 +290,8 @@ Zero reported checks is a state, not an error: `gh pr checks` exits nonzero on a
|
|
|
290
290
|
|
|
291
291
|
`pr feedback` returns the whole inventory by default. Narrow it with `--only visible-open|needs-human-reply|current-head` (narrowed filters drop issue comments), drop bots with `--exclude-authors github-actions,dependabot`, and read `omitted` for what each filter removed. Base64 report payloads in bodies are replaced with `[base64 payload omitted]`; pass `--raw-bodies` to keep them. `review-triage --omit reviews,inlineComments` trims a repeated snapshot to the verdict and check state, and lists what it left out in `omittedSections`.
|
|
292
292
|
|
|
293
|
+
An empty thread list can mean the reviewer is still drafting: comments inside a pending review are invisible to the API until the reviewer submits, and they keep their draft time in `createdAt`. `pr threads` and `pr comments` therefore also report `reviewId` and `updatedAt`. Equal `reviewId` values mark one submitted batch; join that id to the matching `reviews[].submittedAt` from `pr feedback` for the exact time the batch became visible. `updatedAt` is a cheap proxy for the same moment, but it also moves when someone edits the comment. Never conclude from an older `createdAt` that an earlier scan missed anything.
|
|
294
|
+
|
|
293
295
|
Call the wrappers through `bun run --silent <tool>` in repos that expose them as package scripts; without `--silent` every invocation echoes the resolved command line into the agent's context.
|
|
294
296
|
|
|
295
297
|
`audit-tool` reads the same SQLite file the wrappers write to. By default that file lives at `~/.agent-tools/audit.sqlite`, and you can override both path and retention per repo with the global `audit` config section.
|
|
@@ -436,6 +438,47 @@ Secrets are **never** stored in the config file. The `db-tool` config references
|
|
|
436
438
|
}
|
|
437
439
|
```
|
|
438
440
|
|
|
441
|
+
#### Endpoint overrides: `hostEnvVar` and `portEnvVar`
|
|
442
|
+
|
|
443
|
+
A database environment can also take its `host` and `port` from environment variables:
|
|
444
|
+
|
|
445
|
+
| Field | Effect |
|
|
446
|
+
| ------------ | -------------------------------------------------------------------------- |
|
|
447
|
+
| `hostEnvVar` | Name of an environment variable that overrides the literal `host` when set |
|
|
448
|
+
| `portEnvVar` | Name of an environment variable that overrides the literal `port` when set |
|
|
449
|
+
|
|
450
|
+
These are **overrides with fallback**, not requirements — the opposite of `passwordEnvVar`, which fails when its variable is unset:
|
|
451
|
+
|
|
452
|
+
- variable set to a value → that value wins over the literal in the config;
|
|
453
|
+
- variable unset or empty → the literal `host` / `port` in the config is used, and no error is raised;
|
|
454
|
+
- `portEnvVar` set to something that is not an integer between 1 and 65535 → the command **fails**. It never falls back to the literal, because that would query a different database while you believe the override applied.
|
|
455
|
+
|
|
456
|
+
The variable is read from the process environment first (Bun loads `.env` files into it), then from `~/.zshrc` exports.
|
|
457
|
+
|
|
458
|
+
The typical use is a repository where every git worktree runs its own database container on its own host port, published by that worktree's `.env`:
|
|
459
|
+
|
|
460
|
+
```json5
|
|
461
|
+
{
|
|
462
|
+
database: {
|
|
463
|
+
default: {
|
|
464
|
+
environments: {
|
|
465
|
+
local: {
|
|
466
|
+
host: "127.0.0.1",
|
|
467
|
+
port: 40543, // the main checkout's database
|
|
468
|
+
user: "app",
|
|
469
|
+
database: "app",
|
|
470
|
+
portEnvVar: "APP_POSTGRES_PORT", // a worktree's .env sets this to e.g. 40643
|
|
471
|
+
hostEnvVar: "APP_POSTGRES_HOST", // optional, same fallback rule
|
|
472
|
+
prerequisites: [],
|
|
473
|
+
},
|
|
474
|
+
},
|
|
475
|
+
},
|
|
476
|
+
},
|
|
477
|
+
}
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
Run from the main checkout, where `APP_POSTGRES_PORT` is unset, `db-tool` connects to `127.0.0.1:40543`. Run from a worktree whose `.env` sets `APP_POSTGRES_PORT=40643`, the same config connects to `127.0.0.1:40643` — so `db-tool` and `job-tool` inspect that worktree's own database instead of the main checkout's.
|
|
481
|
+
|
|
439
482
|
Database VPN prerequisites can be set at the database profile or environment level. If an environment declares `vpn` or `prerequisites`, that environment config replaces the profile prerequisites; `prerequisites: []` explicitly disables inherited VPN setup. DB commands try the query directly first and only connect VPN prerequisites if direct access fails. Package-managed VPNs remain reusable for `idleDisconnectMs` (default 30000) after the last lease; `0` restores immediate cleanup. Preconnected or `leave-running` connections are treated as external and never stopped automatically. If runtime state is corrupt, unknown, or contains legacy artifacts, first stop all agent-tools processes using the VPN, then remove that VPN state directory under `~/.agent-tools/runtime/vpn-prerequisites`.
|
|
440
483
|
|
|
441
484
|
```json5
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAgB,KAAK,EAAU,MAAM,QAAQ,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAgB,KAAK,EAAU,MAAM,QAAQ,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA6NlE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,OAAO,EACf,UAAU,GAAE,MAA4B,GACvC,gBAAgB,CAmClB;AAmFD,wBAAsB,UAAU,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAcxE;;AAED,qBAAa,aAAc,SAAQ,kBAElC;CAAG;;;;AAEJ,qBAAa,eAAgB,SAAQ,qBAAoC;IACvE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;CAAG;AAEL,eAAO,MAAM,kBAAkB,oDAM9B,CAAC;AAEF,KAAK,eAAe,GAAG,MAAM,IAAI,CAC/B,gBAAgB,EAChB,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,eAAe,GAAG,MAAM,CAC/D,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,EAC7B,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,CAAC,GAAG,SAAS,CAkCf;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAE9F;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,OAAO,CAAC,EAAE,MAAM,GACf,gBAAgB,GAAG,SAAS,CAc9B;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACrB,MAAM,GAAG,SAAS,CAqBpB"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -77,6 +77,23 @@ export type DbEnvConfig = ProfilePrerequisites & {
|
|
|
77
77
|
password?: string;
|
|
78
78
|
/** Name of environment variable holding the password, e.g. "DB_TEST_PWD" */
|
|
79
79
|
passwordEnvVar?: string;
|
|
80
|
+
/**
|
|
81
|
+
* Name of an environment variable that overrides `host`, e.g. "APP_POSTGRES_HOST".
|
|
82
|
+
*
|
|
83
|
+
* Override with fallback, deliberately unlike `passwordEnvVar`: an unset or empty variable is
|
|
84
|
+
* not an error, it keeps the literal `host` above. The variable usually exists only in a
|
|
85
|
+
* per-worktree environment, and the main checkout must keep working from the literal.
|
|
86
|
+
*/
|
|
87
|
+
hostEnvVar?: string;
|
|
88
|
+
/**
|
|
89
|
+
* Name of an environment variable that overrides `port`, e.g. "APP_POSTGRES_PORT".
|
|
90
|
+
*
|
|
91
|
+
* Same override-with-fallback rule as `hostEnvVar`: unset or empty keeps the literal `port`,
|
|
92
|
+
* because only a worktree environment publishes its own port. A variable that *is* set but is
|
|
93
|
+
* not an integer in 1..65535 fails instead of falling back — a silent fallback would query the
|
|
94
|
+
* wrong database while the caller believes the override applied.
|
|
95
|
+
*/
|
|
96
|
+
portEnvVar?: string;
|
|
80
97
|
};
|
|
81
98
|
/** SQL mutation operation that can be explicitly allowed for a database environment. */
|
|
82
99
|
export declare const DbMutationOperationSchema: Schema.Literals<readonly ["insert", "update", "delete"]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,yCAAyC;AACzC,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAEhE,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0FAA0F;IAC1F,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,aAAa,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB,0BAA0B,GAC1B,yBAAyB,GACzB,6BAA6B,CAAC;AAElC,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mGAAmG;IACnG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wFAAwF;IACxF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,0BAA0B,CAAC;QACpC,KAAK,CAAC,EAAE,yBAAyB,CAAC;QAClC,KAAK,CAAC,EAAE,6BAA6B,CAAC;KACvC,CAAC;IACF,uGAAuG;IACvG,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC3C,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,+CAA+C;AAC/C,MAAM,MAAM,SAAS,GAAG,oBAAoB,GAAG;IAC7C,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,qDAAqD;AACrD,MAAM,MAAM,WAAW,GAAG,oBAAoB,GAAG;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,29 @@ import { ConfigService } from "#config";
|
|
|
5
5
|
import { DbConfigService } from "./config-service";
|
|
6
6
|
import { DbSqlClient } from "./sql-client";
|
|
7
7
|
import { type DbError } from "./errors";
|
|
8
|
+
export type ResolvedPortOverride = {
|
|
9
|
+
readonly ok: true;
|
|
10
|
+
readonly port: number;
|
|
11
|
+
} | {
|
|
12
|
+
readonly ok: false;
|
|
13
|
+
readonly message: string;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Applies a `portEnvVar` override to the literal `port` of a database environment.
|
|
17
|
+
*
|
|
18
|
+
* Override with fallback: no variable name, or a variable that is unset or blank, keeps
|
|
19
|
+
* `literalPort`, because the variable exists only in environments that publish their own port
|
|
20
|
+
* (a per-repository worktree) while the main checkout runs from the literal. A variable that is
|
|
21
|
+
* set but does not hold an integer in 1..65535 fails instead of falling back, since falling back
|
|
22
|
+
* would silently query the main checkout's database while the caller believes the override applied.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolvePortOverride(env: string, literalPort: number, portEnvVar: string | undefined, value: string | undefined): ResolvedPortOverride;
|
|
25
|
+
/**
|
|
26
|
+
* Applies a `hostEnvVar` override to the literal `host` of a database environment.
|
|
27
|
+
* Unset or blank keeps `literalHost`; every non-blank value is a usable host, so there is no
|
|
28
|
+
* failure case here, unlike {@link resolvePortOverride}.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveHostOverride(literalHost: string, hostEnvVar: string | undefined, value: string | undefined): string;
|
|
8
31
|
export declare function resolveDbAccessMode(env: string, host: string, hasKubectlConfig: boolean, allowedMutations?: readonly DbMutationOperation[]): Pick<DbConfig, "allowMutations" | "allowedMutations" | "host" | "needsTunnel">;
|
|
9
32
|
export declare function isFullyReadOnly(config: Pick<DbConfig, "allowMutations" | "allowedMutations" | "allowedMutationTargets">): boolean;
|
|
10
33
|
export { buildApiProbeArgs } from "#shared/k8s-probe";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/db-tool/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAS,OAAO,EAAY,MAAM,EAAE,KAAK,EAAuB,MAAM,QAAQ,CAAC;AAEtF,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAOxC,OAAO,EAAE,eAAe,EAA4B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAqB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAKL,KAAK,OAAO,EACb,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/db-tool/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAS,OAAO,EAAY,MAAM,EAAE,KAAK,EAAuB,MAAM,QAAQ,CAAC;AAEtF,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAOxC,OAAO,EAAE,eAAe,EAA4B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAqB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAKL,KAAK,OAAO,EACb,MAAM,UAAU,CAAC;AA8BlB,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,oBAAoB,CAqBtB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,CAOR;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,OAAO,EACzB,gBAAgB,GAAE,SAAS,mBAAmB,EAAO,GACpD,IAAI,CAAC,QAAQ,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,MAAM,GAAG,aAAa,CAAC,CAUhF;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,wBAAwB,CAAC,GACvF,OAAO,CAMT;AAGD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;;2BAK3B,CACrB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;iCACX,CAC3B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,UAAU,EAChB,KAAK,CAAC,EAAE,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;;AAZ5C,qBAAa,SAAU,SAAQ,cAcF;IAC3B,MAAM,CAAC,QAAQ,CAAC,KAAK,yHAuuBnB;CACH"}
|
package/dist/db-tool/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/db-tool/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEzD,YAAY,EAAE,mBAAmB,EAAE,CAAC;AACpC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAE1C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,CAAC;AAEzE,MAAM,MAAM,QAAQ,GAAG,oBAAoB,GAAG;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACjD,sBAAsB,EAAE,wBAAwB,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,IAAI,CAAC;IACpD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/db-tool/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEzD,YAAY,EAAE,mBAAmB,EAAE,CAAC;AACpC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAE1C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,CAAC;AAEzE,MAAM,MAAM,QAAQ,GAAG,oBAAoB,GAAG;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACjD,sBAAsB,EAAE,wBAAwB,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,IAAI,CAAC;IACpD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/gh-tool/pr/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,MAAM,EAAkB,MAAM,QAAQ,CAAC;AAE1E,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EAEjB,WAAW,EACX,aAAa,EACb,MAAM,EAGN,iBAAiB,EAIlB,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/gh-tool/pr/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/gh-tool/pr/review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAEV,YAAY,EAGZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EAEb,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/gh-tool/pr/review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAEV,YAAY,EAGZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EAEb,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAic5C;;;GAGG;AACH,eAAO,MAAM,YAAY,uQAcvB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa,8OAoCxB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,qPAmC7B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,YAAY,sSA+CvB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;uHAaxB,CAAC;AAEH,eAAO,MAAM,uBAAuB,oOAgBlC,CAAC;AAEH,eAAO,MAAM,gBAAgB,uLA0C3B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;uHA4CjC,CAAC;AAeH;;GAEG;AACH,eAAO,MAAM,cAAc;;;uHA4FzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;uHA0FjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa;;;uHAWxB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;uHAiD9B,CAAC;AAeH,eAAO,MAAM,sBAAsB;;;;uHA8CjC,CAAC"}
|
package/dist/gh-tool/types.d.ts
CHANGED
|
@@ -46,6 +46,8 @@ export type ReviewThread = {
|
|
|
46
46
|
isVisibleOpen: boolean;
|
|
47
47
|
lastReplyAuthor: string | null;
|
|
48
48
|
lastReplyAt: string | null;
|
|
49
|
+
reviewId: number | null;
|
|
50
|
+
updatedAt: string | null;
|
|
49
51
|
/** Thread ids of exact duplicates collapsed into this representative (encounter order). */
|
|
50
52
|
duplicateThreadIds: string[];
|
|
51
53
|
};
|
|
@@ -59,6 +61,14 @@ export type ReviewComment = {
|
|
|
59
61
|
path: string;
|
|
60
62
|
line: number;
|
|
61
63
|
createdAt: string;
|
|
64
|
+
reviewId: number | null;
|
|
65
|
+
/**
|
|
66
|
+
* Last change to the comment. A comment drafted inside a pending review keeps its draft time in
|
|
67
|
+
* `createdAt` and carries the submit time here until someone edits it, so this is a proxy for
|
|
68
|
+
* when the comment became visible. Join `reviewId` to the review's `submittedAt` for the exact
|
|
69
|
+
* time.
|
|
70
|
+
*/
|
|
71
|
+
updatedAt: string;
|
|
62
72
|
};
|
|
63
73
|
export declare const IssueCommentId: Schema.brand<Schema.Int, "IssueCommentId">;
|
|
64
74
|
export type IssueCommentId = typeof IssueCommentId.Type;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/gh-tool/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/gh-tool/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/gh-tool/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/gh-tool/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAY,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIlD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAsC,YAAY,EAAE,MAAM,SAAS,CAAC;AAwChF,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAqKF,eAAO,MAAM,gBAAgB;cACjB,MAAM;SACX,MAAM;YACH,aAAa,CAAC,MAAM,CAAC;UACvB,MAAM,GAAG,IAAI;;;;;;;gGAsBnB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAKF,eAAO,MAAM,kBAAkB;cACnB,MAAM;SACX,MAAM;UACL,MAAM,GAAG,IAAI;6GAyBnB,CAAC;AAKH,eAAO,MAAM,qBAAqB;cACtB,MAAM;SACX,MAAM;UACL,MAAM,GAAG,IAAI;iBACN,WAAW,CAAC,MAAM,CAAC;kHAShC,CAAC;AAMH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,MAAM,EACb,YAAY;IACV,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CAClF,EACD,aAAa,MAAM,GAAG,IAAI,EAC1B,QAAQ,OAAO,EACf,gBAAgB,MAAM;;;;;;;;;;CAiBtB,CAAC;AAmHH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOjD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAsBvD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAa5D;AAgBD,eAAO,MAAM,kBAAkB,GAAI,SAAS,SAAS,QAAQ,EAAE,KAAG,YA0CjE,CAAC;AA0DF,eAAO,MAAM,YAAY;WAChB,MAAM;SACR,MAAM;YACH,MAAM,GAAG,IAAI;sBACH,SAAS,MAAM,EAAE,GAAG,IAAI;qBACzB,OAAO;eACb,OAAO;YACV,MAAM;UACR,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;gGA8DnB,CAAC;AAMH,eAAO,MAAM,mBAAmB;;;;;;;oGA8C/B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;oGAaqD,CAAC;AAEtF,eAAO,MAAM,mBAAmB;;;;oGAa+C,CAAC;AAEhF,eAAO,MAAM,mBAAmB;;;;;oGAsB2D,CAAC;AAE5F,eAAO,MAAM,oBAAoB;;;;;oGAiBoD,CAAC;AAEtF,eAAO,MAAM,qBAAqB;;;;oGAamC,CAAC;AAEtE,eAAO,MAAM,kBAAkB;;;;;;oGAgD6C,CAAC;AAE7E,eAAO,MAAM,oBAAoB;;;;;;oGA4BiE,CAAC;AAEnG,eAAO,MAAM,sBAAsB;;;;;;;oGAwClC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;oGAyBtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logs-tool/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAQ,MAAM,qBAAqB,CAAC;AAEpD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logs-tool/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAQ,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAyB,MAAM,QAAQ,CAAC;AAavD,OAAO,EAAE,aAAa,EAA6C,MAAM,SAAS,CAAC;AACnF,OAAO,EAAE,eAAe,EAAsD,MAAM,UAAU,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAoB,MAAM,WAAW,CAAC;AAyM1D,eAAO,MAAM,GAAG,6KAEd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session-tool/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAY,OAAO,EAAQ,MAAM,qBAAqB,CAAC;AAE9D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session-tool/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAY,OAAO,EAAQ,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAiB,MAAM,QAAQ,CAAC;AAQ/C,OAAO,EAAE,aAAa,EAAsB,MAAM,UAAU,CAAC;AAE7D,OAAO,EAAc,cAAc,EAAiC,MAAM,WAAW,CAAC;AAiTtF,eAAO,MAAM,GAAG,8JAEd,CAAC"}
|
package/dist/shared/format.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Flag } from "effect/unstable/cli";
|
|
2
|
+
import { Effect } from "effect";
|
|
2
3
|
import type { BaseResult, OutputFormat } from "./types";
|
|
3
4
|
export declare const formatOption: Flag.Flag<"json" | "toon">;
|
|
4
5
|
export declare function formatOutput<T extends BaseResult>(result: T, format: OutputFormat): string;
|
|
5
6
|
export declare function formatAny<T>(data: T, format: OutputFormat): string;
|
|
6
|
-
export declare const
|
|
7
|
+
export declare const logText: (text: string) => Effect.Effect<undefined, never, never>;
|
|
8
|
+
export declare const logFormatted: <T>(data: T, format: OutputFormat) => Effect.Effect<undefined, never, never>;
|
|
7
9
|
//# sourceMappingURL=format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/shared/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/shared/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAExD,eAAO,MAAM,YAAY,4BAGxB,CAAC;AAEF,wBAAgB,YAAY,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAK1F;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAKlE;AAOD,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,2CAShC,CAAC;AAEL,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,MAAM,CAAC,EAAE,QAAQ,YAAY,2CAAqC,CAAC"}
|
package/dist/shared/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { BaseResult, CommandOptions, CommandResult, Environment, OutputFormat, ToolResult, } from "./types";
|
|
2
|
-
export { formatAny, formatOption, formatOutput, logFormatted } from "./format";
|
|
2
|
+
export { formatAny, formatOption, formatOutput, logFormatted, logText } from "./format";
|
|
3
3
|
export { expandPath, runCommand } from "./bun";
|
|
4
4
|
export { commonArgOptions, parseCommonArgs } from "./cli";
|
|
5
5
|
export { renderCauseToStderr } from "./error-renderer";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,GACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,GACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAIzF,eAAO,MAAM,OAAO,QAAc,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE5F,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/package.json
CHANGED
|
@@ -209,6 +209,14 @@
|
|
|
209
209
|
"description": "Name of the environment variable holding the database password.",
|
|
210
210
|
"type": "string"
|
|
211
211
|
},
|
|
212
|
+
"hostEnvVar": {
|
|
213
|
+
"description": "Name of an environment variable that overrides host when it is set. Unset or empty keeps the literal host.",
|
|
214
|
+
"type": "string"
|
|
215
|
+
},
|
|
216
|
+
"portEnvVar": {
|
|
217
|
+
"description": "Name of an environment variable that overrides port when it is set. Unset or empty keeps the literal port; a value that is not an integer between 1 and 65535 is an error, never a silent fallback.",
|
|
218
|
+
"type": "string"
|
|
219
|
+
},
|
|
212
220
|
"prerequisites": {
|
|
213
221
|
"description": "Ordered prerequisite references for this database environment. Declaring this or vpn overrides profile-level database prerequisites; an empty array explicitly disables inherited prerequisites.",
|
|
214
222
|
"type": "array",
|
package/src/audit-tool/index.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
import { Command, Flag } from "effect/unstable/cli";
|
|
3
3
|
import { BunRuntime, BunServices } from "@effect/platform-bun";
|
|
4
|
-
import {
|
|
4
|
+
import { Effect, Layer, Option } from "effect";
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
7
|
makeSchemaCommand,
|
|
8
8
|
formatOption,
|
|
9
9
|
formatOutput,
|
|
10
|
+
logText,
|
|
10
11
|
renderCauseToStderr,
|
|
11
12
|
VERSION,
|
|
12
13
|
} from "#shared";
|
|
@@ -58,7 +59,7 @@ const listCommand = Command.make(
|
|
|
58
59
|
data: filteredEntries,
|
|
59
60
|
};
|
|
60
61
|
|
|
61
|
-
yield*
|
|
62
|
+
yield* logText(formatOutput(result, format));
|
|
62
63
|
}),
|
|
63
64
|
).pipe(Command.withDescription("List recent audit log entries"));
|
|
64
65
|
|
|
@@ -83,7 +84,7 @@ const purgeCommand = Command.make(
|
|
|
83
84
|
data: { deleted, days },
|
|
84
85
|
};
|
|
85
86
|
|
|
86
|
-
yield*
|
|
87
|
+
yield* logText(formatOutput(result, format));
|
|
87
88
|
}),
|
|
88
89
|
).pipe(Command.withDescription("Delete old audit log entries"));
|
|
89
90
|
|
package/src/az-tool/index.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
import { Command, Flag } from "effect/unstable/cli";
|
|
3
3
|
import { BunRuntime, BunServices } from "@effect/platform-bun";
|
|
4
|
-
import {
|
|
4
|
+
import { Effect, Layer, Option } from "effect";
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
7
|
makeSchemaCommand,
|
|
8
8
|
formatAny,
|
|
9
9
|
formatOption,
|
|
10
10
|
formatOutput,
|
|
11
|
+
logText,
|
|
11
12
|
renderCauseToStderr,
|
|
12
13
|
VERSION,
|
|
13
14
|
} from "#shared";
|
|
@@ -46,7 +47,7 @@ const buildTimelineCommand = Command.make(
|
|
|
46
47
|
({ buildId, format, profile: _profile }) =>
|
|
47
48
|
Effect.gen(function* () {
|
|
48
49
|
const result = yield* getBuildTimeline(buildId);
|
|
49
|
-
yield*
|
|
50
|
+
yield* logText(formatAny(result, format));
|
|
50
51
|
}),
|
|
51
52
|
).pipe(Command.withDescription("Get build timeline with all records (jobs, stages, tasks)"));
|
|
52
53
|
|
|
@@ -59,7 +60,7 @@ const buildFailedJobsCommand = Command.make(
|
|
|
59
60
|
({ buildId, format, profile: _profile }) =>
|
|
60
61
|
Effect.gen(function* () {
|
|
61
62
|
const failedJobs = yield* findFailedJobs(buildId);
|
|
62
|
-
yield*
|
|
63
|
+
yield* logText(formatAny({ buildId, failedJobs }, format));
|
|
63
64
|
}),
|
|
64
65
|
).pipe(Command.withDescription("Find failed or canceled jobs in a build"));
|
|
65
66
|
|
|
@@ -72,7 +73,7 @@ const buildLogsCommand = Command.make(
|
|
|
72
73
|
({ buildId, format, profile: _profile }) =>
|
|
73
74
|
Effect.gen(function* () {
|
|
74
75
|
const result = yield* getBuildLogs(buildId);
|
|
75
|
-
yield*
|
|
76
|
+
yield* logText(formatAny(result, format));
|
|
76
77
|
}),
|
|
77
78
|
).pipe(Command.withDescription("Get list of build logs"));
|
|
78
79
|
|
|
@@ -86,7 +87,7 @@ const buildLogContentCommand = Command.make(
|
|
|
86
87
|
({ buildId, format, logId, profile: _profile }) =>
|
|
87
88
|
Effect.gen(function* () {
|
|
88
89
|
const content = yield* getBuildLogContent(buildId, logId);
|
|
89
|
-
yield*
|
|
90
|
+
yield* logText(formatAny({ buildId, logId, content }, format));
|
|
90
91
|
}),
|
|
91
92
|
).pipe(Command.withDescription("Get specific log content by log ID"));
|
|
92
93
|
|
|
@@ -99,7 +100,7 @@ const buildSummaryCommand = Command.make(
|
|
|
99
100
|
({ buildId, format, profile: _profile }) =>
|
|
100
101
|
Effect.gen(function* () {
|
|
101
102
|
const summary = yield* getBuildJobSummary(buildId);
|
|
102
|
-
yield*
|
|
103
|
+
yield* logText(formatAny({ buildId, summary }, format));
|
|
103
104
|
}),
|
|
104
105
|
).pipe(Command.withDescription("Get job summaries with duration and status information"));
|
|
105
106
|
|
|
@@ -144,7 +145,7 @@ const cmdCommand = Command.make(
|
|
|
144
145
|
|
|
145
146
|
if (dryRun) {
|
|
146
147
|
const fullCommand = `az ${cmd}`;
|
|
147
|
-
yield*
|
|
148
|
+
yield* logText(`[DRY-RUN] Would execute: ${fullCommand}`);
|
|
148
149
|
return;
|
|
149
150
|
}
|
|
150
151
|
|
|
@@ -154,7 +155,7 @@ const cmdCommand = Command.make(
|
|
|
154
155
|
const output = yield* az.runCommand(cmd, projectName);
|
|
155
156
|
const executionTimeMs = Date.now() - startTime;
|
|
156
157
|
|
|
157
|
-
yield*
|
|
158
|
+
yield* logText(
|
|
158
159
|
formatOutput(
|
|
159
160
|
{
|
|
160
161
|
success: true,
|
package/src/config/loader.ts
CHANGED
|
@@ -105,6 +105,8 @@ const DbEnvConfigSchema = Schema.Struct({
|
|
|
105
105
|
database: Schema.String,
|
|
106
106
|
password: Schema.optionalKey(Schema.String),
|
|
107
107
|
passwordEnvVar: Schema.optionalKey(Schema.String),
|
|
108
|
+
hostEnvVar: Schema.optionalKey(Schema.String),
|
|
109
|
+
portEnvVar: Schema.optionalKey(Schema.String),
|
|
108
110
|
prerequisites: Schema.optionalKey(PrerequisitesSchema),
|
|
109
111
|
vpn: Schema.optionalKey(Schema.String),
|
|
110
112
|
});
|
package/src/config/types.ts
CHANGED
|
@@ -91,6 +91,23 @@ export type DbEnvConfig = ProfilePrerequisites & {
|
|
|
91
91
|
password?: string;
|
|
92
92
|
/** Name of environment variable holding the password, e.g. "DB_TEST_PWD" */
|
|
93
93
|
passwordEnvVar?: string;
|
|
94
|
+
/**
|
|
95
|
+
* Name of an environment variable that overrides `host`, e.g. "APP_POSTGRES_HOST".
|
|
96
|
+
*
|
|
97
|
+
* Override with fallback, deliberately unlike `passwordEnvVar`: an unset or empty variable is
|
|
98
|
+
* not an error, it keeps the literal `host` above. The variable usually exists only in a
|
|
99
|
+
* per-worktree environment, and the main checkout must keep working from the literal.
|
|
100
|
+
*/
|
|
101
|
+
hostEnvVar?: string;
|
|
102
|
+
/**
|
|
103
|
+
* Name of an environment variable that overrides `port`, e.g. "APP_POSTGRES_PORT".
|
|
104
|
+
*
|
|
105
|
+
* Same override-with-fallback rule as `hostEnvVar`: unset or empty keeps the literal `port`,
|
|
106
|
+
* because only a worktree environment publishes its own port. A variable that *is* set but is
|
|
107
|
+
* not an integer in 1..65535 fails instead of falling back — a silent fallback would query the
|
|
108
|
+
* wrong database while the caller believes the override applied.
|
|
109
|
+
*/
|
|
110
|
+
portEnvVar?: string;
|
|
94
111
|
};
|
|
95
112
|
|
|
96
113
|
/** SQL mutation operation that can be explicitly allowed for a database environment. */
|
package/src/db-tool/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
import { Command, Flag } from "effect/unstable/cli";
|
|
3
3
|
import { BunRuntime, BunServices } from "@effect/platform-bun";
|
|
4
|
-
import {
|
|
4
|
+
import { Effect, Layer, Option } from "effect";
|
|
5
5
|
|
|
6
6
|
import type { SchemaMode } from "./types";
|
|
7
7
|
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
makeSchemaCommand,
|
|
10
10
|
formatOption,
|
|
11
11
|
formatOutput,
|
|
12
|
+
logText,
|
|
12
13
|
renderCauseToStderr,
|
|
13
14
|
VERSION,
|
|
14
15
|
} from "#shared";
|
|
@@ -80,7 +81,7 @@ const sqlCommand = Command.make(
|
|
|
80
81
|
const resolvedEnv = yield* resolveEnv(env);
|
|
81
82
|
const db = yield* DbService;
|
|
82
83
|
const result = yield* db.executeQuery(resolvedEnv, sql, Option.getOrUndefined(limit));
|
|
83
|
-
yield*
|
|
84
|
+
yield* logText(formatOutput(result, format));
|
|
84
85
|
}),
|
|
85
86
|
).pipe(Command.withDescription("Execute a SQL query"));
|
|
86
87
|
|
|
@@ -115,7 +116,7 @@ const schemaCommand = Command.make(
|
|
|
115
116
|
mode as SchemaMode,
|
|
116
117
|
Option.getOrUndefined(table),
|
|
117
118
|
);
|
|
118
|
-
yield*
|
|
119
|
+
yield* logText(formatOutput(result, format));
|
|
119
120
|
}),
|
|
120
121
|
).pipe(Command.withDescription("Introspect database schema (tables, columns, relationships)"));
|
|
121
122
|
|
|
@@ -139,7 +140,7 @@ const envsCommand = Command.make(
|
|
|
139
140
|
message: `${environments.length} environment(s) configured`,
|
|
140
141
|
executionTimeMs: 0,
|
|
141
142
|
};
|
|
142
|
-
yield*
|
|
143
|
+
yield* logText(formatOutput(result, format));
|
|
143
144
|
}),
|
|
144
145
|
).pipe(
|
|
145
146
|
Command.withDescription("List configured database environments and the default (no network)"),
|
|
@@ -198,7 +199,7 @@ const makeDiagnosticCommand = (name: string, description: string, sql: string) =
|
|
|
198
199
|
const resolvedEnv = yield* resolveEnv(env);
|
|
199
200
|
const db = yield* DbService;
|
|
200
201
|
const result = yield* db.executeQuery(resolvedEnv, sql, Option.getOrUndefined(limit));
|
|
201
|
-
yield*
|
|
202
|
+
yield* logText(formatOutput(result, format));
|
|
202
203
|
}),
|
|
203
204
|
).pipe(Command.withDescription(description));
|
|
204
205
|
|
package/src/db-tool/service.ts
CHANGED
|
@@ -38,6 +38,75 @@ import { transformQueryResult } from "./transformers";
|
|
|
38
38
|
|
|
39
39
|
const LOCALHOST_HOSTS = new Set(["localhost", "127.0.0.1"]);
|
|
40
40
|
|
|
41
|
+
const MIN_TCP_PORT = 1;
|
|
42
|
+
const MAX_TCP_PORT = 65535;
|
|
43
|
+
const INTEGER_ONLY = /^\d+$/;
|
|
44
|
+
|
|
45
|
+
// Bun.env is the primary source: it carries the values Bun loads from a .env file, which is where
|
|
46
|
+
// a per-worktree host/port lives. It aliases process.env, which is also the only one that exists
|
|
47
|
+
// when this module runs outside Bun (the vitest runner).
|
|
48
|
+
const readProcessEnv = (envVar: string): string | undefined =>
|
|
49
|
+
(typeof Bun === "undefined" ? process.env : Bun.env)[envVar];
|
|
50
|
+
|
|
51
|
+
export type ResolvedPortOverride =
|
|
52
|
+
| { readonly ok: true; readonly port: number }
|
|
53
|
+
| { readonly ok: false; readonly message: string };
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Applies a `portEnvVar` override to the literal `port` of a database environment.
|
|
57
|
+
*
|
|
58
|
+
* Override with fallback: no variable name, or a variable that is unset or blank, keeps
|
|
59
|
+
* `literalPort`, because the variable exists only in environments that publish their own port
|
|
60
|
+
* (a per-repository worktree) while the main checkout runs from the literal. A variable that is
|
|
61
|
+
* set but does not hold an integer in 1..65535 fails instead of falling back, since falling back
|
|
62
|
+
* would silently query the main checkout's database while the caller believes the override applied.
|
|
63
|
+
*/
|
|
64
|
+
export function resolvePortOverride(
|
|
65
|
+
env: string,
|
|
66
|
+
literalPort: number,
|
|
67
|
+
portEnvVar: string | undefined,
|
|
68
|
+
value: string | undefined,
|
|
69
|
+
): ResolvedPortOverride {
|
|
70
|
+
if (!portEnvVar) {
|
|
71
|
+
return { ok: true, port: literalPort };
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const trimmed = value?.trim() ?? "";
|
|
75
|
+
if (trimmed === "") {
|
|
76
|
+
return { ok: true, port: literalPort };
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const parsed = Number(trimmed);
|
|
80
|
+
if (!INTEGER_ONLY.test(trimmed) || parsed < MIN_TCP_PORT || parsed > MAX_TCP_PORT) {
|
|
81
|
+
return {
|
|
82
|
+
ok: false,
|
|
83
|
+
message:
|
|
84
|
+
`Environment variable ${portEnvVar} (override for the 'port' config field) is set to ` +
|
|
85
|
+
`"${value}" in environment ${env}, which is not an integer port between ${MIN_TCP_PORT} and ${MAX_TCP_PORT}.`,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return { ok: true, port: parsed };
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Applies a `hostEnvVar` override to the literal `host` of a database environment.
|
|
94
|
+
* Unset or blank keeps `literalHost`; every non-blank value is a usable host, so there is no
|
|
95
|
+
* failure case here, unlike {@link resolvePortOverride}.
|
|
96
|
+
*/
|
|
97
|
+
export function resolveHostOverride(
|
|
98
|
+
literalHost: string,
|
|
99
|
+
hostEnvVar: string | undefined,
|
|
100
|
+
value: string | undefined,
|
|
101
|
+
): string {
|
|
102
|
+
if (!hostEnvVar) {
|
|
103
|
+
return literalHost;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const trimmed = value?.trim() ?? "";
|
|
107
|
+
return trimmed === "" ? literalHost : trimmed;
|
|
108
|
+
}
|
|
109
|
+
|
|
41
110
|
export function resolveDbAccessMode(
|
|
42
111
|
env: string,
|
|
43
112
|
host: string,
|
|
@@ -204,15 +273,56 @@ export class DbService extends Context.Service<
|
|
|
204
273
|
});
|
|
205
274
|
});
|
|
206
275
|
|
|
276
|
+
const lookupEnvOverride = (envVar: string, zshrcEnv: Record<string, string>) =>
|
|
277
|
+
readProcessEnv(envVar) ?? zshrcEnv[envVar];
|
|
278
|
+
|
|
207
279
|
const resolveDbConfig = Effect.fn("DbService.resolveDbConfig")(function* (
|
|
208
280
|
config: DbConfig,
|
|
209
281
|
env: string,
|
|
210
282
|
) {
|
|
211
283
|
const needsEnvResolution =
|
|
212
|
-
envTemplateRegex.test(config.user) ||
|
|
284
|
+
envTemplateRegex.test(config.user) ||
|
|
285
|
+
envTemplateRegex.test(config.database) ||
|
|
286
|
+
config.hostEnvVar !== undefined ||
|
|
287
|
+
config.portEnvVar !== undefined;
|
|
213
288
|
const zshrcEnv = needsEnvResolution ? yield* loadEnvFromZshrc() : {};
|
|
289
|
+
|
|
290
|
+
const host = resolveHostOverride(
|
|
291
|
+
config.host,
|
|
292
|
+
config.hostEnvVar,
|
|
293
|
+
config.hostEnvVar ? lookupEnvOverride(config.hostEnvVar, zshrcEnv) : undefined,
|
|
294
|
+
);
|
|
295
|
+
const portOverride = resolvePortOverride(
|
|
296
|
+
env,
|
|
297
|
+
config.port,
|
|
298
|
+
config.portEnvVar,
|
|
299
|
+
config.portEnvVar ? lookupEnvOverride(config.portEnvVar, zshrcEnv) : undefined,
|
|
300
|
+
);
|
|
301
|
+
|
|
302
|
+
if (!portOverride.ok) {
|
|
303
|
+
return yield* new DbConnectionError({
|
|
304
|
+
message: portOverride.message,
|
|
305
|
+
environment: env,
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
// A host override can flip the tunnel decision (a forwarded localhost port vs a directly
|
|
310
|
+
// reachable host), so re-derive the access mode whenever the override changed the host.
|
|
311
|
+
const needsTunnel =
|
|
312
|
+
host === config.host
|
|
313
|
+
? config.needsTunnel
|
|
314
|
+
: resolveDbAccessMode(
|
|
315
|
+
env,
|
|
316
|
+
host,
|
|
317
|
+
dbConfig.kubectl !== undefined,
|
|
318
|
+
config.allowedMutations,
|
|
319
|
+
).needsTunnel;
|
|
320
|
+
|
|
214
321
|
return {
|
|
215
322
|
...config,
|
|
323
|
+
host,
|
|
324
|
+
port: portOverride.port,
|
|
325
|
+
needsTunnel,
|
|
216
326
|
user: yield* resolveConfigString(config.user, env, "user", zshrcEnv),
|
|
217
327
|
database: yield* resolveConfigString(config.database, env, "database", zshrcEnv),
|
|
218
328
|
};
|
|
@@ -646,6 +756,8 @@ export class DbService extends Context.Service<
|
|
|
646
756
|
database: envConfig.database,
|
|
647
757
|
password: envConfig.password,
|
|
648
758
|
passwordEnvVar: envConfig.passwordEnvVar,
|
|
759
|
+
hostEnvVar: envConfig.hostEnvVar,
|
|
760
|
+
portEnvVar: envConfig.portEnvVar,
|
|
649
761
|
...resolveEnvironmentScopedPrerequisites(dbConfig, envConfig),
|
|
650
762
|
port: envConfig.port,
|
|
651
763
|
needsTunnel: accessMode.needsTunnel,
|
package/src/db-tool/types.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Console, Effect, Option } from "effect";
|
|
|
3
3
|
|
|
4
4
|
import type { CheckResult, PRStatusResult } from "#gh/types";
|
|
5
5
|
|
|
6
|
-
import { formatOption, logFormatted } from "#shared";
|
|
6
|
+
import { formatOption, logFormatted, logText } from "#shared";
|
|
7
7
|
import { GitHubService } from "#gh/service";
|
|
8
8
|
import { GitHubCommandError } from "#gh/errors";
|
|
9
9
|
|
|
@@ -887,7 +887,7 @@ export const prWatchCommand = Command.make(
|
|
|
887
887
|
yield* watchPRs(
|
|
888
888
|
numbers,
|
|
889
889
|
{ intervalSeconds: interval, timeoutSeconds: timeout, until },
|
|
890
|
-
(event) =>
|
|
890
|
+
(event) => logText(JSON.stringify(event)),
|
|
891
891
|
);
|
|
892
892
|
}),
|
|
893
893
|
),
|
package/src/gh-tool/pr/core.ts
CHANGED
|
@@ -19,6 +19,7 @@ import type {
|
|
|
19
19
|
import type { GitHubAuthError, GitHubNotFoundError } from "#gh/errors";
|
|
20
20
|
import { GitHubCommandError, GitHubMergeError } from "#gh/errors";
|
|
21
21
|
import { GitHubService } from "#gh/service";
|
|
22
|
+
import { logText } from "#shared";
|
|
22
23
|
|
|
23
24
|
import type { ButStatusJson, PRViewJsonResult } from "./helpers";
|
|
24
25
|
import { runLocalCommand } from "./helpers";
|
|
@@ -764,7 +765,7 @@ export const mergePR = Effect.fn("pr.mergePR")(function* (opts: {
|
|
|
764
765
|
"(rolled back if the merge fails); branch deletion is skipped if any retarget fails. "
|
|
765
766
|
: "";
|
|
766
767
|
|
|
767
|
-
yield*
|
|
768
|
+
yield* logText(
|
|
768
769
|
`DRY RUN: Would merge PR #${info.number} "${info.title}" via ${opts.strategy.toUpperCase()}. ` +
|
|
769
770
|
`Branch \`${info.headRefName}\` → \`${info.baseRefName}\`. ` +
|
|
770
771
|
(opts.deleteBranch && !headIsLongLived
|
package/src/gh-tool/pr/review.ts
CHANGED
|
@@ -228,6 +228,8 @@ type RawReviewComment = {
|
|
|
228
228
|
path: string;
|
|
229
229
|
line: number;
|
|
230
230
|
created_at: string;
|
|
231
|
+
updated_at: string;
|
|
232
|
+
pull_request_review_id?: number | null;
|
|
231
233
|
commit_id?: string | null;
|
|
232
234
|
};
|
|
233
235
|
|
|
@@ -353,6 +355,7 @@ const enrichThreads = (
|
|
|
353
355
|
currentHeadSha: string | null,
|
|
354
356
|
): ReviewThread[] => {
|
|
355
357
|
const repliesByRootCommentId = new Map<number, ReviewComment[]>();
|
|
358
|
+
const commentsById = new Map(reviewComments.map((comment) => [comment.id, comment]));
|
|
356
359
|
|
|
357
360
|
for (const comment of reviewComments) {
|
|
358
361
|
if (comment.inReplyToId === null) {
|
|
@@ -371,6 +374,7 @@ const enrichThreads = (
|
|
|
371
374
|
return null;
|
|
372
375
|
}
|
|
373
376
|
|
|
377
|
+
const root = commentsById.get(comment.databaseId);
|
|
374
378
|
const replies = repliesByRootCommentId.get(comment.databaseId) ?? [];
|
|
375
379
|
const lastReply = replies.reduce<ReviewComment | null>((latest, current) => {
|
|
376
380
|
if (latest === null) {
|
|
@@ -399,6 +403,8 @@ const enrichThreads = (
|
|
|
399
403
|
isVisibleOpen: !node.isResolved || needsHumanReply,
|
|
400
404
|
lastReplyAuthor: lastReply?.author ?? null,
|
|
401
405
|
lastReplyAt: lastReply?.createdAt ?? null,
|
|
406
|
+
reviewId: root?.reviewId ?? null,
|
|
407
|
+
updatedAt: root?.updatedAt ?? null,
|
|
402
408
|
duplicateThreadIds: [] as string[],
|
|
403
409
|
};
|
|
404
410
|
})
|
|
@@ -505,6 +511,8 @@ export const fetchComments = Effect.fn("pr.fetchComments")(function* (
|
|
|
505
511
|
path: c.path,
|
|
506
512
|
line: c.line,
|
|
507
513
|
createdAt: c.created_at,
|
|
514
|
+
reviewId: c.pull_request_review_id ?? null,
|
|
515
|
+
updatedAt: c.updated_at,
|
|
508
516
|
}));
|
|
509
517
|
|
|
510
518
|
if (since !== null) {
|
package/src/gh-tool/types.ts
CHANGED
|
@@ -44,6 +44,8 @@ export type ReviewThread = {
|
|
|
44
44
|
isVisibleOpen: boolean;
|
|
45
45
|
lastReplyAuthor: string | null;
|
|
46
46
|
lastReplyAt: string | null;
|
|
47
|
+
reviewId: number | null;
|
|
48
|
+
updatedAt: string | null;
|
|
47
49
|
/** Thread ids of exact duplicates collapsed into this representative (encounter order). */
|
|
48
50
|
duplicateThreadIds: string[];
|
|
49
51
|
};
|
|
@@ -58,6 +60,14 @@ export type ReviewComment = {
|
|
|
58
60
|
path: string;
|
|
59
61
|
line: number;
|
|
60
62
|
createdAt: string;
|
|
63
|
+
reviewId: number | null;
|
|
64
|
+
/**
|
|
65
|
+
* Last change to the comment. A comment drafted inside a pending review keeps its draft time in
|
|
66
|
+
* `createdAt` and carries the submit time here until someone edits it, so this is a proxy for
|
|
67
|
+
* when the comment became visible. Join `reviewId` to the review's `submittedAt` for the exact
|
|
68
|
+
* time.
|
|
69
|
+
*/
|
|
70
|
+
updatedAt: string;
|
|
61
71
|
};
|
|
62
72
|
|
|
63
73
|
export const IssueCommentId = Schema.Int.pipe(Schema.brand("IssueCommentId"));
|
package/src/gh-tool/workflow.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Command, Flag, Param } from "effect/unstable/cli";
|
|
2
|
-
import {
|
|
2
|
+
import { Duration, Effect, Option } from "effect";
|
|
3
3
|
|
|
4
|
-
import { formatOption, logFormatted } from "#shared";
|
|
4
|
+
import { formatOption, logFormatted, logText } from "#shared";
|
|
5
5
|
import { CI_CHECK_WATCH_TIMEOUT_MS } from "#gh/config";
|
|
6
6
|
import { GitHubCommandError, GitHubNotFoundError } from "./errors";
|
|
7
7
|
import { GitHubService } from "./service";
|
|
@@ -780,7 +780,7 @@ export const workflowLogsCommand = Command.make(
|
|
|
780
780
|
if (format === "toon" || format === "json") {
|
|
781
781
|
yield* logFormatted(logs, format);
|
|
782
782
|
} else {
|
|
783
|
-
yield*
|
|
783
|
+
yield* logText(logs.log);
|
|
784
784
|
}
|
|
785
785
|
}),
|
|
786
786
|
).pipe(Command.withDescription("Fetch logs for a workflow run (--failed-only by default)"));
|
|
@@ -930,7 +930,7 @@ export const workflowJobLogsCommand = Command.make(
|
|
|
930
930
|
});
|
|
931
931
|
|
|
932
932
|
if ("formatted" in result) {
|
|
933
|
-
yield*
|
|
933
|
+
yield* logText(result.formatted ?? "");
|
|
934
934
|
} else {
|
|
935
935
|
yield* logFormatted(result, format);
|
|
936
936
|
}
|
package/src/k8s-tool/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
import { Command, Flag } from "effect/unstable/cli";
|
|
3
3
|
import { BunRuntime, BunServices } from "@effect/platform-bun";
|
|
4
|
-
import {
|
|
4
|
+
import { Effect, Layer, Option } from "effect";
|
|
5
5
|
|
|
6
6
|
import type { CommandResult } from "./types";
|
|
7
7
|
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
makeSchemaCommand,
|
|
10
10
|
formatOption,
|
|
11
11
|
formatOutput,
|
|
12
|
+
logText,
|
|
12
13
|
renderCauseToStderr,
|
|
13
14
|
VERSION,
|
|
14
15
|
} from "#shared";
|
|
@@ -172,7 +173,7 @@ const executeK8sCommand = (command: string, options: CommonK8sCommandOptions) =>
|
|
|
172
173
|
const runK8sCommand = (command: string, options: CommonK8sCommandOptions) =>
|
|
173
174
|
Effect.gen(function* () {
|
|
174
175
|
const result = yield* executeK8sCommand(command, options);
|
|
175
|
-
yield*
|
|
176
|
+
yield* logText(formatOutput(result, options.format));
|
|
176
177
|
});
|
|
177
178
|
|
|
178
179
|
const logTransformedResult = (
|
|
@@ -183,7 +184,7 @@ const logTransformedResult = (
|
|
|
183
184
|
Effect.gen(function* () {
|
|
184
185
|
const transformedResult =
|
|
185
186
|
typeof result.output === "string" ? { ...result, output: transform(result.output) } : result;
|
|
186
|
-
yield*
|
|
187
|
+
yield* logText(formatOutput(transformedResult, format));
|
|
187
188
|
});
|
|
188
189
|
|
|
189
190
|
const commonFlags = {
|
package/src/logs-tool/index.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
import { Command, Flag } from "effect/unstable/cli";
|
|
18
18
|
import { BunRuntime, BunServices } from "@effect/platform-bun";
|
|
19
|
-
import {
|
|
19
|
+
import { Effect, Layer, Option, Result } from "effect";
|
|
20
20
|
|
|
21
21
|
import type { Environment, LogResult, ReadOptions } from "./types";
|
|
22
22
|
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
makeSchemaCommand,
|
|
25
25
|
formatOption,
|
|
26
26
|
formatOutput,
|
|
27
|
+
logText,
|
|
27
28
|
renderCauseToStderr,
|
|
28
29
|
VERSION,
|
|
29
30
|
} from "#shared";
|
|
@@ -140,7 +141,7 @@ const listCommand = Command.make(
|
|
|
140
141
|
}),
|
|
141
142
|
});
|
|
142
143
|
|
|
143
|
-
yield*
|
|
144
|
+
yield* logText(formatOutput(logResult, format));
|
|
144
145
|
}),
|
|
145
146
|
).pipe(Command.withDescription("List available log files"));
|
|
146
147
|
|
|
@@ -216,7 +217,7 @@ const readCommand = Command.make(
|
|
|
216
217
|
}),
|
|
217
218
|
});
|
|
218
219
|
|
|
219
|
-
yield*
|
|
220
|
+
yield* logText(formatOutput(logResult, format));
|
|
220
221
|
}),
|
|
221
222
|
).pipe(Command.withDescription("Read application logs"));
|
|
222
223
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Effect } from "effect";
|
|
2
2
|
import { Argument, Command, Flag } from "effect/unstable/cli";
|
|
3
3
|
|
|
4
|
-
import { formatOption, formatOutput } from "#shared";
|
|
4
|
+
import { formatOption, formatOutput, logText } from "#shared";
|
|
5
5
|
|
|
6
6
|
import { ObservabilityToolError } from "./errors";
|
|
7
7
|
import {
|
|
@@ -157,7 +157,7 @@ const queryCommand = Command.make(
|
|
|
157
157
|
executionTimeMs: Date.now() - startedAt,
|
|
158
158
|
};
|
|
159
159
|
|
|
160
|
-
yield*
|
|
160
|
+
yield* logText(formatOutput(result, format));
|
|
161
161
|
}).pipe(
|
|
162
162
|
Effect.catchTag("ObservabilityToolError", (error) =>
|
|
163
163
|
Effect.gen(function* () {
|
|
@@ -168,7 +168,7 @@ const queryCommand = Command.make(
|
|
|
168
168
|
hint: "Check LogQL syntax and Grafana/Loki connectivity",
|
|
169
169
|
executionTimeMs: Date.now() - startedAt,
|
|
170
170
|
};
|
|
171
|
-
yield*
|
|
171
|
+
yield* logText(formatOutput(result, format));
|
|
172
172
|
}),
|
|
173
173
|
),
|
|
174
174
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Effect } from "effect";
|
|
2
2
|
import { Argument, Command, Flag } from "effect/unstable/cli";
|
|
3
3
|
|
|
4
|
-
import { formatOption, formatOutput } from "#shared";
|
|
4
|
+
import { formatOption, formatOutput, logText } from "#shared";
|
|
5
5
|
|
|
6
6
|
import { ObservabilityToolError } from "./errors";
|
|
7
7
|
import {
|
|
@@ -105,7 +105,7 @@ const queryCommand = Command.make(
|
|
|
105
105
|
executionTimeMs: Date.now() - startedAt,
|
|
106
106
|
};
|
|
107
107
|
|
|
108
|
-
yield*
|
|
108
|
+
yield* logText(formatOutput(result, format));
|
|
109
109
|
}).pipe(
|
|
110
110
|
Effect.catch((error) =>
|
|
111
111
|
Effect.gen(function* () {
|
|
@@ -116,7 +116,7 @@ const queryCommand = Command.make(
|
|
|
116
116
|
hint: "Check PromQL syntax and Grafana/Prometheus connectivity",
|
|
117
117
|
executionTimeMs: Date.now() - startedAt,
|
|
118
118
|
};
|
|
119
|
-
yield*
|
|
119
|
+
yield* logText(formatOutput(result, format));
|
|
120
120
|
}),
|
|
121
121
|
),
|
|
122
122
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Effect, type Option } from "effect";
|
|
2
2
|
import { Argument, Command, Flag } from "effect/unstable/cli";
|
|
3
3
|
|
|
4
|
-
import { formatOption, formatOutput } from "#shared";
|
|
4
|
+
import { formatOption, formatOutput, logText } from "#shared";
|
|
5
5
|
import type { OutputFormat } from "#shared";
|
|
6
6
|
|
|
7
7
|
import { ObservabilityToolError } from "./errors";
|
|
@@ -396,7 +396,7 @@ function handleTraceGet(
|
|
|
396
396
|
executionTimeMs: Date.now() - startedAt,
|
|
397
397
|
};
|
|
398
398
|
|
|
399
|
-
yield*
|
|
399
|
+
yield* logText(formatOutput(result, format));
|
|
400
400
|
}).pipe(
|
|
401
401
|
Effect.catch((error) =>
|
|
402
402
|
Effect.gen(function* () {
|
|
@@ -407,7 +407,7 @@ function handleTraceGet(
|
|
|
407
407
|
hint: "Accepts 32-char trace ID or 16-char span ID. Check format and Grafana/Tempo connectivity",
|
|
408
408
|
executionTimeMs: Date.now() - startedAt,
|
|
409
409
|
};
|
|
410
|
-
yield*
|
|
410
|
+
yield* logText(formatOutput(result, format));
|
|
411
411
|
}),
|
|
412
412
|
),
|
|
413
413
|
);
|
|
@@ -497,7 +497,7 @@ const logsCommand = Command.make(
|
|
|
497
497
|
executionTimeMs: Date.now() - startedAt,
|
|
498
498
|
};
|
|
499
499
|
|
|
500
|
-
yield*
|
|
500
|
+
yield* logText(formatOutput(result, format));
|
|
501
501
|
}).pipe(
|
|
502
502
|
Effect.catch((error) =>
|
|
503
503
|
Effect.gen(function* () {
|
|
@@ -508,7 +508,7 @@ const logsCommand = Command.make(
|
|
|
508
508
|
hint: "Accepts 32-char trace ID or 16-char span ID. Check format and Grafana/Loki connectivity",
|
|
509
509
|
executionTimeMs: Date.now() - startedAt,
|
|
510
510
|
};
|
|
511
|
-
yield*
|
|
511
|
+
yield* logText(formatOutput(result, format));
|
|
512
512
|
}),
|
|
513
513
|
),
|
|
514
514
|
);
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
|
|
10
10
|
import { Argument, Command, Flag } from "effect/unstable/cli";
|
|
11
11
|
import { BunRuntime, BunServices } from "@effect/platform-bun";
|
|
12
|
-
import {
|
|
12
|
+
import { Effect, Layer, Result } from "effect";
|
|
13
13
|
|
|
14
14
|
import type { MessageSummary, SessionResult, SessionSource } from "./types";
|
|
15
15
|
|
|
16
16
|
import { ALL_SESSION_SOURCES } from "./types";
|
|
17
17
|
|
|
18
|
-
import { makeSchemaCommand, formatOption, formatOutput, VERSION } from "#shared";
|
|
18
|
+
import { makeSchemaCommand, formatOption, formatOutput, logText, VERSION } from "#shared";
|
|
19
19
|
import { AuditServiceLayer, withAudit } from "#shared/audit";
|
|
20
20
|
import { ResolvedPaths, ResolvedPathsLayer } from "./config";
|
|
21
21
|
import { SessionStorageNotFoundError } from "./errors";
|
|
@@ -171,7 +171,7 @@ const listCommand = Command.make(
|
|
|
171
171
|
onSuccess: (okResult) => okResult,
|
|
172
172
|
});
|
|
173
173
|
|
|
174
|
-
yield*
|
|
174
|
+
yield* logText(formatOutput(output, format));
|
|
175
175
|
}),
|
|
176
176
|
).pipe(Command.withDescription("List OpenCode session summaries"));
|
|
177
177
|
|
|
@@ -252,7 +252,7 @@ const searchCommand = Command.make(
|
|
|
252
252
|
onSuccess: (okResult) => okResult,
|
|
253
253
|
});
|
|
254
254
|
|
|
255
|
-
yield*
|
|
255
|
+
yield* logText(formatOutput(output, format));
|
|
256
256
|
}),
|
|
257
257
|
).pipe(Command.withDescription("Search message history"));
|
|
258
258
|
|
|
@@ -309,7 +309,7 @@ const readCommand = Command.make(
|
|
|
309
309
|
},
|
|
310
310
|
});
|
|
311
311
|
|
|
312
|
-
yield*
|
|
312
|
+
yield* logText(formatOutput(output, format));
|
|
313
313
|
}),
|
|
314
314
|
).pipe(Command.withDescription("Read all messages from a session"));
|
|
315
315
|
|
package/src/shared/format.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Flag } from "effect/unstable/cli";
|
|
2
2
|
import { encode as encodeToon } from "@toon-format/toon";
|
|
3
|
-
import {
|
|
3
|
+
import { Effect } from "effect";
|
|
4
4
|
|
|
5
5
|
import type { BaseResult, OutputFormat } from "./types";
|
|
6
6
|
|
|
@@ -23,5 +23,20 @@ export function formatAny<T>(data: T, format: OutputFormat): string {
|
|
|
23
23
|
return JSON.stringify(data, null, 2);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
// `Console.log` drops bytes on a non-blocking pipe: a payload over the pipe buffer arrives
|
|
27
|
+
// truncated at a page boundary, reaching the caller as invalid JSON. Awaiting the write callback
|
|
28
|
+
// makes the stream retry the short write. Never replace this with `Console.log`.
|
|
29
|
+
// EPIPE is the expected end of `<tool> | head`, so only other write failures become defects
|
|
30
|
+
// instead of a silent exit 0 with partial output.
|
|
31
|
+
export const logText = (text: string) =>
|
|
32
|
+
Effect.callback<undefined>((resume) => {
|
|
33
|
+
process.stdout.write(`${text}\n`, (error) =>
|
|
34
|
+
resume(
|
|
35
|
+
error && (error as NodeJS.ErrnoException).code !== "EPIPE"
|
|
36
|
+
? Effect.die(error)
|
|
37
|
+
: Effect.succeed(undefined),
|
|
38
|
+
),
|
|
39
|
+
);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
export const logFormatted = <T>(data: T, format: OutputFormat) => logText(formatAny(data, format));
|
package/src/shared/index.ts
CHANGED
|
@@ -7,7 +7,7 @@ export type {
|
|
|
7
7
|
ToolResult,
|
|
8
8
|
} from "./types";
|
|
9
9
|
|
|
10
|
-
export { formatAny, formatOption, formatOutput, logFormatted } from "./format";
|
|
10
|
+
export { formatAny, formatOption, formatOutput, logFormatted, logText } from "./format";
|
|
11
11
|
|
|
12
12
|
export { expandPath, runCommand } from "./bun";
|
|
13
13
|
|