@alpacakit/agents 0.1.0-beta.30 → 0.1.0-beta.35

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 CHANGED
@@ -253,19 +253,24 @@ Family-specific conventions (a fixed path env var + a keyring service)
253
253
  belong in the consumer's own convention module, not in this package — they
254
254
  are a plain instance of the same preset shape.
255
255
 
256
- ## Host plane: skills & MCP (operator)
256
+ ## Host plane: execution availability, skills & MCP (operator)
257
257
 
258
- Agents expose optional `agent.skills` / `agent.mcp` / `agent.doctor`
259
- facets for provisioning and health checks. This surface is still
260
- aspirational: the first slice covers Claude local-dir skills and
261
- Claude / Codex stdio MCP registration; broad inventory and availability
262
- listing are in progress.
258
+ Agents expose an optional `agent.availability` facet for ambient execution
259
+ readiness. CLI definitions receive a PATH-only default; Claude and Codex also
260
+ run their vendor authentication-status commands with the bound `HostContext`
261
+ environment unchanged. The result distinguishes runnable, unavailable, and
262
+ indeterminate states and includes definition-owned remediation where relevant.
263
+
264
+ The separate optional `agent.skills` / `agent.mcp` / `agent.doctor` facets
265
+ cover provisioning and health checks. Claude local-dir skills and Claude /
266
+ Codex stdio MCP registration are implemented; broad inventory listing for
267
+ installed skills and MCP servers remains in progress.
263
268
 
264
269
  ## Package entries
265
270
 
266
271
  | Entry | Contents |
267
272
  |---|---|
268
- | `.` | runtime, fleet, structured output, auth materials, guards, errors, and every extension point |
273
+ | `.` | runtime, ambient execution availability, fleet, structured output, auth materials, guards, errors, and every extension point |
269
274
  | `/config` | machine-local profile / agent-settings / fleet-state storage |
270
275
  | `/config/xdg` | XDG Base Directory config-root preset (general apps) |
271
276
  | `/config/extension` | custom agent-config kinds (`defineAgentConfigType`) |
@@ -276,9 +281,9 @@ listing are in progress.
276
281
  ## Status
277
282
 
278
283
  Implemented: kernel (runtime, run handle, guards, classification), CLI
279
- blueprint with built-in `claude()` / `codex()`, structured output with
280
- repair, fleet with cooldown / auth-mark stores, auth materials and secret
281
- resolvers, `openaiCompatible` (engine port; the built-in HTTP
284
+ blueprint with built-in `claude()` / `codex()`, ambient execution availability,
285
+ structured output with repair, fleet with cooldown / auth-mark stores, auth
286
+ materials and secret resolvers, `openaiCompatible` (engine port; the built-in HTTP
282
287
  chat-completions engine is the dependency-free default), and the first
283
288
  host-plane skill / MCP implementations (Claude local-dir skills plus
284
289
  Claude / Codex stdio MCP registration). Not yet implemented: the
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA6CH,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAC7D,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAwJ1D;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,cAAc,CA0CvD;AAoSD,wBAAgB,MAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,CAyDlD"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA8CH,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAC7D,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAyJ1D;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,cAAc,CA0CvD;AAoSD,wBAAgB,MAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,CA0ElD"}
@@ -15,6 +15,7 @@ import { isErrnoCode } from "../core/fs.js";
15
15
  import { readBoolean, readJsonRecord, readNumber, readRecord, readString, readUnknownRecord, } from "../core/json.js";
16
16
  import { AGENT_EVENT_TYPE } from "../core/run.js";
17
17
  import { TEXT_ENCODING } from "../core/values.js";
18
+ import { cliAvailability } from "../host/availability.js";
18
19
  import { INSTALL_STATUS, MCP_TRANSPORT, SKILL_SOURCE_KIND, } from "../host/capabilities.js";
19
20
  import { withStagedGithubDirectory, } from "../host/github-dir.js";
20
21
  import { listMcpServersViaCli } from "../host/mcp-list.js";
@@ -42,6 +43,7 @@ const CLAUDE = {
42
43
  },
43
44
  auth: {
44
45
  statusArgs: ["auth", "status", "--json"],
46
+ loginArgs: ["auth", "login", "--claudeai"],
45
47
  },
