@hasna/skills 0.8.10 → 0.8.12
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 +62 -1
- package/bin/index.js +1558 -591
- package/bin/mcp.js +389 -82
- package/bin/migrate.js +6 -5
- package/bin/server.js +12312 -73626
- package/bin/worker.js +7635 -60520
- package/dist/index.d.ts +5 -1
- package/dist/index.js +1058 -267
- package/dist/lib/agent-discovery.d.ts +1 -1
- package/dist/lib/claude-marketplace-registry.d.ts +17 -0
- package/dist/lib/claude-settings-witness.d.ts +19 -0
- package/dist/lib/fleet-credentials.d.ts +18 -0
- package/dist/lib/hook-diagnostics.d.ts +7 -0
- package/dist/lib/recurring-recovery.d.ts +2 -2
- package/dist/lib/recurring-surface.d.ts +1 -1
- package/dist/lib/remote-client.d.ts +10 -3
- package/dist/lib/remote-credit-checkout.d.ts +22 -0
- package/dist/lib/remote-customer-operations.d.ts +2 -3
- package/dist/lib/selection-cache.d.ts +32 -0
- package/dist/lib/selection-resolver.d.ts +3 -1
- package/dist/lib/session-reconciliation.d.ts +100 -0
- package/dist/sdk/index.d.ts +3 -1
- package/dist/sdk/index.js +13419 -73945
- package/docs/plugin-admission.md +90 -0
- package/package.json +6 -5
|
@@ -5,7 +5,7 @@ export { captureDiscoveryDirectories, type DiscoveryDirectory } from "./agent-di
|
|
|
5
5
|
export interface DiscoverySource {
|
|
6
6
|
path: string;
|
|
7
7
|
sha256: string | null;
|
|
8
|
-
hashMode?: "bytes" | "path-bytes" | "claude-plugin-registry";
|
|
8
|
+
hashMode?: "bytes" | "path-bytes" | "claude-plugin-registry" | "claude-marketplace-registry" | "claude-settings-v1";
|
|
9
9
|
managedPlugins?: ManagedPluginRegistrationWitness[];
|
|
10
10
|
format?: "json" | "toml" | "yaml";
|
|
11
11
|
fields?: string[];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const CLAUDE_MARKETPLACE_REGISTRY_LIMITS: Readonly<{
|
|
2
|
+
bytes: number;
|
|
3
|
+
rows: 1024;
|
|
4
|
+
depth: 32;
|
|
5
|
+
nodes: 65536;
|
|
6
|
+
stringCharacters: 16384;
|
|
7
|
+
pathCharacters: 4096;
|
|
8
|
+
}>;
|
|
9
|
+
export interface ClaudeMarketplaceRegistryBudget {
|
|
10
|
+
remaining: number;
|
|
11
|
+
}
|
|
12
|
+
/** Capture explicitly reviewed registry structure; never infer this mode from a raw-byte witness. */
|
|
13
|
+
export declare function captureClaudeMarketplaceRegistry(path: string, budget?: ClaudeMarketplaceRegistryBudget): {
|
|
14
|
+
path: string;
|
|
15
|
+
hashMode: "claude-marketplace-registry";
|
|
16
|
+
sha256: string;
|
|
17
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const CLAUDE_SETTINGS_WITNESS_LIMITS: Readonly<{
|
|
2
|
+
bytes: number;
|
|
3
|
+
rows: 1024;
|
|
4
|
+
depth: 32;
|
|
5
|
+
nodes: 65536;
|
|
6
|
+
stringCharacters: 16384;
|
|
7
|
+
pathCharacters: 4096;
|
|
8
|
+
}>;
|
|
9
|
+
export interface ClaudeSettingsWitnessBudget {
|
|
10
|
+
remaining: number;
|
|
11
|
+
}
|
|
12
|
+
/** Hash only reviewed installer-rendered settings after the disk preimage has been verified. */
|
|
13
|
+
export declare function hashClaudeSettingsReplacement(text: string, budget: ClaudeSettingsWitnessBudget): string;
|
|
14
|
+
/** Explicit capture never converts a stored legacy raw witness or changes settings. */
|
|
15
|
+
export declare function captureClaudeSettings(path: string, budget?: ClaudeSettingsWitnessBudget): {
|
|
16
|
+
path: string;
|
|
17
|
+
hashMode: "claude-settings-v1";
|
|
18
|
+
sha256: string;
|
|
19
|
+
};
|
|
@@ -147,6 +147,24 @@ export declare class SkillsFleetCredentialError extends Error {
|
|
|
147
147
|
* on the error's NAME rather than on a class identity a bundle may not share.
|
|
148
148
|
*/
|
|
149
149
|
export declare function isSkillsFleetCredentialError(error: unknown): error is SkillsFleetCredentialError;
|
|
150
|
+
/**
|
|
151
|
+
* Translate the shared seam's `CredentialResolutionError` into this package's
|
|
152
|
+
* own refusal, or return null for anything else.
|
|
153
|
+
*
|
|
154
|
+
* A DELIBERATE selection that cannot be honoured — `HASNA_PROFILE` naming a
|
|
155
|
+
* profile that has no entry, an override or pointer that resolves to nothing, a
|
|
156
|
+
* corrupt credentials file — is thrown by `@hasna/contracts`, not by the
|
|
157
|
+
* transport resolver. Left untranslated it escaped every helper in this file:
|
|
158
|
+
* `skillsCredentialOrReason` and `resolveConfiguredRunRouting` recognise only
|
|
159
|
+
* `SkillsFleetCredentialError`, so a `--json` command or an MCP tool got an
|
|
160
|
+
* unhandled exception where the structured refusal was the whole point.
|
|
161
|
+
*
|
|
162
|
+
* The seam's message already names what was attempted and never carries a
|
|
163
|
+
* credential value. Pointer-completion messages can still carry the selected
|
|
164
|
+
* vault item identifier, so that exact identifier is removed before the error
|
|
165
|
+
* reaches any user-visible surface.
|
|
166
|
+
*/
|
|
167
|
+
export declare const REDACTED_VAULT_REFERENCE = "[redacted vault reference]";
|
|
150
168
|
/**
|
|
151
169
|
* Normalize a configured Skills authority to the origin the client dials.
|
|
152
170
|
*
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare class HookDiagnosticError extends Error {
|
|
2
|
+
readonly code: string;
|
|
3
|
+
readonly stage: "context" | "sync";
|
|
4
|
+
constructor(code: string, stage: "context" | "sync");
|
|
5
|
+
}
|
|
6
|
+
export declare function hookChildError(stdout: string, stage: "context" | "sync"): HookDiagnosticError;
|
|
7
|
+
export declare function hookFailureReason(error: unknown, profileId?: string): string;
|
|
@@ -62,7 +62,7 @@ export declare function readRecurringRecovery(directory: string): {
|
|
|
62
62
|
operation: "revoke";
|
|
63
63
|
consentId: string;
|
|
64
64
|
};
|
|
65
|
-
phase: "
|
|
65
|
+
phase: "prepared" | "pending" | "observed";
|
|
66
66
|
consentId: string | null;
|
|
67
67
|
};
|
|
68
68
|
export interface RecurringRecoveryOptions {
|
|
@@ -76,7 +76,7 @@ export declare function continueRecurringRecovery(customer: RecurringCustomer, d
|
|
|
76
76
|
recoveryDirectory: string;
|
|
77
77
|
operation: "activate" | "revoke";
|
|
78
78
|
outcomeUnknown: boolean;
|
|
79
|
-
phase: "
|
|
79
|
+
phase: "prepared" | "pending" | "observed";
|
|
80
80
|
result: unknown;
|
|
81
81
|
}>;
|
|
82
82
|
export {};
|
|
@@ -219,7 +219,7 @@ export declare function executeRecurringSurface(action: RecurringSurfaceAction,
|
|
|
219
219
|
recoveryDirectory: string;
|
|
220
220
|
operation: "activate" | "revoke";
|
|
221
221
|
outcomeUnknown: boolean;
|
|
222
|
-
phase: "
|
|
222
|
+
phase: "prepared" | "pending" | "observed";
|
|
223
223
|
result: unknown;
|
|
224
224
|
} | {
|
|
225
225
|
cancelled: boolean;
|
|
@@ -7,6 +7,7 @@ import { type RemoteWorkspaceMemberErrorCode, type SetRemoteWorkspaceMemberRole,
|
|
|
7
7
|
import { type RemoteSkillRunContract } from "./remote-run-contract.js";
|
|
8
8
|
import { type RemoteCreditPack, type RemoteRunApproval, type RemoteRunQuote } from "./remote-account.js";
|
|
9
9
|
import { type RemoteInputFile, type RemoteInputFileDescriptor } from "./remote-files.js";
|
|
10
|
+
import { type RemoteCreditCheckout, type RemoteCreditCheckoutOptions, type RemoteCreditCheckoutErrorCode } from "./remote-credit-checkout.js";
|
|
10
11
|
import { type UpdateRemoteProfile, type UpdateRemoteWorkspace } from "./remote-profile.js";
|
|
11
12
|
import { type RemoteQuoteUnavailableCode } from "./remote-quote-errors.js";
|
|
12
13
|
import { type RemoteSkillsAccess } from "./remote-permissions.js";
|
|
@@ -29,6 +30,13 @@ export declare class RemoteRequestError extends Error {
|
|
|
29
30
|
readonly status: number;
|
|
30
31
|
constructor(path: string, status: number, _statusText?: string);
|
|
31
32
|
}
|
|
33
|
+
/** Bounded checkout outcome; the key is caller-owned, never copied from a server error. */
|
|
34
|
+
export declare class RemoteCreditCheckoutError extends RemoteRequestError {
|
|
35
|
+
readonly code: RemoteCreditCheckoutErrorCode;
|
|
36
|
+
readonly requestIdempotencyKey: string;
|
|
37
|
+
readonly retryAfterSeconds?: number | undefined;
|
|
38
|
+
constructor(code: RemoteCreditCheckoutErrorCode, status: number, requestIdempotencyKey: string, retryAfterSeconds?: number | undefined);
|
|
39
|
+
}
|
|
32
40
|
/** A recognized unavailable quote; status compatibility and client-owned copy. */
|
|
33
41
|
export declare class RemoteQuoteUnavailableError extends RemoteRequestError {
|
|
34
42
|
readonly code: RemoteQuoteUnavailableCode;
|
|
@@ -196,9 +204,8 @@ export declare class RemoteSkillsClient {
|
|
|
196
204
|
formattedCreditBalance: string;
|
|
197
205
|
}>;
|
|
198
206
|
listCreditPacks(): Promise<RemoteCreditPack[]>;
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}>;
|
|
207
|
+
/** One checkout POST. Retain an explicit key before calling to recover even a lost process. */
|
|
208
|
+
createCreditCheckout(packId: string, options?: RemoteCreditCheckoutOptions): Promise<RemoteCreditCheckout>;
|
|
202
209
|
getUsage(): Promise<Record<string, unknown>[]>;
|
|
203
210
|
listInvoices(): Promise<Record<string, unknown>[]>;
|
|
204
211
|
createBillingCheckout(): Promise<{
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Caller-owned checkout identity. Reuse only for the same server, account and pack. */
|
|
2
|
+
export interface RemoteCreditCheckoutOptions {
|
|
3
|
+
idempotencyKey?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface RemoteCreditCheckout {
|
|
6
|
+
url: string;
|
|
7
|
+
requestIdempotencyKey: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const creditCheckoutKeyPattern: RegExp;
|
|
10
|
+
export declare function creditCheckoutRequestKey(value: unknown): string;
|
|
11
|
+
export declare const creditCheckoutMessages: {
|
|
12
|
+
readonly CREDIT_CHECKOUT_UNCONFIRMED: "Checkout creation could not be confirmed. Keep the request idempotency key, inspect billing, and use the same key for an explicit retry on the same server, account and pack. No automatic retry was made.";
|
|
13
|
+
readonly CREDIT_CHECKOUT_IN_PROGRESS: "This checkout is still being created. Wait before explicitly retrying the same server, account and pack with the same request idempotency key. No automatic retry was made.";
|
|
14
|
+
readonly CREDIT_CHECKOUT_EXPIRED: "This checkout has expired. Inspect billing before deliberately starting a new purchase with a new request idempotency key. Do not retry this checkout automatically.";
|
|
15
|
+
readonly CREDIT_CHECKOUT_FULFILLED: "This checkout is already fulfilled. Inspect the account balance; do not create another checkout to recover this purchase.";
|
|
16
|
+
};
|
|
17
|
+
export type RemoteCreditCheckoutErrorCode = keyof typeof creditCheckoutMessages;
|
|
18
|
+
/** Only recognized server states become typed outcomes; never retain server text. */
|
|
19
|
+
export declare function creditCheckoutFailure(value: unknown, status: number, key: string): {
|
|
20
|
+
code: RemoteCreditCheckoutErrorCode;
|
|
21
|
+
retryAfterSeconds?: number;
|
|
22
|
+
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RemoteCreditCheckoutOptions } from "./remote-credit-checkout.js";
|
|
1
2
|
import type { RemoteSkillsClient } from "./remote-client.js";
|
|
2
3
|
/** Shared customer operation declarations for MCP registration and its discovery contract. */
|
|
3
4
|
export declare const REMOTE_CUSTOMER_OPERATIONS: readonly [{
|
|
@@ -49,9 +50,7 @@ export declare const REMOTE_CUSTOMER_OPERATIONS: readonly [{
|
|
|
49
50
|
readonly title: "Create Credit Checkout";
|
|
50
51
|
readonly parameter: "pack_id";
|
|
51
52
|
readonly mutates: true;
|
|
52
|
-
readonly invoke: (client: RemoteSkillsClient, value: string) => Promise<
|
|
53
|
-
url: string;
|
|
54
|
-
}>;
|
|
53
|
+
readonly invoke: (client: RemoteSkillsClient, value: string, options?: RemoteCreditCheckoutOptions) => Promise<import("./remote-credit-checkout.js").RemoteCreditCheckout>;
|
|
55
54
|
}, {
|
|
56
55
|
readonly name: "get_billing_usage";
|
|
57
56
|
readonly title: "Get Billing Usage";
|
|
@@ -13,9 +13,28 @@ export interface CachedSelectionProfile {
|
|
|
13
13
|
verifiedAt: string;
|
|
14
14
|
profile: ResolvedSkillProfile;
|
|
15
15
|
}
|
|
16
|
+
export interface SkillSessionParentBinding {
|
|
17
|
+
sessionId: string;
|
|
18
|
+
generation: number;
|
|
19
|
+
receiptSha256: string;
|
|
20
|
+
}
|
|
16
21
|
export interface SkillSessionReceipt extends CachedSelectionProfile {
|
|
17
22
|
sessionId: string;
|
|
18
23
|
loaded: string[];
|
|
24
|
+
/** Monotonic across sanctioned receipt writes. Legacy receipts without it are generation zero. */
|
|
25
|
+
generation?: number;
|
|
26
|
+
/** Private local metadata binding a child receipt to the exact parent snapshot it inherited. */
|
|
27
|
+
parent?: SkillSessionParentBinding;
|
|
28
|
+
}
|
|
29
|
+
export interface SkillSessionSnapshot extends SkillSessionParentBinding {
|
|
30
|
+
path: string;
|
|
31
|
+
bytes: Uint8Array;
|
|
32
|
+
receipt: SkillSessionReceipt;
|
|
33
|
+
sha256: string;
|
|
34
|
+
}
|
|
35
|
+
export interface SkillSessionWritePrecondition {
|
|
36
|
+
current: SkillSessionParentBinding | null;
|
|
37
|
+
parent?: SkillSessionParentBinding;
|
|
19
38
|
}
|
|
20
39
|
export declare const MAX_CACHED_PROFILE_AGE_MS: number;
|
|
21
40
|
export declare const SELECTION_LOCK_FILE = "selection.lock.json";
|
|
@@ -38,3 +57,16 @@ export declare function projectSelectionLockPath(projectDir: string): string;
|
|
|
38
57
|
export declare function readProjectSelection(projectDir: string): CachedSelectionProfile | null;
|
|
39
58
|
export declare function sessionReceiptPath(sessionId: string, options?: SelectionCacheOptions): string;
|
|
40
59
|
export declare function readSkillSession(sessionId: string, options?: SelectionCacheOptions): SkillSessionReceipt | null;
|
|
60
|
+
export declare function readSkillSessionSnapshotIfExists(sessionId: string, options?: SelectionCacheOptions): SkillSessionSnapshot | null;
|
|
61
|
+
export declare function readSkillSessionSnapshot(sessionId: string, options?: SelectionCacheOptions): SkillSessionSnapshot;
|
|
62
|
+
export declare function skillSessionSnapshotBinding(snapshot: SkillSessionSnapshot): SkillSessionParentBinding;
|
|
63
|
+
export declare function nextSkillSessionGeneration(generation: number): number;
|
|
64
|
+
/** Receipt creation and updates are exact-snapshot CAS operations. Child creation also fences its parent. */
|
|
65
|
+
export declare function writeSkillSession(receipt: SkillSessionReceipt, expected: SkillSessionWritePrecondition, options?: SelectionCacheOptions): void;
|
|
66
|
+
/** Preserve both sides before the single atomic replacement; failures retain recovery evidence. */
|
|
67
|
+
export declare function replaceSkillSession(expected: SkillSessionParentBinding, replacement: SkillSessionReceipt, plan: unknown, options?: SelectionCacheOptions, beforeCommit?: () => void): {
|
|
68
|
+
archivePath: string;
|
|
69
|
+
receiptPath: string;
|
|
70
|
+
beforeSha256: string;
|
|
71
|
+
afterSha256: string;
|
|
72
|
+
};
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { type ProfileClient } from "./profile-client.js";
|
|
3
3
|
import type { ResolvedSkillProfile, ResolvedSkillSelection } from "../types/skill-selection.js";
|
|
4
4
|
import type { SkillBundleEntry } from "./skill-bundle.js";
|
|
5
|
-
import { type CachedSelectionProfile, type SelectionCacheOptions, type SkillSessionReceipt } from "./selection-cache.js";
|
|
5
|
+
import { type CachedSelectionProfile, type SelectionCacheOptions, type SkillSessionParentBinding, type SkillSessionReceipt } from "./selection-cache.js";
|
|
6
6
|
export interface SelectionResolverOptions extends SelectionCacheOptions {
|
|
7
7
|
client?: ProfileClient;
|
|
8
8
|
cached?: boolean;
|
|
@@ -31,6 +31,8 @@ export declare function syncSelectionProfile(profileId: string, options?: SyncSe
|
|
|
31
31
|
export interface ResolvedSelectionContext {
|
|
32
32
|
receipt: CachedSelectionProfile;
|
|
33
33
|
session: SkillSessionReceipt | null;
|
|
34
|
+
sessionSnapshot: SkillSessionParentBinding | null;
|
|
35
|
+
parentSnapshot?: SkillSessionParentBinding;
|
|
34
36
|
inheritedLoaded?: string[];
|
|
35
37
|
client?: ProfileClient;
|
|
36
38
|
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { type ProfileClient } from "./profile-client.js";
|
|
2
|
+
import { type SelectionCacheOptions } from "./selection-cache.js";
|
|
3
|
+
export interface SessionReconciliationInput {
|
|
4
|
+
sessionId: string;
|
|
5
|
+
fromProfile: string;
|
|
6
|
+
fromRevision: string;
|
|
7
|
+
receiptSha256: string;
|
|
8
|
+
selectionProfile: string;
|
|
9
|
+
profileRevision: string;
|
|
10
|
+
apply?: boolean;
|
|
11
|
+
planDigest?: string;
|
|
12
|
+
planIssuedAt?: string;
|
|
13
|
+
planExpiresAt?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface SessionReconciliationOptions extends SelectionCacheOptions {
|
|
16
|
+
client?: ProfileClient;
|
|
17
|
+
}
|
|
18
|
+
export declare const SESSION_RECONCILIATION_PLAN_TTL_MS: number;
|
|
19
|
+
/** Metadata only: inspection never displays skill payloads or resolves credentials. */
|
|
20
|
+
export declare function inspectSkillSession(sessionId: string, options?: SelectionCacheOptions): {
|
|
21
|
+
sessionId: string;
|
|
22
|
+
path: string;
|
|
23
|
+
receiptSha256: string;
|
|
24
|
+
generation: number;
|
|
25
|
+
verifiedAt: string;
|
|
26
|
+
authority: string;
|
|
27
|
+
workspaceId: string;
|
|
28
|
+
profileId: string;
|
|
29
|
+
profileRevision: string;
|
|
30
|
+
selectionCount: number;
|
|
31
|
+
loadedCount: number;
|
|
32
|
+
};
|
|
33
|
+
/** Explicit opt-in only. Ordinary loads and hooks retain their immutable session pins. */
|
|
34
|
+
export declare function reconcileSkillSession(input: SessionReconciliationInput, options?: SessionReconciliationOptions): Promise<{
|
|
35
|
+
applied: false;
|
|
36
|
+
plan: {
|
|
37
|
+
schemaVersion: number;
|
|
38
|
+
issuedAt: string;
|
|
39
|
+
expiresAt: string;
|
|
40
|
+
sessionId: string;
|
|
41
|
+
sessionPath: string;
|
|
42
|
+
before: {
|
|
43
|
+
receiptSha256: string;
|
|
44
|
+
generation: number;
|
|
45
|
+
profileId: string;
|
|
46
|
+
profileRevision: string;
|
|
47
|
+
selectionCount: number;
|
|
48
|
+
};
|
|
49
|
+
target: {
|
|
50
|
+
authority: string;
|
|
51
|
+
workspaceId: string;
|
|
52
|
+
profileId: string;
|
|
53
|
+
profileRevision: string;
|
|
54
|
+
profileSha256: string;
|
|
55
|
+
selectionCount: number;
|
|
56
|
+
};
|
|
57
|
+
replacementGeneration: number;
|
|
58
|
+
retainedLoadedCount: number;
|
|
59
|
+
retiredLoadedCount: number;
|
|
60
|
+
scope: string;
|
|
61
|
+
};
|
|
62
|
+
planDigest: string;
|
|
63
|
+
archivePath: undefined;
|
|
64
|
+
receiptPath: undefined;
|
|
65
|
+
beforeSha256: string;
|
|
66
|
+
afterSha256: undefined;
|
|
67
|
+
} | {
|
|
68
|
+
archivePath: string;
|
|
69
|
+
receiptPath: string;
|
|
70
|
+
beforeSha256: string;
|
|
71
|
+
afterSha256: string;
|
|
72
|
+
applied: true;
|
|
73
|
+
plan: {
|
|
74
|
+
schemaVersion: number;
|
|
75
|
+
issuedAt: string;
|
|
76
|
+
expiresAt: string;
|
|
77
|
+
sessionId: string;
|
|
78
|
+
sessionPath: string;
|
|
79
|
+
before: {
|
|
80
|
+
receiptSha256: string;
|
|
81
|
+
generation: number;
|
|
82
|
+
profileId: string;
|
|
83
|
+
profileRevision: string;
|
|
84
|
+
selectionCount: number;
|
|
85
|
+
};
|
|
86
|
+
target: {
|
|
87
|
+
authority: string;
|
|
88
|
+
workspaceId: string;
|
|
89
|
+
profileId: string;
|
|
90
|
+
profileRevision: string;
|
|
91
|
+
profileSha256: string;
|
|
92
|
+
selectionCount: number;
|
|
93
|
+
};
|
|
94
|
+
replacementGeneration: number;
|
|
95
|
+
retainedLoadedCount: number;
|
|
96
|
+
retiredLoadedCount: number;
|
|
97
|
+
scope: string;
|
|
98
|
+
};
|
|
99
|
+
planDigest: string;
|
|
100
|
+
}>;
|
package/dist/sdk/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
export { readExecutionGrantPolicy, saveExecutionGrantPolicy, resolveExecutionGrant } from "../lib/execution-grant-client.js";
|
|
19
19
|
export type { ExecutionGrant, ExecutionGrantPolicy, ExecutionGrantRequest, ResolvedExecutionGrant } from "../lib/execution-grants.js";
|
|
20
20
|
export { HttpProfileClient, createProfileClient, type ProfileClient, type AuthenticatedProfilePrincipal, type AuthenticatedProfileRole } from "../lib/profile-client.js";
|
|
21
|
+
export { inspectSkillSession, reconcileSkillSession, type SessionReconciliationInput, type SessionReconciliationOptions } from "../lib/session-reconciliation.js";
|
|
21
22
|
export { resolveSelectedRun, executeSelectedLocal, prepareSelectedSecretBindings, type ResolvedSelectedRun, type SelectedLocalRunOptions } from "../lib/selected-run.js";
|
|
22
23
|
export { readSelectedSecretBindings, type SelectedSecretBindings, type SelectedSecretsClient } from "../lib/execution-secrets.js";
|
|
23
24
|
export type { SkillSelection, SkillProfile, ResolvedSkillSelection, ResolvedSkillProfile, StationSkillStateInput, StationSkillState } from "../types/skill-selection.js";
|
|
@@ -36,7 +37,7 @@ export * from "./events.js";
|
|
|
36
37
|
export * from "./spend.js";
|
|
37
38
|
export * from "./offline.js";
|
|
38
39
|
export * from "./execution/index.js";
|
|
39
|
-
export { RemoteSkillsClient, createRemoteSkillsClient, RemoteRequestError, RemoteRouteUnsupportedError, RemoteCapabilityUnavailableError, RemoteQuoteUnavailableError, RemoteWorkspaceMemberError } from "../lib/remote-client.js";
|
|
40
|
+
export { RemoteSkillsClient, createRemoteSkillsClient, RemoteRequestError, RemoteCreditCheckoutError, RemoteRouteUnsupportedError, RemoteCapabilityUnavailableError, RemoteQuoteUnavailableError, RemoteWorkspaceMemberError } from "../lib/remote-client.js";
|
|
40
41
|
export { RemoteSkillsPermissionError, type RemoteSkillsAccess, type RemoteSkillsPermissions } from "../lib/remote-permissions.js";
|
|
41
42
|
export * from "../lib/remote-recurring-contract.js";
|
|
42
43
|
export { RecurringInputError, RemoteRecurringError, RemoteRecurringUnavailableError, RemoteRecurringReadError, RemoteRecurringUnconfirmedError } from "../lib/remote-recurring.js";
|
|
@@ -60,3 +61,4 @@ export { InvitationEmailInputError, RemoteInvitationEmailError, RemoteInvitation
|
|
|
60
61
|
export { RemotePrivatePublicationsClient, PrivatePublicationError, PRIVATE_PUBLICATION_MAX_BYTES, type PrivatePublicationDeclaration, type PrivatePublicationView, type PrivatePublicationState, type PrivatePublishingCapability } from "../lib/remote-private-publications.js";
|
|
61
62
|
export { preparePrivatePublication, readPrivatePublicationRecovery, continuePrivatePublication, inspectPrivatePublication, type PrivatePublicationRecovery, type PrivatePublicationResult } from "../lib/private-publication-recovery.js";
|
|
62
63
|
export { createSkillOperationClient, SkillOperationClientError, SKILL_OPERATION_LIMITS, type SkillOperationClient, type SkillOperationTransport, type SkillOperationRequest, type SkillOperationResult, type SkillOperationJson, type SkillOperationRefusal, type SkillOperationClientErrorCode } from "./operations.js";
|
|
64
|
+
export type { RemoteCreditCheckoutOptions, RemoteCreditCheckout, RemoteCreditCheckoutErrorCode } from "../lib/remote-credit-checkout.js";
|