@difflab/pi 0.2.0 → 0.3.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.
Files changed (94) hide show
  1. package/README.md +28 -4
  2. package/agents/diffpi-orchestrator.md +7 -5
  3. package/agents/diffpi-reviewer.md +36 -0
  4. package/dist/assets.d.ts +2 -0
  5. package/dist/assets.d.ts.map +1 -1
  6. package/dist/commands/index.d.ts +8 -0
  7. package/dist/commands/index.d.ts.map +1 -0
  8. package/dist/commands/mode.d.ts +5 -0
  9. package/dist/commands/mode.d.ts.map +1 -0
  10. package/dist/commands/reload.d.ts +4 -0
  11. package/dist/commands/reload.d.ts.map +1 -0
  12. package/dist/commands/review.d.ts +5 -0
  13. package/dist/commands/review.d.ts.map +1 -0
  14. package/dist/environment.d.ts +41 -0
  15. package/dist/environment.d.ts.map +1 -0
  16. package/dist/extensions/ghx.d.ts +5 -0
  17. package/dist/extensions/ghx.d.ts.map +1 -0
  18. package/dist/extensions/gitx.d.ts +10 -0
  19. package/dist/extensions/gitx.d.ts.map +1 -0
  20. package/dist/extensions/glabx.d.ts +5 -0
  21. package/dist/extensions/glabx.d.ts.map +1 -0
  22. package/dist/extensions/index.js +2732 -189
  23. package/dist/{mise.d.ts → extensions/misex.d.ts} +3 -1
  24. package/dist/extensions/misex.d.ts.map +1 -0
  25. package/dist/{process.d.ts → extensions/processx.d.ts} +3 -1
  26. package/dist/extensions/processx.d.ts.map +1 -0
  27. package/dist/extensions/tuicrx.d.ts +59 -0
  28. package/dist/extensions/tuicrx.d.ts.map +1 -0
  29. package/dist/extensions/zedx.d.ts +16 -0
  30. package/dist/extensions/zedx.d.ts.map +1 -0
  31. package/dist/gates.d.ts +12 -0
  32. package/dist/gates.d.ts.map +1 -0
  33. package/dist/index.d.ts +24 -2
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +1799 -137
  36. package/dist/modes.d.ts +1 -0
  37. package/dist/modes.d.ts.map +1 -1
  38. package/dist/review/github-review-backend.d.ts +5 -0
  39. package/dist/review/github-review-backend.d.ts.map +1 -0
  40. package/dist/review/gitlab-review-backend.d.ts +12 -0
  41. package/dist/review/gitlab-review-backend.d.ts.map +1 -0
  42. package/dist/review/index.d.ts +8 -0
  43. package/dist/review/index.d.ts.map +1 -0
  44. package/dist/review/local-review-backend.d.ts +3 -0
  45. package/dist/review/local-review-backend.d.ts.map +1 -0
  46. package/dist/review/review-backend.d.ts +8 -0
  47. package/dist/review/review-backend.d.ts.map +1 -0
  48. package/dist/review/review-markdown.d.ts +6 -0
  49. package/dist/review/review-markdown.d.ts.map +1 -0
  50. package/dist/review/review-state.d.ts +19 -0
  51. package/dist/review/review-state.d.ts.map +1 -0
  52. package/dist/review/types.d.ts +107 -0
  53. package/dist/review/types.d.ts.map +1 -0
  54. package/dist/setup.d.ts +7 -0
  55. package/dist/setup.d.ts.map +1 -1
  56. package/dist/store.d.ts +15 -0
  57. package/dist/store.d.ts.map +1 -0
  58. package/dist/templates.d.ts +14 -0
  59. package/dist/templates.d.ts.map +1 -0
  60. package/dist/tools/index.d.ts +2 -0
  61. package/dist/tools/index.d.ts.map +1 -1
  62. package/dist/tools/index.js +2722 -299
  63. package/dist/tools/review.d.ts +7 -0
  64. package/dist/tools/review.d.ts.map +1 -0
  65. package/dist/tools/setup.d.ts.map +1 -1
  66. package/dist/tools/templates.d.ts +3 -0
  67. package/dist/tools/templates.d.ts.map +1 -0
  68. package/dist/vcs/forge-backend.d.ts +7 -0
  69. package/dist/vcs/forge-backend.d.ts.map +1 -0
  70. package/dist/vcs/github.d.ts +5 -0
  71. package/dist/vcs/github.d.ts.map +1 -0
  72. package/dist/vcs/gitlab.d.ts +4 -0
  73. package/dist/vcs/gitlab.d.ts.map +1 -0
  74. package/dist/vcs/helpers.d.ts +7 -0
  75. package/dist/vcs/helpers.d.ts.map +1 -0
  76. package/dist/vcs/index.d.ts +6 -0
  77. package/dist/vcs/index.d.ts.map +1 -0
  78. package/dist/vcs/types.d.ts +32 -0
  79. package/dist/vcs/types.d.ts.map +1 -0
  80. package/package.json +3 -2
  81. package/skills/diffpi-setup/SKILL.md +3 -1
  82. package/skills/review/SKILL.md +17 -0
  83. package/skills/review/references/workflows/address.md +11 -0
  84. package/skills/review/references/workflows/auto.md +18 -0
  85. package/skills/review/references/workflows/complete.md +7 -0
  86. package/skills/review/references/workflows/edit.md +7 -0
  87. package/skills/review/references/workflows/help.md +30 -0
  88. package/skills/review/references/workflows/merge.md +6 -0
  89. package/skills/review/references/workflows/new.md +19 -0
  90. package/skills/review/references/workflows/open.md +3 -0
  91. package/skills/review/references/workflows/publish.md +8 -0
  92. package/templates/review/draft-pr.md +25 -0
  93. package/dist/mise.d.ts.map +0 -1
  94. package/dist/process.d.ts.map +0 -1
