@h-rig/harness-plugin 0.0.6-alpha.186

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 (82) hide show
  1. package/README.md +1 -0
  2. package/dist/bin/rig-agent-dispatch.d.ts +2 -0
  3. package/dist/bin/rig-agent-dispatch.js +826 -0
  4. package/dist/src/agent-command.d.ts +3 -0
  5. package/dist/src/agent-command.js +233 -0
  6. package/dist/src/agent-harness/agent-mode.d.ts +1 -0
  7. package/dist/src/agent-harness/agent-mode.js +48 -0
  8. package/dist/src/agent-harness/agent-wrapper.d.ts +60 -0
  9. package/dist/src/agent-harness/agent-wrapper.js +842 -0
  10. package/dist/src/agent-harness/controlled-bash.d.ts +3 -0
  11. package/dist/src/agent-harness/controlled-bash.js +45 -0
  12. package/dist/src/agent-harness/git-ops.d.ts +2 -0
  13. package/dist/src/agent-harness/git-ops.js +27 -0
  14. package/dist/src/agent-harness/repo-ops.d.ts +14 -0
  15. package/dist/src/agent-harness/repo-ops.js +37 -0
  16. package/dist/src/agent-harness/rig-agent-entrypoint.d.ts +1 -0
  17. package/dist/src/agent-harness/rig-agent-entrypoint.js +1362 -0
  18. package/dist/src/agent-harness/rig-agent.d.ts +2 -0
  19. package/dist/src/agent-harness/rig-agent.js +1324 -0
  20. package/dist/src/agent-harness/runtime-snapshot-config.d.ts +2 -0
  21. package/dist/src/agent-harness/runtime-snapshot-config.js +25 -0
  22. package/dist/src/agent-harness/task-data.d.ts +27 -0
  23. package/dist/src/agent-harness/task-data.js +286 -0
  24. package/dist/src/agent-harness/task-ops.d.ts +10 -0
  25. package/dist/src/agent-harness/task-ops.js +352 -0
  26. package/dist/src/index.d.ts +6 -0
  27. package/dist/src/index.js +4525 -0
  28. package/dist/src/model.d.ts +80 -0
  29. package/dist/src/model.js +64 -0
  30. package/dist/src/pi-command.d.ts +3 -0
  31. package/dist/src/pi-command.js +154 -0
  32. package/dist/src/pi-settings-materializer.d.ts +10 -0
  33. package/dist/src/pi-settings-materializer.js +52 -0
  34. package/dist/src/plugin.d.ts +24 -0
  35. package/dist/src/plugin.js +4486 -0
  36. package/dist/src/profile-command.d.ts +3 -0
  37. package/dist/src/profile-command.js +79 -0
  38. package/dist/src/profile-state.d.ts +7 -0
  39. package/dist/src/profile-state.js +39 -0
  40. package/dist/src/rig-task-run-skill.d.ts +8 -0
  41. package/dist/src/rig-task-run-skill.js +39 -0
  42. package/dist/src/runtime-instructions.d.ts +4 -0
  43. package/dist/src/runtime-instructions.js +26 -0
  44. package/dist/src/runtime-secrets.d.ts +6 -0
  45. package/dist/src/runtime-secrets.js +58 -0
  46. package/dist/src/service.d.ts +14 -0
  47. package/dist/src/service.js +33 -0
  48. package/dist/src/session-asset-materializer-service.d.ts +13 -0
  49. package/dist/src/session-asset-materializer-service.js +164 -0
  50. package/dist/src/session-hook-materializer-service.d.ts +34 -0
  51. package/dist/src/session-hook-materializer-service.js +142 -0
  52. package/dist/src/skill-materializer.d.ts +25 -0
  53. package/dist/src/skill-materializer.js +86 -0
  54. package/dist/src/tooling/browser-tool-entrypoint.d.ts +2 -0
  55. package/dist/src/tooling/browser-tool-entrypoint.js +125 -0
  56. package/dist/src/tooling/browser-tools.d.ts +3 -0
  57. package/dist/src/tooling/browser-tools.js +27 -0
  58. package/dist/src/tooling/claude-router-binary.d.ts +3 -0
  59. package/dist/src/tooling/claude-router-binary.js +62 -0
  60. package/dist/src/tooling/claude-router.d.ts +22 -0
  61. package/dist/src/tooling/claude-router.js +524 -0
  62. package/dist/src/tooling/embedded-native-assets.d.ts +7 -0
  63. package/dist/src/tooling/embedded-native-assets.js +6 -0
  64. package/dist/src/tooling/file-tools.d.ts +5 -0
  65. package/dist/src/tooling/file-tools.js +192 -0
  66. package/dist/src/tooling/gateway.d.ts +4 -0
  67. package/dist/src/tooling/gateway.js +400 -0
  68. package/dist/src/tooling/shell-tools.d.ts +5 -0
  69. package/dist/src/tooling/shell-tools.js +185 -0
  70. package/native/darwin-arm64/rig-shell +0 -0
  71. package/native/darwin-arm64/rig-shell.build-manifest.json +4 -0
  72. package/native/darwin-arm64/rig-tools +0 -0
  73. package/native/darwin-arm64/rig-tools.build-manifest.json +4 -0
  74. package/native/darwin-x64/rig-shell +0 -0
  75. package/native/darwin-x64/rig-tools +0 -0
  76. package/native/linux-arm64/rig-shell +0 -0
  77. package/native/linux-arm64/rig-tools +0 -0
  78. package/native/linux-x64/rig-shell +0 -0
  79. package/native/linux-x64/rig-tools +0 -0
  80. package/native/win32-x64/rig-shell.exe +0 -0
  81. package/native/win32-x64/rig-tools.exe +0 -0
  82. package/package.json +101 -0