46
48
  mcp: {
47
49
  addJson: "add-json",
@@ -455,6 +457,23 @@ export function claude() {
455
457
  classify: [structuredQuotaMatcher()],
456
458
  // F6: Claude CLI can report a structured quota rejection on exit 0.
457
459
  classifyOnSuccess: [structuredQuotaMatcher()],
460
+ availability: cliAvailability({
461
+ command: CLAUDE.command,
462
+ commandMissingRemediation: {
463
+ detail: "Install Claude Code and ensure `claude` is on PATH.",
464
+ command: null,
465
+ },
466
+ authentication: {
467
+ args: CLAUDE.auth.statusArgs,
468
+ remediation: {
469
+ detail: "Sign in to Claude Code.",
470
+ command: {
471
+ executable: CLAUDE.command,
472
+ args: CLAUDE.auth.loginArgs,
473
+ },
474
+ },
475
+ },
476
+ }),
458
477
  auth: {
459
478
  [AUTH_MATERIAL_KIND.homeDir]: homeDirHandler,
460
479
  [AUTH_MATERIAL_KIND.apiKey]: envVarAuthMaterial({
@@ -1 +1 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/agents/codex.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwCH,OAAO,EAAE,KAAK,cAAc,EAAqB,MAAM,uBAAuB,CAAC;AAG/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAC/C,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AA6GtD;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,CAepD;AAiND,wBAAgB,KAAK,IAAI,eAAe,CAAC,OAAO,CAAC,CAoEhD"}
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/agents/codex.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyCH,OAAO,EAAE,KAAK,cAAc,EAAqB,MAAM,uBAAuB,CAAC;AAG/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAC/C,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AA6GtD;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,CAepD;AAiND,wBAAgB,KAAK,IAAI,eAAe,CAAC,OAAO,CAAC,CAqFhD"}
@@ -14,6 +14,7 @@ import { CODEX_APP_SERVER_METHOD } from "../codex/protocol.js";
14
14
  import { AGENT_ERROR_CODE, AgentError, AUTH_FAILURE_REASON, } from "../core/error.js";
15
15
  import { readJsonRecord, readRecord, readString } from "../core/json.js";
16
16
  import { AGENT_EVENT_TYPE } from "../core/run.js";
17
+ import { cliAvailability } from "../host/availability.js";
17
18
  import { INSTALL_STATUS, MCP_SCOPE, MCP_TRANSPORT, SKILL_SOURCE_KIND, } from "../host/capabilities.js";
18
19
  import { runHostCommand } from "../host/run-command.js";
19
20
  import { parseCooldownHint } from "../kernel/classify.js";
@@ -315,6 +316,23 @@ export function codex() {
315
316
  readString(record, CODEX.json.field.type) ===
316
317
  CODEX.json.event.turnCompleted);
317
318
  },
319
+ availability: cliAvailability({
320
+ command: CODEX.command,
321
+ commandMissingRemediation: {
322
+ detail: "Install Codex and ensure `codex` is on PATH.",
323
+ command: null,
324
+ },
325
+ authentication: {
326
+ args: CODEX.auth.statusArgs,
327
+ remediation: {
328
+ detail: "Sign in to Codex.",
329
+ command: {
330
+ executable: CODEX.command,
331
+ args: CODEX.auth.oauthLoginArgs,
332
+ },
333
+ },
334
+ },
335
+ }),
318
336
  auth: {
319
337
  [AUTH_MATERIAL_KIND.homeDir]: envVarAuthMaterial({
320
338
  set: (material) => ({ [CODEX_HOME_ENV_VAR]: material.path }),
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Agent execution availability (ambient, not profile-bound). Definitions own
3
+ * vendor-specific probes and remediation; the runtime only binds HostContext.
4
+ */
5
+ import type { HostContext } from "./context.js";
6
+ export declare const AGENT_AVAILABILITY_STATUS: {
7
+ readonly runnable: "runnable";
8
+ readonly unavailable: "unavailable";
9
+ readonly indeterminate: "indeterminate";
10
+ };
11
+ export declare const AGENT_UNAVAILABLE_REASON: {
12
+ readonly commandMissing: "command_missing";
13
+ readonly authenticationRequired: "authentication_required";
14
+ };
15
+ export declare const AGENT_INDETERMINATE_REASON: {
16
+ readonly probeTimeout: "probe_timeout";
17
+ readonly probeFault: "probe_fault";
18
+ };
19
+ export type AgentRemediation = {
20
+ readonly detail: string;
21
+ readonly command: {
22
+ readonly executable: string;
23
+ readonly args: readonly string[];
24
+ } | null;
25
+ };
26
+ export type AgentAvailability = {
27
+ readonly status: typeof AGENT_AVAILABILITY_STATUS.runnable;
28
+ } | {
29
+ readonly status: typeof AGENT_AVAILABILITY_STATUS.unavailable;
30
+ readonly reason: typeof AGENT_UNAVAILABLE_REASON.commandMissing | typeof AGENT_UNAVAILABLE_REASON.authenticationRequired;
31
+ readonly remediation: AgentRemediation | null;
32
+ } | {
33
+ readonly status: typeof AGENT_AVAILABILITY_STATUS.indeterminate;
34
+ readonly reason: typeof AGENT_INDETERMINATE_REASON.probeTimeout | typeof AGENT_INDETERMINATE_REASON.probeFault;
35
+ readonly detail: string;
36
+ };
37
+ export interface AgentAvailabilityCapability {
38
+ probe(ctx: HostContext): Promise<AgentAvailability>;
39
+ }
40
+ /** The single bounded default for CLI availability subprocesses. */
41
+ export declare const DEFAULT_AGENT_AVAILABILITY_PROBE_TIMEOUT_MS = 30000;
42
+ export type CliAvailabilityOptions = {
43
+ readonly command: string;
44
+ readonly commandMissingRemediation: AgentRemediation | null;
45
+ readonly authentication?: {
46
+ readonly args: readonly string[];
47
+ readonly remediation: AgentRemediation | null;
48
+ };
49
+ readonly timeoutMs?: number;
50
+ };
51
+ /**
52
+ * Build a CLI definition-side availability capability. With no
53
+ * authentication command this is the generic PATH-only default.
54
+ */
55
+ export declare function cliAvailability(options: CliAvailabilityOptions): AgentAvailabilityCapability;
56
+ //# sourceMappingURL=availability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"availability.d.ts","sourceRoot":"","sources":["../../src/host/availability.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;CAG3B,CAAC;AAEX,eAAO,MAAM,0BAA0B;;;CAG7B,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;KAClC,GAAG,IAAI,CAAC;CACV,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,yBAAyB,CAAC,QAAQ,CAAA;CAAE,GAC9D;IACE,QAAQ,CAAC,MAAM,EAAE,OAAO,yBAAyB,CAAC,WAAW,CAAC;IAC9D,QAAQ,CAAC,MAAM,EACX,OAAO,wBAAwB,CAAC,cAAc,GAC9C,OAAO,wBAAwB,CAAC,sBAAsB,CAAC;IAC3D,QAAQ,CAAC,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC/C,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,OAAO,yBAAyB,CAAC,aAAa,CAAC;IAChE,QAAQ,CAAC,MAAM,EACX,OAAO,0BAA0B,CAAC,YAAY,GAC9C,OAAO,0BAA0B,CAAC,UAAU,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,MAAM,WAAW,2BAA2B;IAC1C,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACrD;AAED,oEAAoE;AACpE,eAAO,MAAM,2CAA2C,QAAS,CAAC;AAElE,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,yBAAyB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC5D,QAAQ,CAAC,cAAc,CAAC,EAAE;QACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;QACjC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAC;KAC/C,CAAC;IACF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAiHF;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,GAC9B,2BAA2B,CAqE7B"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Agent execution availability (ambient, not profile-bound). Definitions own
3
+ * vendor-specific probes and remediation; the runtime only binds HostContext.
4
+ */
5
+ import { PROCESS_SIGNAL } from "../core/values.js";
6
+ export const AGENT_AVAILABILITY_STATUS = {
7
+ runnable: "runnable",
8
+ unavailable: "unavailable",
9
+ indeterminate: "indeterminate",
10
+ };
11
+ export const AGENT_UNAVAILABLE_REASON = {
12
+ commandMissing: "command_missing",
13
+ authenticationRequired: "authentication_required",
14
+ };
15
+ export const AGENT_INDETERMINATE_REASON = {
16
+ probeTimeout: "probe_timeout",
17
+ probeFault: "probe_fault",
18
+ };
19
+ /** The single bounded default for CLI availability subprocesses. */
20
+ export const DEFAULT_AGENT_AVAILABILITY_PROBE_TIMEOUT_MS = 30_000;
21
+ const AVAILABILITY_DETAIL = {
22
+ timeout: "Agent availability probe timed out.",
23
+ commandResolutionFault: "Agent availability probe failed during command resolution.",
24
+ spawnFault: "Agent availability probe failed while starting the command.",
25
+ processFault: "Agent availability probe process failed.",
26
+ cleanupFault: "Agent availability probe process cleanup failed.",
27
+ timerFault: "Agent availability probe timer failed.",
28
+ };
29
+ const PROBE_OBSERVATION_KIND = {
30
+ exit: "exit",
31
+ timeout: "timeout",
32
+ fault: "fault",
33
+ };
34
+ function probeFault(detail) {
35
+ return {
36
+ status: AGENT_AVAILABILITY_STATUS.indeterminate,
37
+ reason: AGENT_INDETERMINATE_REASON.probeFault,
38
+ detail,
39
+ };
40
+ }
41
+ async function observeProcess(child) {
42
+ const drain = (async () => {
43
+ for await (const _chunk of child.chunks) {
44
+ // Availability is exit-code-only. Never retain CLI output.
45
+ }
46
+ })();
47
+ try {
48
+ const [, exit] = await Promise.all([drain, child.exit]);
49
+ return { kind: PROBE_OBSERVATION_KIND.exit, code: exit.code };
50
+ }
51
+ catch {
52
+ return { kind: PROBE_OBSERVATION_KIND.fault };
53
+ }
54
+ }
55
+ async function stopProcess(child) {
56
+ try {
57
+ child.kill(PROCESS_SIGNAL.sigkill);
58
+ await child.awaitTerminationEscalation();
59
+ return true;
60
+ }
61
+ catch {
62
+ return false;
63
+ }
64
+ }
65
+ async function resolveAuthenticationObservation(observation, child, cancelTimeout, remediation) {
66
+ let timeoutCleanupFailed = false;
67
+ try {
68
+ cancelTimeout();
69
+ }
70
+ catch {
71
+ timeoutCleanupFailed = true;
72
+ }
73
+ if (observation.kind === PROBE_OBSERVATION_KIND.timeout) {
74
+ try {
75
+ await child.awaitTerminationEscalation();
76
+ }
77
+ catch {
78
+ return probeFault(AVAILABILITY_DETAIL.cleanupFault);
79
+ }
80
+ if (timeoutCleanupFailed) {
81
+ return probeFault(AVAILABILITY_DETAIL.cleanupFault);
82
+ }
83
+ return {
84
+ status: AGENT_AVAILABILITY_STATUS.indeterminate,
85
+ reason: AGENT_INDETERMINATE_REASON.probeTimeout,
86
+ detail: AVAILABILITY_DETAIL.timeout,
87
+ };
88
+ }
89
+ if (observation.kind === PROBE_OBSERVATION_KIND.fault) {
90
+ const stopped = await stopProcess(child);
91
+ return probeFault(stopped && !timeoutCleanupFailed
92
+ ? AVAILABILITY_DETAIL.processFault
93
+ : AVAILABILITY_DETAIL.cleanupFault);
94
+ }
95
+ if (timeoutCleanupFailed) {
96
+ return probeFault(AVAILABILITY_DETAIL.cleanupFault);
97
+ }
98
+ if (observation.code === 0) {
99
+ return { status: AGENT_AVAILABILITY_STATUS.runnable };
100
+ }
101
+ if (observation.code === null) {
102
+ return probeFault(AVAILABILITY_DETAIL.processFault);
103
+ }
104
+ return {
105
+ status: AGENT_AVAILABILITY_STATUS.unavailable,
106
+ reason: AGENT_UNAVAILABLE_REASON.authenticationRequired,
107
+ remediation,
108
+ };
109
+ }
110
+ /**
111
+ * Build a CLI definition-side availability capability. With no
112
+ * authentication command this is the generic PATH-only default.
113
+ */
114
+ export function cliAvailability(options) {
115
+ return {
116
+ probe: async (ctx) => {
117
+ let command;
118
+ try {
119
+ command = await ctx.exec.which(options.command, ctx.env);
120
+ }
121
+ catch {
122
+ return probeFault(AVAILABILITY_DETAIL.commandResolutionFault);
123
+ }
124
+ if (command === null) {
125
+ return {
126
+ status: AGENT_AVAILABILITY_STATUS.unavailable,
127
+ reason: AGENT_UNAVAILABLE_REASON.commandMissing,
128
+ remediation: options.commandMissingRemediation,
129
+ };
130
+ }
131
+ if (options.authentication === undefined) {
132
+ return { status: AGENT_AVAILABILITY_STATUS.runnable };
133
+ }
134
+ let child;
135
+ try {
136
+ child = ctx.exec.spawn({
137
+ command,
138
+ args: [...options.authentication.args],
139
+ cwd: ctx.location.homeDir,
140
+ env: ctx.env,
141
+ stdin: null,
142
+ });
143
+ }
144
+ catch {
145
+ return probeFault(AVAILABILITY_DETAIL.spawnFault);
146
+ }
147
+ const processObservation = observeProcess(child);
148
+ let settleTimeout = () => { };
149
+ const timeoutObservation = new Promise((resolve) => {
150
+ settleTimeout = resolve;
151
+ });
152
+ let cancelTimeout;
153
+ try {
154
+ cancelTimeout = ctx.clock.setTimeout(() => {
155
+ try {
156
+ child.kill(PROCESS_SIGNAL.sigkill);
157
+ settleTimeout({ kind: PROBE_OBSERVATION_KIND.timeout });
158
+ }
159
+ catch {
160
+ settleTimeout({ kind: PROBE_OBSERVATION_KIND.fault });
161
+ }
162
+ }, options.timeoutMs ?? DEFAULT_AGENT_AVAILABILITY_PROBE_TIMEOUT_MS);
163
+ }
164
+ catch {
165
+ const stopped = await stopProcess(child);
166
+ return probeFault(stopped
167
+ ? AVAILABILITY_DETAIL.timerFault
168
+ : AVAILABILITY_DETAIL.cleanupFault);
169
+ }
170
+ const observation = await Promise.race([
171
+ processObservation,
172
+ timeoutObservation,
173
+ ]);
174
+ return resolveAuthenticationObservation(observation, child, cancelTimeout, options.authentication.remediation);
175
+ },
176
+ };
177
+ }
@@ -0,0 +1,4 @@
1
+ import { type DoctorCapability } from "./capabilities.js";
2
+ /** Default CLI Doctor: command presence only, with no auth inference. */
3
+ export declare function cliCommandDoctor(commandName: string): DoctorCapability;
4
+ //# sourceMappingURL=command-doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-doctor.d.ts","sourceRoot":"","sources":["../../src/host/command-doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAmBtE"}
@@ -0,0 +1,21 @@
1
+ import { DOCTOR_CHECK_STATUS } from "./capabilities.js";
2
+ /** Default CLI Doctor: command presence only, with no auth inference. */
3
+ export function cliCommandDoctor(commandName) {
4
+ return {
5
+ probe: async (ctx) => {
6
+ const command = await ctx.exec.which(commandName, ctx.env);
7
+ return {
8
+ available: command !== null,
9
+ checks: [
10
+ {
11
+ id: "command-on-path",
12
+ status: command === null
13
+ ? DOCTOR_CHECK_STATUS.fail
14
+ : DOCTOR_CHECK_STATUS.pass,
15
+ detail: command,
16
+ },
17
+ ],
18
+ };
19
+ },
20
+ };
21
+ }
package/dist/index.d.ts CHANGED
@@ -20,12 +20,12 @@ export type { ApiKeyProfileOptions, AuthCapability, AuthMaterial, AuthMaterialDe
20
20
  export { AUTH_MATERIAL_KIND, AUTH_STATUS, createApiKeyProfile, createHomeDirProfile, envVarAuthMaterial, } from "./auth/material.js";
21
21
  export { fileProfileStore, type ProfileStore } from "./auth/profile-store.js";
22
22
  export { envResolver, requireSecret } from "./auth/secrets.js";
23
+ export type { ChildProcessAbsenceProof, ChildProcessCompletion, ChildProcessIdentity, ChildProcessLifecycle, ChildProcessTerminationEvidence, ChildProcessTerminationPhase, ChildProcessTerminationResult, ChildProcessUnkillableReason, ControlledExec, ControlledExecOptions, ControlledExecProcess, ControlledProcessRecovery, } from "./core/controlled-process.js";
24
+ export { CHILD_PROCESS_ABSENCE_PROOF, CHILD_PROCESS_TERMINATION_EVIDENCE_KIND, CHILD_PROCESS_TERMINATION_KIND, CHILD_PROCESS_TERMINATION_PHASE, CHILD_PROCESS_UNKILLABLE_REASON, } from "./core/controlled-process.js";
23
25
  export type { EnvPatch } from "./core/env.js";
24
26
  export { applyEnvPatch, EMPTY_ENV_PATCH, mergeEnvPatches, processEnv, } from "./core/env.js";
25
- export type { AgentErrorCode, AgentErrorData, AgentErrorOptions, AgentFailure, AgentFailureCode, AgentFailureClass, AgentInfrastructureFailureCode, AuthFailureReason, GuardViolation, Issue, NotAvailableCause, TimeoutKind, } from "./core/error.js";
27
+ export type { AgentErrorCode, AgentErrorData, AgentErrorOptions, AgentFailure, AgentFailureClass, AgentFailureCode, AgentInfrastructureFailureCode, AuthFailureReason, GuardViolation, Issue, NotAvailableCause, TimeoutKind, } from "./core/error.js";
26
28
  export { AGENT_ERROR_CODE, AGENT_FAILURE_CLASS, AGENT_INFRASTRUCTURE_FAILURE_CODE, AgentError, AUTH_FAILURE_REASON, agentFailure, infrastructureFailure, isAgentError, NOT_AVAILABLE_CAUSE, TIMEOUT_KIND, } from "./core/error.js";
27
- export type { ChildProcessAbsenceProof, ChildProcessCompletion, ChildProcessIdentity, ChildProcessLifecycle, ChildProcessTerminationEvidence, ChildProcessTerminationPhase, ChildProcessTerminationResult, ChildProcessUnkillableReason, ControlledExec, ControlledExecOptions, ControlledExecProcess, ControlledProcessRecovery, } from "./core/controlled-process.js";
28
- export { CHILD_PROCESS_TERMINATION_EVIDENCE_KIND, CHILD_PROCESS_ABSENCE_PROOF, CHILD_PROCESS_TERMINATION_KIND, CHILD_PROCESS_TERMINATION_PHASE, CHILD_PROCESS_UNKILLABLE_REASON, } from "./core/controlled-process.js";
29
29
  export { createControlledExec } from "./core/node-controlled-exec.js";
30
30
  export type { Clock, Exec, ExecChunk, ExecExit, ExecProcess, ExecSpawnOptions, HttpClient, InteractiveExecProcess, InteractiveExecSpawnOptions, Logger, LogLevel, Ports, SecretResolver, SecretResolvers, TelemetrySink, } from "./core/ports.js";
31
31
  export { LOG_LEVEL } from "./core/ports.js";
@@ -36,12 +36,14 @@ export type { OutputChannel, ProcessSignal } from "./core/values.js";
36
36
  export { OUTPUT_CHANNEL, PROCESS_SIGNAL } from "./core/values.js";
37
37
  export type { FailureCorpusRecorder, FailureCorpusRecorderOptions, } from "./corpus/failure-corpus.js";
38
38
  export { createFailureCorpusRecorder } from "./corpus/failure-corpus.js";
39
- export type { AttemptStatus, AttemptTrace, Blocker, BlockerReason, Candidate, CandidateOptions, CreateFleetOptions, FleetAttemptRunOptions, Fleet, FleetOutcome, FleetPlainRunOptions, FleetOutcomeStatus, FleetRunOptions, FleetStructuredRunOptions, } from "./fleet/fleet.js";
39
+ export type { AttemptStatus, AttemptTrace, Blocker, BlockerReason, Candidate, CandidateOptions, CreateFleetOptions, Fleet, FleetAttemptRunOptions, FleetOutcome, FleetOutcomeStatus, FleetPlainRunOptions, FleetRunOptions, FleetStructuredRunOptions, } from "./fleet/fleet.js";
40
40
  export { ATTEMPT_STATUS, BLOCKER_REASON, candidateForAgent, candidateFromProfile, candidateKey, createFleet, FLEET_OUTCOME_STATUS, profileCooldownKey, } from "./fleet/fleet.js";
41
41
  export type { CooldownScope, FailureAction, FailureActionKind, FailurePolicy, PolicyCode, } from "./fleet/policy.js";
42
42
  export { CAPACITY_DEFAULT_COOLDOWN_MS, COOLDOWN_SCOPE, defaultFailurePolicy, FAILURE_ACTION_KIND, QUOTA_DEFAULT_COOLDOWN_MS, } from "./fleet/policy.js";
43
43
  export type { CooldownKey, FleetStateStore } from "./fleet/store.js";
44
44
  export { fileFleetStore, memoryFleetStore } from "./fleet/store.js";
45
+ export type { AgentAvailability, AgentAvailabilityCapability, AgentRemediation, } from "./host/availability.js";
46
+ export { AGENT_AVAILABILITY_STATUS, AGENT_INDETERMINATE_REASON, AGENT_UNAVAILABLE_REASON, DEFAULT_AGENT_AVAILABILITY_PROBE_TIMEOUT_MS, } from "./host/availability.js";
45
47
  export type { DoctorCapability, DoctorCheck, DoctorReport, InstalledSkill, InstallOptions, InstallOutcome, McpAvailability, McpCapability, McpScope, McpServerSpec, McpServerState, McpTransport, SkillAvailability, SkillSource, SkillSourceKind, SkillsCapability, StdioMcpServerSpec, } from "./host/capabilities.js";
46
48
  export { CAPABILITY_AVAILABILITY_STATUS, checkMcpAvailability, checkSkillAvailability, DOCTOR_CHECK_STATUS, INSTALL_STATUS, MCP_SCOPE, MCP_TRANSPORT, SKILL_SOURCE_KIND, } from "./host/capabilities.js";
47
49
  export type { HostContext, HostLocation } from "./host/context.js";
@@ -56,10 +58,10 @@ export type { AgentDefinition, AgentRun, RunContext, } from "./kernel/definition
56
58
  export { defineAgent } from "./kernel/definition.js";
57
59
  export type { EnvTemplate, EnvTemplateResolution, } from "./kernel/env-template.js";
58
60
  export { referencedEnvNames, resolveEnvTemplate, } from "./kernel/env-template.js";
59
- export type { AgentAuth, AgentDoctor, AgentLogin, AgentMcp, AgentSkills, } from "./kernel/facets.js";
61
+ export type { AgentAuth, AgentAvailabilityProbe, AgentDoctor, AgentLogin, AgentMcp, AgentSkills, } from "./kernel/facets.js";
60
62
  export type { Guard, GuardContext, GuardFactory } from "./kernel/guard.js";
61
63
  export { maxToolCalls, maxTurns, noProgress, repeatedOutput, } from "./kernel/guard.js";
62
- export type { ControlledChildProcessResource, Grant, Limits, ResolvedLimits, ResolvedRunResources, ResolvedRunOptions, ResolvedSandbox, RunOptions, RunResources, Sandbox, SandboxMode, } from "./kernel/options.js";
64
+ export type { ControlledChildProcessResource, Grant, Limits, ResolvedLimits, ResolvedRunOptions, ResolvedRunResources, ResolvedSandbox, RunOptions, RunResources, Sandbox, SandboxMode, } from "./kernel/options.js";
63
65
  export { GRANT_KIND, SANDBOX_MODE } from "./kernel/options.js";
64
66
  export type { Agent, AgentRuntime, AgentRuntimeOptions, } from "./kernel/runtime.js";
65
67
  export { createAgentRuntime, resolvePorts } from "./kernel/runtime.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -16,9 +16,9 @@ export { LOGIN_EVENT_TYPE, LOGIN_METHOD } from "./auth/login.js";
16
16
  export { AUTH_MATERIAL_KIND, AUTH_STATUS, createApiKeyProfile, createHomeDirProfile, envVarAuthMaterial, } from "./auth/material.js";
17
17
  export { fileProfileStore } from "./auth/profile-store.js";
18
18
  export { envResolver, requireSecret } from "./auth/secrets.js";
19
+ export { CHILD_PROCESS_ABSENCE_PROOF, CHILD_PROCESS_TERMINATION_EVIDENCE_KIND, CHILD_PROCESS_TERMINATION_KIND, CHILD_PROCESS_TERMINATION_PHASE, CHILD_PROCESS_UNKILLABLE_REASON, } from "./core/controlled-process.js";
19
20
  export { applyEnvPatch, EMPTY_ENV_PATCH, mergeEnvPatches, processEnv, } from "./core/env.js";
20
21
  export { AGENT_ERROR_CODE, AGENT_FAILURE_CLASS, AGENT_INFRASTRUCTURE_FAILURE_CODE, AgentError, AUTH_FAILURE_REASON, agentFailure, infrastructureFailure, isAgentError, NOT_AVAILABLE_CAUSE, TIMEOUT_KIND, } from "./core/error.js";
21
- export { CHILD_PROCESS_TERMINATION_EVIDENCE_KIND, CHILD_PROCESS_ABSENCE_PROOF, CHILD_PROCESS_TERMINATION_KIND, CHILD_PROCESS_TERMINATION_PHASE, CHILD_PROCESS_UNKILLABLE_REASON, } from "./core/controlled-process.js";
22
22
  export { createControlledExec } from "./core/node-controlled-exec.js";
23
23
  export { LOG_LEVEL } from "./core/ports.js";
24
24
  export { redactJsonSecrets, redactSecrets } from "./core/redact.js";
@@ -28,6 +28,7 @@ export { createFailureCorpusRecorder } from "./corpus/failure-corpus.js";
28
28
  export { ATTEMPT_STATUS, BLOCKER_REASON, candidateForAgent, candidateFromProfile, candidateKey, createFleet, FLEET_OUTCOME_STATUS, profileCooldownKey, } from "./fleet/fleet.js";
29
29
  export { CAPACITY_DEFAULT_COOLDOWN_MS, COOLDOWN_SCOPE, defaultFailurePolicy, FAILURE_ACTION_KIND, QUOTA_DEFAULT_COOLDOWN_MS, } from "./fleet/policy.js";
30
30
  export { fileFleetStore, memoryFleetStore } from "./fleet/store.js";
31
+ export { AGENT_AVAILABILITY_STATUS, AGENT_INDETERMINATE_REASON, AGENT_UNAVAILABLE_REASON, DEFAULT_AGENT_AVAILABILITY_PROBE_TIMEOUT_MS, } from "./host/availability.js";
31
32
  export { CAPABILITY_AVAILABILITY_STATUS, checkMcpAvailability, checkSkillAvailability, DOCTOR_CHECK_STATUS, INSTALL_STATUS, MCP_SCOPE, MCP_TRANSPORT, SKILL_SOURCE_KIND, } from "./host/capabilities.js";
32
33
  export { parseMcpRequirementRef, parseSkillRequirementRef, } from "./host/requirement-ref.js";
33
34
  export { validateSpecSecrets } from "./host/validate-spec.js";
@@ -9,6 +9,7 @@
9
9
  import type { LoginCapability } from "../auth/login.js";
10
10
  import type { MaterialHandlers } from "../auth/material.js";
11
11
  import type { AgentEvent, RunUsage } from "../core/run.js";
12
+ import { type AgentAvailabilityCapability, type AgentRemediation } from "../host/availability.js";
12
13
  import type { DoctorCapability, McpCapability, SkillsCapability } from "../host/capabilities.js";
13
14
  import { type FailureMatcher } from "./classify.js";
14
15
  import type { AgentDefinition } from "./definition.js";
@@ -52,6 +53,8 @@ export type CliAgentBlueprint<Id extends string = string> = {
52
53
  * output would misclassify runs that merely talk about limits.
53
54
  */
54
55
  readonly classifyOnSuccess?: readonly FailureMatcher[];
56
+ readonly availability?: AgentAvailabilityCapability;
57
+ readonly commandMissingRemediation?: AgentRemediation | null;
55
58
  readonly auth?: MaterialHandlers;
56
59
  readonly login?: LoginCapability;
57
60
  readonly doctor?: DoctorCapability;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-agent.d.ts","sourceRoot":"","sources":["../../src/kernel/cli-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-agent.d.ts","sourceRoot":"","sources":["../../src/kernel/cli-agent.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,8 @@ import { AGENT_ERROR_CODE, AGENT_INFRASTRUCTURE_FAILURE_CODE, AgentError, infras
11
11
  import { redactSecrets } from "../core/redact.js";
12
12
  import { AGENT_EVENT_TYPE, RUN_COMPLETION_KIND } from "../core/run.js";
13
13
  import { OUTPUT_CHANNEL, PROCESS_SIGNAL, } from "../core/values.js";
14
- import { DOCTOR_CHECK_STATUS } from "../host/capabilities.js";
14
+ import { cliAvailability, } from "../host/availability.js";
15
+ import { cliCommandDoctor } from "../host/command-doctor.js";
15
16
  import { classifyFailure, sharedFailureMatchers, } from "./classify.js";
16
17
  import { requireKeyedHandler } from "./keyed.js";
17
18
  const SIGKILL_ESCALATION_MS = 5_000;
@@ -538,27 +539,15 @@ export function defineCliAgent(blueprint) {
538
539
  detectCompletion: blueprint.detectCompletion?.bind(blueprint) ?? (() => false),
539
540
  };
540
541
  const matchers = [...(blueprint.classify ?? []), ...sharedFailureMatchers];
541
- const doctor = blueprint.doctor ??
542
- {
543
- probe: async (ctx) => {
544
- const command = await ctx.exec.which(blueprint.command, ctx.env);
545
- return {
546
- available: command !== null,
547
- checks: [
548
- {
549
- id: "command-on-path",
550
- status: command === null
551
- ? DOCTOR_CHECK_STATUS.fail
552
- : DOCTOR_CHECK_STATUS.pass,
553
- detail: command,
554
- },
555
- ],
556
- };
557
- },
558
- };
542
+ const doctor = blueprint.doctor ?? cliCommandDoctor(blueprint.command);
559
543
  const definition = {
560
544
  id: blueprint.id,
561
545
  run: buildRun(blueprint, hooks, matchers, blueprint.classifyOnSuccess ?? []),
546
+ availability: blueprint.availability ??
547
+ cliAvailability({
548
+ command: blueprint.command,
549
+ commandMissingRemediation: blueprint.commandMissingRemediation ?? null,
550
+ }),
562
551
  doctor,
563
552
  };
564
553
  if (blueprint.auth !== undefined) {
@@ -8,6 +8,7 @@ import type { LoginCapability } from "../auth/login.js";
8
8
  import type { AuthCapability } from "../auth/material.js";
9
9
  import type { Clock, Exec, HttpClient, Logger } from "../core/ports.js";
10
10
  import type { AgentEvent, AgentRunOutcome } from "../core/run.js";
11
+ import type { AgentAvailabilityCapability } from "../host/availability.js";
11
12
  import type { DoctorCapability, McpCapability, SkillsCapability } from "../host/capabilities.js";
12
13
  import type { ResolvedRunOptions } from "./options.js";
13
14
  /** Resolved (rule 2): the adapter's whole world. */
@@ -27,6 +28,7 @@ export type AgentRun = AsyncGenerator<AgentEvent, AgentRunOutcome, void>;
27
28
  export interface AgentDefinition<Id extends string = string> {
28
29
  id: Id;
29
30
  run(options: ResolvedRunOptions, ctx: RunContext): AgentRun;
31
+ availability?: AgentAvailabilityCapability;
30
32
  auth?: AuthCapability;
31
33
  login?: LoginCapability;
32
34
  doctor?: DoctorCapability;
@@ -1 +1 @@
1
- {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/kernel/definition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,oDAAoD;AACpD,MAAM,MAAM,UAAU,GAAG;IACvB,0EAA0E;IAC1E,MAAM,EAAE,WAAW,CAAC;IACpB,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,2EAA2E;IAC3E,KAAK,EAAE,KAAK,CAAC;IACb,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;AAEzE,MAAM,WAAW,eAAe,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM;IACzD,EAAE,EAAE,EAAE,CAAC;IACP,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5D,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,GAAG,CAAC,EAAE,aAAa,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EACjD,UAAU,EAAE,eAAe,CAAC,EAAE,CAAC,GAC9B,eAAe,CAAC,EAAE,CAAC,CAErB"}
1
+ {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/kernel/definition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,oDAAoD;AACpD,MAAM,MAAM,UAAU,GAAG;IACvB,0EAA0E;IAC1E,MAAM,EAAE,WAAW,CAAC;IACpB,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,2EAA2E;IAC3E,KAAK,EAAE,KAAK,CAAC;IACb,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;AAEzE,MAAM,WAAW,eAAe,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM;IACzD,EAAE,EAAE,EAAE,CAAC;IACP,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5D,YAAY,CAAC,EAAE,2BAA2B,CAAC;IAC3C,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,GAAG,CAAC,EAAE,aAAa,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EACjD,UAAU,EAAE,eAAe,CAAC,EAAE,CAAC,GAC9B,eAAe,CAAC,EAAE,CAAC,CAErB"}
@@ -8,6 +8,7 @@ import { type LoginCapability, type LoginHandle, type LoginMethod, type LoginReq
8
8
  import type { AuthCapability, AuthMaterial, AuthMaterialDescriptor, AuthMaterialKind, AuthStatus } from "../auth/material.js";
9
9
  import type { EnvPatch } from "../core/env.js";
10
10
  import type { Clock, Exec, HttpClient, Logger, SecretResolvers } from "../core/ports.js";
11
+ import type { AgentAvailability, AgentAvailabilityCapability } from "../host/availability.js";
11
12
  import type { DoctorCapability, DoctorReport, InstalledSkill, InstallOptions, InstallOutcome, McpCapability, McpScope, McpServerSpec, McpServerState, SkillSource, SkillsCapability } from "../host/capabilities.js";
12
13
  import type { HostLocation } from "../host/context.js";
13
14
  export type AgentAuth = {
@@ -19,6 +20,9 @@ export type AgentAuth = {
19
20
  toEnv(material: AuthMaterial): Promise<EnvPatch>;
20
21
  check(material: AuthMaterial, location: HostLocation): Promise<AuthStatus>;
21
22
  };
23
+ export type AgentAvailabilityProbe = {
24
+ probe(location: HostLocation): Promise<AgentAvailability>;
25
+ };
22
26
  export type AgentDoctor = {
23
27
  probe(location: HostLocation): Promise<DoctorReport>;
24
28
  };
@@ -51,6 +55,7 @@ export type FacetBinding = {
51
55
  secrets: SecretResolvers;
52
56
  };
53
57
  export declare function bindAuth(capability: AuthCapability, binding: FacetBinding): AgentAuth;
58
+ export declare function bindAvailability(capability: AgentAvailabilityCapability, binding: FacetBinding): AgentAvailabilityProbe;
54
59
  export declare function bindLogin(capability: LoginCapability, binding: FacetBinding): AgentLogin;
55
60
  export declare function bindDoctor(capability: DoctorCapability, binding: FacetBinding): AgentDoctor;
56
61
  export declare function bindSkills(capability: SkillsCapability, binding: FacetBinding): AgentSkills;
@@ -1 +1 @@
1
- {"version":3,"file":"facets.d.ts","sourceRoot":"","sources":["../../src/kernel/facets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"facets.d.ts","sourceRoot":"","sources":["../../src/kernel/facets.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,11 @@ export function bindAuth(capability, binding) {
48
48
  },
49
49
  };
50
50
  }
51
+ export function bindAvailability(capability, binding) {
52
+ return {
53
+ probe: (location) => capability.probe(hostContext(binding, location)),
54
+ };
55
+ }
51
56
  export function bindLogin(capability, binding) {
52
57
  const requireHandler = (method) => requireKeyedHandler(capability.methods, method, binding.agentId, `login method "${method}"`);
53
58
  return {
@@ -8,13 +8,14 @@ import { type Ports } from "../core/ports.js";
8
8
  import type { RunHandle } from "../core/run.js";
9
9
  import { type StructuredHandle, type StructuredRunOptions } from "../structured/run-structured.js";
10
10
  import type { AgentDefinition } from "./definition.js";
11
- import { type AgentAuth, type AgentDoctor, type AgentLogin, type AgentMcp, type AgentSkills } from "./facets.js";
11
+ import { type AgentAuth, type AgentAvailabilityProbe, type AgentDoctor, type AgentLogin, type AgentMcp, type AgentSkills } from "./facets.js";
12
12
  import { type RunOptions } from "./options.js";
13
13
  export interface Agent<Id extends string = string> {
14
14
  readonly id: Id;
15
15
  run<T>(options: StructuredRunOptions<T>): StructuredHandle<T>;
16
16
  run(options: RunOptions): RunHandle;
17
17
  run<T>(options: RunOptions | StructuredRunOptions<T>): RunHandle | StructuredHandle<T>;
18
+ availability: AgentAvailabilityProbe | null;
18
19
  auth: AgentAuth | null;
19
20
  login: AgentLogin | null;
20
21
  skills: AgentSkills | null;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/kernel/runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAA6B,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAE1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,WAAW,EAOjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,cAAc,CAAC;AAGlE,MAAM,WAAW,KAAK,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM;IAC/C,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC9D,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,CAAC,EACH,OAAO,EAAE,UAAU,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAC5C,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM;IACtD,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED,MAAM,MAAM,mBAAmB,CAAC,IAAI,SAAS,SAAS,eAAe,EAAE,IAAI;IACzE,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACvB;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAS1D;AAqED,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,IAAI,SAAS,SAAS,eAAe,EAAE,EAC7C,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAoCtE"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/kernel/runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAA6B,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAE1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,WAAW,EAQjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,cAAc,CAAC;AAGlE,MAAM,WAAW,KAAK,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM;IAC/C,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC9D,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,CAAC,EACH,OAAO,EAAE,UAAU,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAC5C,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACnC,YAAY,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC5C,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM;IACtD,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED,MAAM,MAAM,mBAAmB,CAAC,IAAI,SAAS,SAAS,eAAe,EAAE,IAAI;IACzE,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACvB;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAS1D;AAyED,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,IAAI,SAAS,SAAS,eAAe,EAAE,EAC7C,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAoCtE"}
@@ -10,7 +10,7 @@ import { AGENT_ERROR_CODE, AgentError } from "../core/error.js";
10
10
  import { fetchHttp, nodeExec, systemClock } from "../core/node-ports.js";
11
11
  import { noopLogger, noopTelemetry } from "../core/ports.js";
12
12
  import { isStructuredRunOptions, resolveStructuredRunOptions, startStructuredRun, } from "../structured/run-structured.js";
13
- import { bindAuth, bindDoctor, bindLogin, bindMcp, bindSkills, } from "./facets.js";
13
+ import { bindAuth, bindAvailability, bindDoctor, bindLogin, bindMcp, bindSkills, } from "./facets.js";
14
14
  import { resolveRunOptions } from "./options.js";
15
15
  import { startRun } from "./run.js";
16
16
  /**
@@ -63,6 +63,9 @@ function bindAgent(definition, ports, baseEnv) {
63
63
  return {
64
64
  id: definition.id,
65
65
  run,
66
+ availability: definition.availability === undefined
67
+ ? null
68
+ : bindAvailability(definition.availability, binding),
66
69
  auth: definition.auth === undefined ? null : bindAuth(definition.auth, binding),
67
70
  login: definition.login === undefined
68
71
  ? null
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpacakit/agents",
3
- "version": "0.1.0-beta.30",
3
+ "version": "0.1.0-beta.35",
4
4
  "description": "Run AI coding agents programmatically: execute, stream, classify failures, fail over.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -49,7 +49,7 @@
49
49
  },
50
50
  "dependencies": {
51
51
  "zod": "^4.3.6",
52
- "@alpacakit/core": "0.1.0-beta.30"
52
+ "@alpacakit/core": "0.1.0-beta.35"
53
53
  },
54
54
  "devDependencies": {
55
55
  "typescript": "^5.9.3",