package/README.md CHANGED
@@ -10,16 +10,40 @@ pi install npm:@difflab/pi
10
10
 
11
11
  Run `/skill:diffpi-setup`. The skill validates or configures the environment and reloads pi when required.
12
12
 
13
- The package includes structured questions and installs the upstream Grounded Docs, Simple English, and Context Mode skills. Setup also installs four package-managed agent files into Pi's global agent directory. The subagent plugin can delegate to `tutor`, `copilot`, `worker`, and `orchestrator`; tutor, copilot, and worker are also available as inline modes.
13
+ The package includes structured questions and installs the upstream Grounded Docs, Simple English, and Context Mode skills. Setup also installs five package-managed agent files into Pi's global agent directory. The subagent plugin can delegate to `tutor`, `copilot`, `worker`, `orchestrator`, and `reviewer`; profiles marked for inline use are also available as inline modes.
14
14
 
15
15
  ```text
16
- /skill:mode
16
+ /mode
17
+ /mode reviewer
18
+ /mode reset
17
19
  /skill:mode --include-skills
18
- /skill:mode tutor
19
20
  /skill:mode spec:planner
20
- /skill:mode clear
21
21
  ```
22
22
 
23
23
  Standard agents come from the same global and trusted-project directories used by `@tintinweb/pi-subagents`. Skill-owned agents are opt-in for listing and use `skill:agent` ids. Inline selection applies the profile prompt, first available preferred model, thinking level, and available tool set. Clearing restores the previous runtime. Override ordered model preferences with `agents.<id>.models` in `~/.difflab/diffpi/config.yaml` or `config.json`, then rerun setup for delegated agents. Inline modes are not a security boundary.
24
24
 