@@ -0,0 +1,80 @@
1
+ import { Schema } from "effect";
2
+ import type { ProviderKind } from "@rig/contracts";
3
+ export declare const CODEX_REASONING_EFFORT_OPTIONS: readonly ["xhigh", "high", "medium", "low"];
4
+ export type CodexReasoningEffort = (typeof CODEX_REASONING_EFFORT_OPTIONS)[number];
5
+ export declare const CodexModelOptions: Schema.Struct<{
6
+ readonly reasoningEffort: Schema.optional<Schema.Literals<readonly ["xhigh", "high", "medium", "low"]>>;
7
+ readonly fastMode: Schema.optional<Schema.Boolean>;
8
+ }>;
9
+ export type CodexModelOptions = typeof CodexModelOptions.Type;
10
+ export declare const ClaudeModelOptions: Schema.Struct<{}>;
11
+ export type ClaudeModelOptions = typeof ClaudeModelOptions.Type;
12
+ export declare const ProviderModelOptions: Schema.Struct<{
13
+ readonly codex: Schema.optional<Schema.Struct<{
14
+ readonly reasoningEffort: Schema.optional<Schema.Literals<readonly ["xhigh", "high", "medium", "low"]>>;
15
+ readonly fastMode: Schema.optional<Schema.Boolean>;
16
+ }>>;
17
+ readonly claude: Schema.optional<Schema.Struct<{}>>;
18
+ }>;
19
+ export type ProviderModelOptions = typeof ProviderModelOptions.Type;
20
+ export type ModelOption = {
21
+ readonly slug: string;
22
+ readonly name: string;
23
+ };
24
+ export declare const MODEL_OPTIONS_BY_PROVIDER: {
25
+ readonly codex: readonly [{
26
+ readonly slug: "gpt-5.4";
27
+ readonly name: "GPT-5.4";
28
+ }, {
29
+ readonly slug: "gpt-5.3-codex";
30
+ readonly name: "GPT-5.3 Codex";
31
+ }, {
32
+ readonly slug: "gpt-5.3-codex-spark";
33
+ readonly name: "GPT-5.3 Codex Spark";
34
+ }, {
35
+ readonly slug: "gpt-5.2-codex";
36
+ readonly name: "GPT-5.2 Codex";
37
+ }, {
38
+ readonly slug: "gpt-5.2";
39
+ readonly name: "GPT-5.2";
40
+ }];
41
+ readonly claude: readonly [{
42
+ readonly slug: "claude-sonnet-4-6";
43
+ readonly name: "Claude Sonnet 4.6";
44
+ }, {
45
+ readonly slug: "claude-opus-4-1";
46
+ readonly name: "Claude Opus 4.1";
47
+ }, {
48
+ readonly slug: "claude-3-7-sonnet-latest";
49
+ readonly name: "Claude 3.7 Sonnet";
50
+ }];
51
+ };
52
+ export type ModelOptionsByProvider = typeof MODEL_OPTIONS_BY_PROVIDER;
53
+ export type BuiltInModelSlug = ModelOptionsByProvider[ProviderKind][number]["slug"];
54
+ export type ModelSlug = BuiltInModelSlug | (string & {});
55
+ export declare const DEFAULT_MODEL_BY_PROVIDER: {
56
+ readonly codex: "gpt-5.4";
57
+ readonly claude: "claude-sonnet-4-6";
58
+ };
59
+ export declare const MODEL_SLUG_ALIASES_BY_PROVIDER: {
60
+ readonly codex: {
61
+ readonly "5.4": "gpt-5.4";
62
+ readonly "5.3": "gpt-5.3-codex";
63
+ readonly "gpt-5.3": "gpt-5.3-codex";
64
+ readonly "5.3-spark": "gpt-5.3-codex-spark";
65
+ readonly "gpt-5.3-spark": "gpt-5.3-codex-spark";
66
+ };
67
+ readonly claude: {
68
+ readonly sonnet: "claude-sonnet-4-6";
69
+ readonly opus: "claude-opus-4-1";
70
+ readonly "3.7-sonnet": "claude-3-7-sonnet-latest";
71
+ };
72
+ };
73
+ export declare const REASONING_EFFORT_OPTIONS_BY_PROVIDER: {
74
+ readonly codex: readonly ["xhigh", "high", "medium", "low"];
75
+ readonly claude: readonly [];
76
+ };
77
+ export declare const DEFAULT_REASONING_EFFORT_BY_PROVIDER: {
78
+ readonly codex: "high";
79
+ readonly claude: null;
80
+ };
@@ -0,0 +1,64 @@
1
+ // @bun
2
+ // packages/harness-plugin/src/model.ts
3
+ import { Schema } from "effect";
4
+ var CODEX_REASONING_EFFORT_OPTIONS = ["xhigh", "high", "medium", "low"];
5
+ var CodexModelOptions = Schema.Struct({
6
+ reasoningEffort: Schema.optional(Schema.Literals(CODEX_REASONING_EFFORT_OPTIONS)),
7
+ fastMode: Schema.optional(Schema.Boolean)
8
+ });
9
+ var ClaudeModelOptions = Schema.Struct({});
10
+ var ProviderModelOptions = Schema.Struct({
11
+ codex: Schema.optional(CodexModelOptions),
12
+ claude: Schema.optional(ClaudeModelOptions)
13
+ });
14
+ var MODEL_OPTIONS_BY_PROVIDER = {
15
+ codex: [
16
+ { slug: "gpt-5.4", name: "GPT-5.4" },
17
+ { slug: "gpt-5.3-codex", name: "GPT-5.3 Codex" },
18
+ { slug: "gpt-5.3-codex-spark", name: "GPT-5.3 Codex Spark" },
19
+ { slug: "gpt-5.2-codex", name: "GPT-5.2 Codex" },
20
+ { slug: "gpt-5.2", name: "GPT-5.2" }
21
+ ],
22
+ claude: [
23
+ { slug: "claude-sonnet-4-6", name: "Claude Sonnet 4.6" },
24
+ { slug: "claude-opus-4-1", name: "Claude Opus 4.1" },
25
+ { slug: "claude-3-7-sonnet-latest", name: "Claude 3.7 Sonnet" }
26
+ ]
27
+ };
28
+ var DEFAULT_MODEL_BY_PROVIDER = {
29
+ codex: "gpt-5.4",
30
+ claude: "claude-sonnet-4-6"
31
+ };
32
+ var MODEL_SLUG_ALIASES_BY_PROVIDER = {
33
+ codex: {
34
+ "5.4": "gpt-5.4",
35
+ "5.3": "gpt-5.3-codex",
36
+ "gpt-5.3": "gpt-5.3-codex",
37
+ "5.3-spark": "gpt-5.3-codex-spark",
38
+ "gpt-5.3-spark": "gpt-5.3-codex-spark"
39
+ },
40
+ claude: {
41
+ sonnet: "claude-sonnet-4-6",
42
+ opus: "claude-opus-4-1",
43
+ "3.7-sonnet": "claude-3-7-sonnet-latest"
44
+ }
45
+ };
46
+ var REASONING_EFFORT_OPTIONS_BY_PROVIDER = {
47
+ codex: CODEX_REASONING_EFFORT_OPTIONS,
48
+ claude: []
49
+ };
50
+ var DEFAULT_REASONING_EFFORT_BY_PROVIDER = {
51
+ codex: "high",
52
+ claude: null
53
+ };
54
+ export {
55
+ REASONING_EFFORT_OPTIONS_BY_PROVIDER,
56
+ ProviderModelOptions,
57
+ MODEL_SLUG_ALIASES_BY_PROVIDER,
58
+ MODEL_OPTIONS_BY_PROVIDER,
59
+ DEFAULT_REASONING_EFFORT_BY_PROVIDER,
60
+ DEFAULT_MODEL_BY_PROVIDER,
61
+ CodexModelOptions,
62
+ ClaudeModelOptions,
63
+ CODEX_REASONING_EFFORT_OPTIONS
64
+ };
@@ -0,0 +1,3 @@
1
+ import type { RuntimeCliContext } from "@rig/core/config";
2
+ import type { CommandOutcome } from "@rig/contracts";
3
+ export declare function executePi(context: RuntimeCliContext, args: string[]): Promise<CommandOutcome>;
@@ -0,0 +1,154 @@
1
+ // @bun
2
+ // packages/harness-plugin/src/pi-command.ts
3
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
4
+ import { homedir } from "os";
5
+ import { dirname, resolve } from "path";
6
+ import { CliError, requireNoExtraArgs } from "@rig/std-shared/cli-args";
7
+ function settingsPath(root) {
8
+ return resolve(root, ".pi", "settings.json");
9
+ }
10
+ function userSettingsPath() {
11
+ return resolve(homedir(), ".pi", "agent", "settings.json");
12
+ }
13
+ function readJson(path, fallback) {
14
+ if (!existsSync(path))
15
+ return fallback;
16
+ try {
17
+ return JSON.parse(readFileSync(path, "utf-8"));
18
+ } catch {
19
+ return fallback;
20
+ }
21
+ }
22
+ function packageKey(entry) {
23
+ if (typeof entry === "string")
24
+ return entry;
25
+ if (entry && typeof entry === "object" && typeof entry.source === "string") {
26
+ return entry.source;
27
+ }
28
+ return JSON.stringify(entry);
29
+ }
30
+ function writeSettings(path, settings) {
31
+ mkdirSync(dirname(path), { recursive: true });
32
+ writeFileSync(path, `${JSON.stringify(settings, null, 2)}
33
+ `, "utf-8");
34
+ }
35
+ async function searchNpmForPiExtensions(term) {
36
+ const query = encodeURIComponent(term ? `${term} pi extension` : "pi extension");
37
+ const url = `https://registry.npmjs.org/-/v1/search?text=${query}&size=20`;
38
+ const response = await fetch(url);
39
+ if (!response.ok) {
40
+ throw new CliError(`npm registry search failed (${response.status}).`, 2, { hint: "Check network access to registry.npmjs.org, then retry `rig pi search <term>`." });
41
+ }
42
+ const payload = await response.json();
43
+ const results = [];
44
+ for (const entry of payload.objects ?? []) {
45
+ const pkg = entry.package;
46
+ if (!pkg?.name)
47
+ continue;
48
+ const keywords = (pkg.keywords ?? []).map((k) => k.toLowerCase());
49
+ const piLike = pkg.name.startsWith("pi-") || pkg.name.includes("-pi") || keywords.includes("pi") || keywords.includes("pi-extension") || (pkg.description ?? "").toLowerCase().includes("pi extension") || (pkg.description ?? "").toLowerCase().includes("pi coding agent");
50
+ if (!piLike)
51
+ continue;
52
+ results.push({ name: pkg.name, version: pkg.version ?? "", description: pkg.description ?? "" });
53
+ }
54
+ return results;
55
+ }
56
+ async function executePi(context, args) {
57
+ const [command = "list", ...rest] = args;
58
+ const projectSettingsPath = settingsPath(context.projectRoot);
59
+ const managedRecordPath = resolve(context.projectRoot, ".rig", "state", "pi-managed-packages.json");
60
+ switch (command) {
61
+ case "list": {
62
+ requireNoExtraArgs(rest, "rig pi list");
63
+ const project = readJson(projectSettingsPath, {});
64
+ const managed = new Set(readJson(managedRecordPath, []));
65
+ const user = readJson(userSettingsPath(), {});
66
+ const projectPackages = (Array.isArray(project.packages) ? project.packages : []).map((entry) => ({
67
+ source: packageKey(entry),
68
+ managedByRigConfig: managed.has(packageKey(entry))
69
+ }));
70
+ const userPackages = (Array.isArray(user.packages) ? user.packages : []).map(packageKey);
71
+ if (context.outputMode === "text") {
72
+ console.log("Project Pi packages (.pi/settings.json):");
73
+ if (projectPackages.length === 0)
74
+ console.log(" (none)");
75
+ for (const pkg of projectPackages) {
76
+ console.log(` ${pkg.source}${pkg.managedByRigConfig ? " [from rig.config runtime.pi.packages]" : ""}`);
77
+ }
78
+ console.log("User Pi packages (~/.pi/agent/settings.json):");
79
+ if (userPackages.length === 0)
80
+ console.log(" (none)");
81
+ for (const pkg of userPackages)
82
+ console.log(` ${pkg}`);
83
+ console.log("Add more: `rig pi add <npm-package>` \xB7 discover: `rig pi search <term>`");
84
+ }
85
+ return { ok: true, group: "pi", command, details: { projectPackages, userPackages } };
86
+ }
87
+ case "add": {
88
+ const [source, ...extra] = rest;
89
+ requireNoExtraArgs(extra, "rig pi add <package-source>");
90
+ if (!source) {
91
+ throw new CliError("Usage: rig pi add <package-source> (npm name, name@version, or git URL)", 2);
92
+ }
93
+ const settings = readJson(projectSettingsPath, {});
94
+ const packages = Array.isArray(settings.packages) ? settings.packages : [];
95
+ if (packages.some((entry) => packageKey(entry) === source)) {
96
+ throw new CliError(`"${source}" is already in ${projectSettingsPath}.`, 2, { hint: "Run `rig pi list` to see installed extensions." });
97
+ }
98
+ writeSettings(projectSettingsPath, { ...settings, packages: [...packages, source] });
99
+ if (context.outputMode === "text") {
100
+ console.log(`Added ${source} to ${projectSettingsPath}.`);
101
+ console.log("Pi installs missing packages automatically at the next session start (local and worker).");
102
+ }
103
+ return { ok: true, group: "pi", command, details: { source, settingsPath: projectSettingsPath } };
104
+ }
105
+ case "remove": {
106
+ const [source, ...extra] = rest;
107
+ requireNoExtraArgs(extra, "rig pi remove <package-source>");
108
+ if (!source) {
109
+ throw new CliError("Usage: rig pi remove <package-source>", 2);
110
+ }
111
+ const managed = new Set(readJson(managedRecordPath, []));
112
+ if (managed.has(source)) {
113
+ throw new CliError(`"${source}" is managed by rig.config.ts (runtime.pi.packages); remove it there instead.`, 2);
114
+ }
115
+ const settings = readJson(projectSettingsPath, {});
116
+ const packages = Array.isArray(settings.packages) ? settings.packages : [];
117
+ const next = packages.filter((entry) => packageKey(entry) !== source);
118
+ if (next.length === packages.length) {
119
+ throw new CliError(`"${source}" is not in ${projectSettingsPath}.`, 2, { hint: "Run `rig pi list` to see what is installed, then `rig pi remove <source>` with an exact entry." });
120
+ }
121
+ const nextSettings = { ...settings };
122
+ if (next.length > 0)
123
+ nextSettings.packages = next;
124
+ else
125
+ delete nextSettings.packages;
126
+ writeSettings(projectSettingsPath, nextSettings);
127
+ if (context.outputMode === "text") {
128
+ console.log(`Removed ${source} from ${projectSettingsPath}.`);
129
+ }
130
+ return { ok: true, group: "pi", command, details: { source } };
131
+ }
132
+ case "search": {
133
+ const term = rest.join(" ").trim();
134
+ const results = await searchNpmForPiExtensions(term);
135
+ if (context.outputMode === "text") {
136
+ if (results.length === 0) {
137
+ console.log(`No Pi extension packages found on npm${term ? ` for "${term}"` : ""}.`);
138
+ } else {
139
+ console.log(`Pi extension packages on npm${term ? ` matching "${term}"` : ""}:`);
140
+ for (const pkg of results) {
141
+ console.log(` ${pkg.name}@${pkg.version} ${pkg.description.slice(0, 80)}`);
142
+ }
143
+ console.log("Install one: `rig pi add <name>`");
144
+ }
145
+ }
146
+ return { ok: true, group: "pi", command, details: { term, results } };
147
+ }
148
+ default:
149
+ throw new CliError(`Unknown pi command: ${command}. Use list|add|remove|search.`, 1, { hint: "Run `rig pi --help` for usage." });
150
+ }
151
+ }
152
+ export {
153
+ executePi
154
+ };
@@ -0,0 +1,10 @@
1
+ export interface MaterializePiPackagesResult {
2
+ settingsPath: string;
3
+ packages: string[];
4
+ }
5
+ /**
6
+ * Merge Rig-managed Pi extension packages into the workspace's
7
+ * `.pi/settings.json`. Idempotent: previously Rig-managed entries that are no
8
+ * longer declared are removed; operator-authored entries are never touched.
9
+ */
10
+ export declare function materializePiPackages(projectRoot: string, declaredPackages: readonly string[]): MaterializePiPackagesResult;
@@ -0,0 +1,52 @@
1
+ // @bun
2
+ // packages/harness-plugin/src/pi-settings-materializer.ts
3
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
4
+ import { dirname, resolve } from "path";
5
+ var SETTINGS_RELATIVE_PATH = ".pi/settings.json";
6
+ var MANAGED_RECORD_RELATIVE_PATH = ".rig/state/pi-managed-packages.json";
7
+ function readJson(path, fallback) {
8
+ if (!existsSync(path))
9
+ return fallback;
10
+ try {
11
+ return JSON.parse(readFileSync(path, "utf-8"));
12
+ } catch {
13
+ return fallback;
14
+ }
15
+ }
16
+ function packageKey(entry) {
17
+ if (typeof entry === "string")
18
+ return entry;
19
+ if (entry && typeof entry === "object" && typeof entry.source === "string") {
20
+ return entry.source;
21
+ }
22
+ return JSON.stringify(entry);
23
+ }
24
+ function materializePiPackages(projectRoot, declaredPackages) {
25
+ const settingsPath = resolve(projectRoot, SETTINGS_RELATIVE_PATH);
26
+ const managedRecordPath = resolve(projectRoot, MANAGED_RECORD_RELATIVE_PATH);
27
+ const settings = readJson(settingsPath, {});
28
+ const previouslyManaged = new Set(readJson(managedRecordPath, []));
29
+ const existing = Array.isArray(settings.packages) ? settings.packages : [];
30
+ const operatorEntries = existing.filter((entry) => !previouslyManaged.has(packageKey(entry)));
31
+ const operatorKeys = new Set(operatorEntries.map(packageKey));
32
+ const managedToAdd = declaredPackages.filter((pkg) => !operatorKeys.has(pkg));
33
+ const nextPackages = [...operatorEntries, ...managedToAdd];
34
+ if (nextPackages.length > 0 || existsSync(settingsPath)) {
35
+ const nextSettings = { ...settings };
36
+ if (nextPackages.length > 0) {
37
+ nextSettings.packages = nextPackages;
38
+ } else {
39
+ delete nextSettings.packages;
40
+ }
41
+ mkdirSync(dirname(settingsPath), { recursive: true });
42
+ writeFileSync(settingsPath, `${JSON.stringify(nextSettings, null, 2)}
43
+ `, "utf-8");
44
+ }
45
+ mkdirSync(dirname(managedRecordPath), { recursive: true });
46
+ writeFileSync(managedRecordPath, `${JSON.stringify(managedToAdd, null, 2)}
47
+ `, "utf-8");
48
+ return { settingsPath, packages: managedToAdd };
49
+ }
50
+ export {
51
+ materializePiPackages
52
+ };
@@ -0,0 +1,24 @@
1
+ import { type ProviderInteractionMode, type ProviderKind, type RuntimeMode } from "@rig/contracts";
2
+ export * from "./model";
3
+ export declare const PROVIDER_PLUGIN_NAME = "@rig/harness-plugin";
4
+ /**
5
+ * Provider-default POLICY — the harness kind selected when config names none.
6
+ * Evicted from @rig/contracts (doc §5: contracts holds the ProviderKind union
7
+ * TYPE; this plugin owns the default-VALUE policy as the harness owner).
8
+ */
9
+ export declare const DEFAULT_PROVIDER_KIND: ProviderKind;
10
+ /**
11
+ * Runtime-mode default POLICY — the runtime mode selected when config names none.
12
+ * Evicted from @rig/contracts (arch Law 9: contracts holds the RuntimeMode union
13
+ * TYPE; this plugin owns the default-VALUE policy as the harness owner).
14
+ */
15
+ export declare const DEFAULT_RUNTIME_MODE: RuntimeMode;
16
+ /**
17
+ * Provider-interaction-mode default POLICY — the interaction mode when config
18
+ * names none. Evicted from @rig/contracts (the ProviderInteractionMode union TYPE
19
+ * stays in contracts; this plugin owns the default-VALUE policy).
20
+ */
21
+ export declare const DEFAULT_PROVIDER_INTERACTION_MODE: ProviderInteractionMode;
22
+ export declare const providerPlugin: import("@rig/core/config").RigPlugin;
23
+ export declare function createProviderPlugin(): import("@rig/core/config").RigPlugin;
24
+ export default providerPlugin;