25
+ ## Review
26
+
27
+ `/review` drives code review over GitHub, GitLab, or the local `tuicr` TUI. The repository remote selects the review forge. When requested, `/skill:diffpi-setup` can install GitHub and/or GitLab CLIs and MCP servers.
28
+
29
+ ```text
30
+ /review auto [pr-number|pr-url|branch] [--local] [--bg]
31
+ /review new [--local] [--base branch] [--bg]
32
+ /review edit [pr-number|pr-url|branch] [--local] [--bg]
33
+ /review address [target] [--local] [--bg]
34
+ /review publish [target] [--local] [--comment|--approve|--request-changes|--close] [--bg]
35
+ /review complete [target] [--local|--approve|--reject|--abandon] [--bg]
36
+ /review merge [target] [--bg]
37
+ ```
38
+
39
+ The skill delegates mechanics to `review_context`, `review_new`, `review_edit`, `review_diff`, `review_gates`, `review_submit`, `review_add_comment`, `review_comments`, `review_respond`, `review_publish`, `review_complete`, `review_merge`, and `review_launch_ui`. Inline `auto` and `address` activate Reviewer on Sol; lifecycle verbs activate Orchestrator on Luna. Reviewer classifies address threads and delegates bounded edits to lightweight workers. `--bg` leaves the current chat mode unchanged and launches a tracked Orchestrator child. The generic `diffpi_template` tool loads bundled templates or user overrides. GitHub and GitLab support review creation and publication. Merge is intentionally GitHub-only and remains separate from publish and complete.
40
+
41
+ `--local` selects the `tuicr` working-tree review backend. Without it, targets are a PR/MR number, URL, or branch; no target uses the current branch. Local address flows apply fixes without commits; remote address flows use the upstream `/git commit --no-push` workflow before posting draft responses for changed threads. Local reply overlays preserve remote thread IDs until `publish --local` promotes comments and replies to the forge. Remote comments carry a generated-review notice with the exact provider/model route; local comments use `Agent: <provider/model>` as the author.
42
+
43
+ Local artifacts live in `.diffpi/review/` and use `YYMMDD-<short-head-sha>.md` or `YYMMDD-uncommitted.md` names. `.diffpi` links to `~/.difflab/diffpi/projects/<repository-name>-<identity-hash>/`, so all worktrees for one remote share records while unrelated same-named repositories remain isolated. The launcher opens a repository-scoped mux tab when zellij, tmux, or screen is detected. Without a mux, Zed lazily gets separate exact-argv tasks for full-branch local reviews and remote PR reviews; other environments receive the command to run.
44
+
45
+ Draft PR bodies use the bundled `review/draft-pr.md` template. Override it at `~/.difflab/diffpi/templates/review/draft-pr.md`. Setup installs the upstream Codevoyant `/git` skill for conventional commit and safe rebase workflows. During package development, run `mise watch //packages/pi:dev`; the task builds and installs the package when its sources change. Run `/reload` in Pi after each successful install.
46
+
47
+ The package root exports environment and forge lifecycle adapters, review backends, gate checks, review schemas and artifact helpers, template helpers, store helpers, tuicr helpers, setup operations, and inline-mode control. `@difflab/pi/tools` exports `createReviewTools` and the complete tool catalog.
48
+
25
49
  See the [repository](https://github.com/difflab-io/diffpi) for details.
@@ -3,11 +3,10 @@ name: orchestrator
3
3
  display_name: Orchestrator
4
4
  description: Schedule and route background agents for fast, cost-aware execution.
5
5
  prompt_mode: append
6
- inline: false
7
- model: openai-codex/gpt-5.6-sol
8
- model_fallbacks: meridian/claude-opus-4-8, meridian/claude-opus-5, deepseek/deepseek-v4-pro, qwen-token-plan/qwen3.7-plus
9
- thinking: high
10
- tools: read, grep, find
6
+ inline: true
7
+ model: openai-codex/gpt-5.6-luna
8
+ model_fallbacks: meridian/claude-haiku-4-5, openrouter/qwen/qwen3-coder-flash, deepseek/deepseek-v4-flash
9
+ thinking: medium
11
10
  run_in_background: true
12
11
  allowed_subagents: all
13
12
  ---
@@ -20,4 +19,7 @@ Work only as an execution orchestrator through the pi-subagents tools. Optimize
20
19
  - Use background agents by default, collect every required result, and steer running agents when priorities change.
21
20
  - Retry transient failures, escalate failed work with the returned error context, and route hard problems to a stronger model.
22
21
  - Keep conflicting edits and integration work serialized.
22
+ - For `auto` and `address`, delegate coordination to the `reviewer` agent. The reviewer owns review judgment and thread classification, then delegates non-overlapping bounded edits to lightweight `worker` agents.
23
+ - Do not bypass the reviewer by launching Sol workers directly. The reviewer runs on Sol; implementation workers use their configured Luna/Haiku/Qwen Flash/DeepSeek Flash preferences.
24
+ - For `edit`, `new`, `complete`, and `merge`, keep lifecycle decisions in this orchestration turn and delegate only bounded inspection or implementation work.
23
25
  - Return one concise synthesis with results, failures, cost or latency concerns, and remaining decisions.
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: reviewer
3
+ display_name: Reviewer
4
+ description: Terse, tool-driven code reviewer for the /review skill. Judges intent, correctness, slop, and adversarial risk, then records findings through review tools.
5
+ prompt_mode: replace
6
+ model: openai-codex/gpt-5.6-sol
7
+ model_fallbacks: meridian/claude-opus-4-8, meridian/claude-opus-5, deepseek/deepseek-v4-pro, qwen-token-plan/qwen3.7-plus
8
+ thinking: high
9
+ run_in_background: true
10
+ allowed_subagents: worker
11
+ metadata:
12
+ model-tier: frontier
13
+ ---
14
+
15
+ You review code changes. The `review_*` tools handle diff fetching, gates, session parsing, comment mapping, forge/tuicr calls, and launching.
16
+
17
+ For `auto`, own review judgment and use the review tools required by the workflow. For `address`, act as the review coordinator: classify threads, form non-overlapping bounded implementation tasks, delegate routine edits to `worker`, collect verification and outcomes, then call `review_respond` for every thread. Do not publish, complete, or merge.
18
+
19
+ ## Rules
20
+
21
+ - Call `review_context` first.
22
+ - Prefer `review_*` and forge/tuicr MCP tools. Do not reimplement their mechanics or shell out to `gh`, `glab`, or `tuicr`.
23
+ - Ground every finding in a real file and line from `review_diff`.
24
+ - Be thorough in what you catch and terse in what you write: name the problem, then the ask. No hype or diff restatement.
25
+
26
+ ## Judge
27
+
28
+ - **Intent and correctness:** trace the headline path end to end; a failure of intent is BLOCKING.
29
+ - **Slop:** out-of-scope edits, stray churn, dead/debug leftovers, accidental reverts.
30
+ - **Adversarial:** failure modes, edge cases, negative paths, and security scenarios.
31
+
32
+ ## Output
33
+
34
+ For `auto`, return findings for `review_submit` as `{ file, line, severity, body, reference }`, with severity `BLOCKING`, `CONSIDER`, or `NOTE`. Put un-anchorable BLOCKING issues in `overallIssues`. Return `[]` when clean.
35
+
36
+ For `address`, return one outcome per source thread: `fixed`, `answered`, `resolved`, `deferred`, or `unresolved`; include its exact response text and verification evidence. Questions are answered and stay open. Only trivial accepted requests use `Resolved` and may close; substantive fixes stay open for reviewer confirmation.
package/dist/assets.d.ts CHANGED
@@ -1,2 +1,4 @@
1
+ export declare function resolveBundledAssetDir(name: string, moduleUrl?: string): string;
1
2
  export declare function resolveBundledAgentsDir(moduleUrl?: string): string;
3
+ export declare function resolveBundledTemplatesDir(moduleUrl?: string): string;
2
4
  //# sourceMappingURL=assets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAMA,wBAAgB,uBAAuB,CAAC,SAAS,SAAkB,GAAG,MAAM,CAQ3E"}
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAMA,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAkB,GAAG,MAAM,CAIxF;AAED,wBAAgB,uBAAuB,CAAC,SAAS,SAAkB,GAAG,MAAM,CAE3E;AAED,wBAAgB,0BAA0B,CAAC,SAAS,SAAkB,GAAG,MAAM,CAE9E"}
@@ -0,0 +1,8 @@
1
+ import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
2
+ import type { ModeController } from '../modes';
3
+ /** Register the extension's user-facing commands. */
4
+ export declare function registerCommands(pi: ExtensionAPI, modes: ModeController): void;
5
+ export { registerModeCommand } from './mode';
6
+ export { registerReloadCommand } from './reload';
7
+ export { registerReviewCommand } from './review';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK/C,qDAAqD;AACrD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAI9E;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
2
+ import type { ModeController } from '../modes';
3
+ /** Register the inline agent mode command. */
4
+ export declare function registerModeCommand(pi: ExtensionAPI, modes: ModeController): void;
5
+ //# sourceMappingURL=mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode.d.ts","sourceRoot":"","sources":["../../src/commands/mode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK/C,8CAA8C;AAC9C,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAKjF"}
@@ -0,0 +1,4 @@
1
+ import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
2
+ /** Register the extension reload command. */
3
+ export declare function registerReloadCommand(pi: ExtensionAPI): void;
4
+ //# sourceMappingURL=reload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reload.d.ts","sourceRoot":"","sources":["../../src/commands/reload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,6CAA6C;AAC7C,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAO5D"}
@@ -0,0 +1,5 @@
1
+ import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
2
+ import type { ModeController } from '../modes';
3
+ /** Register the review workflow command. */
4
+ export declare function registerReviewCommand(pi: ExtensionAPI, modes: ModeController): void;
5
+ //# sourceMappingURL=review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,iCAAiC,CAAC;AAGtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK/C,4CAA4C;AAC5C,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAKnF"}
@@ -0,0 +1,41 @@
1
+ export type Ide = 'zed' | 'vscode' | 'cursor' | 'windsurf' | 'jetbrains' | 'unknown';
2
+ export type Mux = 'zellij' | 'tmux' | 'screen' | 'none';
3
+ export type ForgeProvider = 'github' | 'gitlab' | 'none';
4
+ export interface VcsInfo {
5
+ provider: ForgeProvider;
6
+ host: string;
7
+ owner: string;
8
+ repo: string;
9
+ branch: string;
10
+ root: string;
11
+ }
12
+ export interface LaunchOptions {
13
+ cwd: string;
14
+ name?: string;
15
+ env?: NodeJS.ProcessEnv;
16
+ homeDir?: string;
17
+ }
18
+ export interface LaunchResult {
19
+ launched: boolean;
20
+ configured?: boolean;
21
+ via: 'zellij' | 'zellij-run' | 'tmux' | 'screen' | 'zed-task' | 'print';
22
+ command: string;
23
+ taskName?: string;
24
+ instruction?: string;
25
+ reason?: string;
26
+ }
27
+ type Env = NodeJS.ProcessEnv;
28
+ export declare function detectIde(env?: Env): Ide;
29
+ export declare function detectMux(env?: Env): Mux;
30
+ export declare function detectShell(env?: Env): string;
31
+ export declare function detectVcs(cwd: string): Promise<VcsInfo>;
32
+ export declare function parseRemote(remote: string): {
33
+ provider: ForgeProvider;
34
+ host: string;
35
+ owner: string;
36
+ repo: string;
37
+ };
38
+ export declare function openInNewTab(command: string[], opts: LaunchOptions): Promise<LaunchResult>;
39
+ export declare function screenWindowArgs(command: string[], cwd: string, name: string): string[];
40
+ export {};
41
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,GAAG,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AACrF,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AACxD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AAI7B,wBAAgB,SAAS,CAAC,GAAG,GAAE,GAAiB,GAAG,GAAG,CAQrD;AAED,wBAAgB,SAAS,CAAC,GAAG,GAAE,GAAiB,GAAG,GAAG,CAKrD;AAED,wBAAgB,WAAW,CAAC,GAAG,GAAE,GAAiB,GAAG,MAAM,CAE1D;AAID,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK7D;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAclH;AAID,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA0BhG;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvF"}
@@ -0,0 +1,5 @@
1
+ import { type CommandOptions, type CommandResult } from './processx';
2
+ /** Process boundary for the GitHub CLI. Domain code should use this adapter. */
3
+ export declare function gh(args: string[], options?: CommandOptions): Promise<CommandResult>;
4
+ export declare function ghChecked(args: string[], options?: CommandOptions): Promise<CommandResult>;
5
+ //# sourceMappingURL=ghx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ghx.d.ts","sourceRoot":"","sources":["../../src/extensions/ghx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEtF,gFAAgF;AAChF,wBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAEnF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAE1F"}
@@ -0,0 +1,10 @@
1
+ export interface GitRepositoryInfo {
2
+ root: string;
3
+ commonDir: string;
4
+ remote?: string;
5
+ name: string;
6
+ identity: string;
7
+ }
8
+ export declare function gitToplevel(cwd: string): Promise<string>;
9
+ export declare function inspectGitRepository(cwd: string): Promise<GitRepositoryInfo>;
10
+ //# sourceMappingURL=gitx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitx.d.ts","sourceRoot":"","sources":["../../src/extensions/gitx.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI9D;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiBlF"}
@@ -0,0 +1,5 @@
1
+ import { type CommandOptions, type CommandResult } from './processx';
2
+ /** Process boundary for the GitLab CLI. Domain code should use this adapter. */
3
+ export declare function glab(args: string[], options?: CommandOptions): Promise<CommandResult>;
4
+ export declare function glabChecked(args: string[], options?: CommandOptions): Promise<CommandResult>;
5
+ //# sourceMappingURL=glabx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glabx.d.ts","sourceRoot":"","sources":["../../src/extensions/glabx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEtF,gFAAgF;AAChF,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAErF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAE5F"}