opensteer 0.8.18 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/{chunk-GQ3PGLYQ.js → chunk-656MQUSM.js} +452 -212
- package/dist/chunk-656MQUSM.js.map +1 -0
- package/dist/{chunk-T6TG4WO2.js → chunk-OIKLSFXA.js} +3 -3
- package/dist/{chunk-T6TG4WO2.js.map → chunk-OIKLSFXA.js.map} +1 -1
- package/dist/cli/bin.cjs +485 -220
- package/dist/cli/bin.cjs.map +1 -1
- package/dist/cli/bin.js +9 -7
- package/dist/cli/bin.js.map +1 -1
- package/dist/index.cjs +450 -210
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +19 -27
- package/dist/index.d.ts +19 -27
- package/dist/index.js +2 -2
- package/dist/opensteer-LKX3233A.js +4 -0
- package/dist/{opensteer-XMCWYUH3.js.map → opensteer-LKX3233A.js.map} +1 -1
- package/package.json +5 -5
- package/skills/README.md +9 -6
- package/skills/opensteer/SKILL.md +120 -243
- package/skills/recorder/SKILL.md +1 -1
- package/dist/chunk-GQ3PGLYQ.js.map +0 -1
- package/dist/opensteer-XMCWYUH3.js +0 -4
package/dist/index.d.cts
CHANGED
|
@@ -1222,7 +1222,7 @@ interface OpensteerReplayAttempt {
|
|
|
1222
1222
|
readonly note?: string;
|
|
1223
1223
|
readonly error?: string;
|
|
1224
1224
|
}
|
|
1225
|
-
type OpensteerSessionFetchTransport = "auto" | "direct" | "matched-tls" | "page";
|
|
1225
|
+
type OpensteerSessionFetchTransport = "auto" | "direct" | "matched-tls" | "context" | "page";
|
|
1226
1226
|
interface OpensteerSessionFetchInput {
|
|
1227
1227
|
readonly pageRef?: PageRef;
|
|
1228
1228
|
readonly url: string;
|
|
@@ -1427,25 +1427,6 @@ interface CloudSessionRecordingState {
|
|
|
1427
1427
|
readonly error?: string;
|
|
1428
1428
|
readonly result?: CloudSessionRecordingResult;
|
|
1429
1429
|
}
|
|
1430
|
-
interface CloudSelectorCacheImportEntry {
|
|
1431
|
-
readonly workspace: string;
|
|
1432
|
-
readonly method: string;
|
|
1433
|
-
readonly persistHash: string;
|
|
1434
|
-
readonly persist?: string;
|
|
1435
|
-
readonly path: unknown;
|
|
1436
|
-
readonly schemaHash?: string;
|
|
1437
|
-
readonly createdAt: number;
|
|
1438
|
-
readonly updatedAt: number;
|
|
1439
|
-
}
|
|
1440
|
-
interface CloudSelectorCacheImportRequest {
|
|
1441
|
-
readonly entries: readonly CloudSelectorCacheImportEntry[];
|
|
1442
|
-
}
|
|
1443
|
-
interface CloudSelectorCacheImportResponse {
|
|
1444
|
-
readonly imported: number;
|
|
1445
|
-
readonly inserted: number;
|
|
1446
|
-
readonly updated: number;
|
|
1447
|
-
readonly skipped: number;
|
|
1448
|
-
}
|
|
1449
1430
|
interface CloudRegistryImportEntry {
|
|
1450
1431
|
readonly workspace: string;
|
|
1451
1432
|
readonly recordId: string;
|
|
@@ -4018,6 +3999,7 @@ declare function resolveCloudConfig(input?: {
|
|
|
4018
3999
|
|
|
4019
4000
|
interface OpensteerRuntimeOperationOptions {
|
|
4020
4001
|
readonly signal?: AbortSignal;
|
|
4002
|
+
readonly timeoutMs?: number;
|
|
4021
4003
|
}
|
|
4022
4004
|
interface OpensteerSemanticRuntime {
|
|
4023
4005
|
info(options?: OpensteerRuntimeOperationOptions): Promise<OpensteerSessionInfo>;
|
|
@@ -4093,7 +4075,6 @@ interface OpensteerCloudSessionCreateInput {
|
|
|
4093
4075
|
readonly sourceType?: "manual" | "local-cloud";
|
|
4094
4076
|
readonly sourceRef?: string;
|
|
4095
4077
|
readonly localWorkspaceRootPath?: string;
|
|
4096
|
-
readonly locality?: "auto" | "off";
|
|
4097
4078
|
}
|
|
4098
4079
|
interface OpensteerCloudSessionDescriptor {
|
|
4099
4080
|
readonly sessionId: string;
|
|
@@ -4105,15 +4086,19 @@ interface OpensteerCloudSessionDescriptor {
|
|
|
4105
4086
|
interface OpensteerCloudSessionState {
|
|
4106
4087
|
readonly status?: string;
|
|
4107
4088
|
}
|
|
4089
|
+
interface CloudRequestOptions {
|
|
4090
|
+
readonly signal?: AbortSignal | undefined;
|
|
4091
|
+
readonly timeoutMs?: number | undefined;
|
|
4092
|
+
}
|
|
4108
4093
|
|
|
4109
4094
|
declare class OpensteerCloudClient {
|
|
4110
4095
|
private readonly config;
|
|
4111
4096
|
constructor(config: OpensteerCloudConfig);
|
|
4112
4097
|
getConfig(): OpensteerCloudConfig;
|
|
4113
|
-
createSession(input?: OpensteerCloudSessionCreateInput): Promise<OpensteerCloudSessionDescriptor>;
|
|
4098
|
+
createSession(input?: OpensteerCloudSessionCreateInput, options?: CloudRequestOptions): Promise<OpensteerCloudSessionDescriptor>;
|
|
4114
4099
|
listSessions(): Promise<unknown>;
|
|
4115
|
-
getSession(sessionId: string): Promise<OpensteerCloudSessionState>;
|
|
4116
|
-
issueAccess(sessionId: string, capabilities: readonly OpensteerSessionGrantKind[]): Promise<OpensteerSessionAccessGrantResponse>;
|
|
4100
|
+
getSession(sessionId: string, options?: CloudRequestOptions): Promise<OpensteerCloudSessionState>;
|
|
4101
|
+
issueAccess(sessionId: string, capabilities: readonly OpensteerSessionGrantKind[], options?: CloudRequestOptions): Promise<OpensteerSessionAccessGrantResponse>;
|
|
4117
4102
|
getSessionRecording(sessionId: string): Promise<CloudSessionRecordingState>;
|
|
4118
4103
|
startSessionRecording(sessionId: string): Promise<CloudSessionRecordingState>;
|
|
4119
4104
|
stopSessionRecording(sessionId: string): Promise<CloudSessionRecordingState>;
|
|
@@ -4125,8 +4110,8 @@ declare class OpensteerCloudClient {
|
|
|
4125
4110
|
}): Promise<BrowserProfileImportDescriptor>;
|
|
4126
4111
|
getBrowserProfileImport(importId: string): Promise<BrowserProfileImportDescriptor>;
|
|
4127
4112
|
syncBrowserProfileCookies(input: SyncBrowserProfileCookiesInput): Promise<BrowserProfileImportDescriptor>;
|
|
4128
|
-
importSelectorCache(entries: readonly CloudSelectorCacheImportEntry[]): Promise<CloudSelectorCacheImportResponse>;
|
|
4129
4113
|
importDescriptors(entries: readonly CloudRegistryImportEntry[]): Promise<CloudRegistryImportResponse>;
|
|
4114
|
+
importRequestPlans(input: CloudRequestPlanImportRequest): Promise<CloudRegistryImportResponse>;
|
|
4130
4115
|
buildAuthorizationHeader(): string;
|
|
4131
4116
|
private buildHeaders;
|
|
4132
4117
|
private request;
|
|
@@ -4177,6 +4162,7 @@ interface CloudSessionProxyOptions {
|
|
|
4177
4162
|
readonly rootDir?: string;
|
|
4178
4163
|
readonly rootPath?: string;
|
|
4179
4164
|
readonly workspace?: string;
|
|
4165
|
+
readonly policy?: OpensteerPolicy;
|
|
4180
4166
|
readonly cleanupRootOnClose?: boolean;
|
|
4181
4167
|
readonly observability?: Partial<ObservabilityConfig>;
|
|
4182
4168
|
}
|
|
@@ -4187,11 +4173,13 @@ declare class CloudSessionProxy implements OpensteerDisconnectableRuntime {
|
|
|
4187
4173
|
private readonly cleanupRootOnClose;
|
|
4188
4174
|
private readonly cloud;
|
|
4189
4175
|
private readonly observability;
|
|
4176
|
+
private readonly policy;
|
|
4190
4177
|
private sessionId;
|
|
4191
4178
|
private semanticGrant;
|
|
4192
4179
|
private client;
|
|
4193
4180
|
private automation;
|
|
4194
4181
|
private workspaceStore;
|
|
4182
|
+
private syncWorkspaceOnClose;
|
|
4195
4183
|
constructor(cloud: OpensteerCloudClient, options?: CloudSessionProxyOptions);
|
|
4196
4184
|
open(input?: OpensteerOpenInput): Promise<OpensteerOpenOutput>;
|
|
4197
4185
|
info(): Promise<OpensteerSessionInfo>;
|
|
@@ -4230,7 +4218,7 @@ declare class CloudSessionProxy implements OpensteerDisconnectableRuntime {
|
|
|
4230
4218
|
close(): Promise<OpensteerSessionCloseOutput>;
|
|
4231
4219
|
disconnect(): Promise<void>;
|
|
4232
4220
|
private ensureSession;
|
|
4233
|
-
private
|
|
4221
|
+
private syncWorkspaceToCloud;
|
|
4234
4222
|
private bindClient;
|
|
4235
4223
|
private ensureWorkspaceStore;
|
|
4236
4224
|
private loadPersistedSession;
|
|
@@ -4241,11 +4229,15 @@ declare class CloudSessionProxy implements OpensteerDisconnectableRuntime {
|
|
|
4241
4229
|
private requireAutomation;
|
|
4242
4230
|
private ensureSemanticGrant;
|
|
4243
4231
|
private handleSemanticClientError;
|
|
4232
|
+
private invokeSemanticOperation;
|
|
4233
|
+
private invokeAutomationOperation;
|
|
4234
|
+
private runOperationWithPolicy;
|
|
4244
4235
|
private shouldUseLocalCloudTransport;
|
|
4245
4236
|
}
|
|
4246
4237
|
|
|
4247
4238
|
declare function dispatchSemanticOperation(runtime: OpensteerSemanticRuntime, operation: OpensteerSemanticOperationName, input: unknown, options?: {
|
|
4248
4239
|
readonly signal?: AbortSignal;
|
|
4240
|
+
readonly timeoutMs?: number;
|
|
4249
4241
|
}): Promise<unknown>;
|
|
4250
4242
|
|
|
4251
4243
|
interface LocalChromeProfileDescriptor {
|
|
@@ -4283,4 +4275,4 @@ declare function discoverLocalCdpBrowsers(input?: {
|
|
|
4283
4275
|
readonly timeoutMs?: number;
|
|
4284
4276
|
}): Promise<readonly LocalCdpBrowserCandidate[]>;
|
|
4285
4277
|
|
|
4286
|
-
export { type AnchorTargetRef, type AppendTraceEntryInput, type ArtifactManifest, type ArtifactPayloadType, type ArtifactScope, type BrowserProfileArchiveFormat, type BrowserProfileCreateRequest, type BrowserProfileDescriptor, type BrowserProfileImportCreateRequest, type BrowserProfileImportCreateResponse, type BrowserProfileImportDescriptor, type BrowserProfileImportStatus, type BrowserProfileListResponse, type BrowserProfileStatus, type CloudBrowserContextConfig, type CloudBrowserExtensionConfig, type CloudBrowserLaunchConfig, type CloudBrowserProfileLaunchPreference, type CloudBrowserProfilePreference, type CloudFingerprintMode, type CloudFingerprintPreference, type CloudGeolocation, type CloudProxyMode, type CloudProxyPreference, type CloudProxyProtocol, type CloudRegistryImportEntry, type CloudRegistryImportRequest, type CloudRegistryImportResponse, type CloudRequestPlanImportEntry, type CloudRequestPlanImportRequest, type
|
|
4278
|
+
export { type AnchorTargetRef, type AppendTraceEntryInput, type ArtifactManifest, type ArtifactPayloadType, type ArtifactScope, type BrowserProfileArchiveFormat, type BrowserProfileCreateRequest, type BrowserProfileDescriptor, type BrowserProfileImportCreateRequest, type BrowserProfileImportCreateResponse, type BrowserProfileImportDescriptor, type BrowserProfileImportStatus, type BrowserProfileListResponse, type BrowserProfileStatus, type CloudBrowserContextConfig, type CloudBrowserExtensionConfig, type CloudBrowserLaunchConfig, type CloudBrowserProfileLaunchPreference, type CloudBrowserProfilePreference, type CloudFingerprintMode, type CloudFingerprintPreference, type CloudGeolocation, type CloudProxyMode, type CloudProxyPreference, type CloudProxyProtocol, type CloudRegistryImportEntry, type CloudRegistryImportRequest, type CloudRegistryImportResponse, type CloudRequestPlanImportEntry, type CloudRequestPlanImportRequest, type CloudSessionLaunchConfig, CloudSessionProxy, type CloudSessionProxyOptions, type CloudSessionSourceType, type CloudSessionStatus, type CloudSessionSummary, type CloudSessionVisibilityScope, type CloudViewport, type ContextHop, type CreateFilesystemOpensteerWorkspaceOptions, type CreateTraceRunInput, DEFAULT_OPENSTEER_ENGINE, DEFERRED_MATCH_ATTR_KEYS, type DescriptorRecord, type DescriptorRegistryStore, type DomActionBridge, type DomActionBridgeProvider, type DomActionOutcome, type DomActionPolicyOperation, type DomActionScrollAlignment, type DomActionScrollOptions, type DomActionSettleOptions, type DomActionTargetInspection, type DomArrayFieldSelector, type DomArrayRowMetadata, type DomArraySelector, type DomBuildPathInput, type DomClickInput, type DomDescriptorPayload, type DomDescriptorRecord, type DomDescriptorStore, type DomExtractArrayRowsInput, type DomExtractFieldSelector, type DomExtractFieldsInput, type DomExtractedArrayRow, type DomHoverInput, type DomInputInput, type DomPath, type DomReadDescriptorInput, type DomResolveTargetInput, type DomRuntime, type DomScrollInput, type DomTargetRef, type DomWriteDescriptorInput, type ElementPath, ElementPathError, type FallbackDecision, type FallbackEvaluationInput, type FallbackPolicy, FilesystemArtifactStore, type FilesystemObservationStore, type FilesystemOpensteerWorkspace, type InspectedCdpEndpoint, type InteractionTraceRecord, type InteractionTraceRegistryStore, type JsonArray, type JsonObject, type JsonPrimitive, type JsonValue, type ListObservationArtifactsInput, type ListObservationEventsInput, type LocalCdpBrowserCandidate, type LocalChromeProfileDescriptor, MATCH_ATTRIBUTE_PRIORITY, type MatchClause, OPENSTEER_DOM_ACTION_BRIDGE_SYMBOL, OPENSTEER_ENGINE_NAMES, OPENSTEER_FILESYSTEM_WORKSPACE_LAYOUT, OPENSTEER_FILESYSTEM_WORKSPACE_VERSION, Opensteer, type OpensteerAddInitScriptOptions, type OpensteerArtifactStore, OpensteerAttachAmbiguousError, type OpensteerBrowserCloneOptions, type OpensteerBrowserController, OpensteerBrowserManager, type OpensteerBrowserManagerOptions, type OpensteerBrowserState, type OpensteerBrowserStatus, type OpensteerClickOptions, OpensteerCloudClient, type OpensteerCloudConfig, type OpensteerCloudProviderOptions, type OpensteerCloudSessionCreateInput, type OpensteerCloudSessionDescriptor, type OpensteerComputerExecuteOptions, type OpensteerCookieJar, type OpensteerDisconnectableRuntime, type OpensteerDomController, type OpensteerEngineName, type OpensteerExtractOptions, type OpensteerExtractionDescriptorPayload, type OpensteerExtractionDescriptorRecord, type OpensteerExtractionDescriptorStore, type OpensteerFetchOptions, type OpensteerFetchedRouteResponse, type OpensteerGotoOptions, type OpensteerInputOptions, type OpensteerInterceptScriptOptions, type OpensteerLiveSessionProvider, type OpensteerLocalProviderOptions, type OpensteerNetworkController, type OpensteerNetworkDetailResult, type OpensteerNetworkQueryOptions, type OpensteerNetworkQueryResult, type OpensteerOptions, type OpensteerPolicy, type OpensteerProviderMode, type OpensteerProviderOptions, type OpensteerProviderSource, type OpensteerResolvedProvider, type OpensteerRouteHandlerResult, type OpensteerRouteOptions, type OpensteerRouteRegistration, OpensteerRuntime, type OpensteerRuntimeOptions, type OpensteerScrollOptions, type OpensteerSemanticRuntime, OpensteerSessionRuntime, type OpensteerSessionRuntimeOptions, type OpensteerStorageMap, type OpensteerTargetOptions, type OpensteerTraceStore, type OpensteerWaitForNetworkOptions, type OpensteerWaitForPageOptions, type OpensteerWorkspaceManifest, type PathNode, type PersistedCloudSessionRecord, type PersistedLocalBrowserSessionRecord, type PersistedSessionRecord, type ProtocolArtifactDelivery, type RegistryProvenance, type RegistryRecord, type ReplayElementPath, type RequestPlanRecord, type RequestPlanRegistryStore, type ResolveRegistryRecordInput, type ResolvedDomTarget, type RetryDecision, type RetryEvaluationInput, type RetryPolicy, STABLE_PRIMARY_ATTR_KEYS, type SavedNetworkQueryInput, type SavedNetworkStore, type SettleContext, type SettleDelayInput, type SettleObserver, type SettlePolicy, type SettleTrigger, type StoredArtifactPayload, type StoredArtifactRecord, type StructuralElementAnchor, type StructuredArtifactKind, type SyncBrowserProfileCookiesInput, type TimeoutExecutionContext, type TimeoutPolicy, type TimeoutResolutionInput, type TraceEntryRecord, type TraceRunManifest, type UpdateRequestPlanFreshnessInput, type WorkspaceBrowserBootstrap, type WorkspaceBrowserManifest, type WorkspaceLiveBrowserRecord, type WriteBinaryArtifactInput, type WriteDescriptorInput, type WriteInteractionTraceInput, type WriteRequestPlanInput, type WriteStructuredArtifactInput, assertProviderSupportsEngine, buildArrayFieldPathCandidates, buildDomDescriptorKey, buildDomDescriptorPayload, buildDomDescriptorVersion, buildPathCandidates, buildPathSelectorHint, buildSegmentSelector, clearPersistedSessionRecord, cloneElementPath, cloneReplayElementPath, cloneStructuralElementAnchor, createArtifactStore, createDomDescriptorStore, createDomRuntime, createFilesystemOpensteerWorkspace, createObservationStore, createOpensteerExtractionDescriptorStore, createOpensteerSemanticRuntime, defaultFallbackPolicy, defaultPolicy, defaultRetryPolicy, defaultSettlePolicy, defaultTimeoutPolicy, delayWithSignal, discoverLocalCdpBrowsers, dispatchSemanticOperation, hashDomDescriptorPersist, inspectCdpEndpoint, isCurrentUrlField, isValidCssAttributeKey, listLocalChromeProfiles, manifestToExternalBinaryLocation, normalizeExtractedValue, normalizeObservabilityConfig, normalizeOpensteerEngineName, normalizeOpensteerProviderMode, normalizeWorkspaceId, parseDomDescriptorRecord, parseExtractionDescriptorRecord, readPersistedCloudSessionRecord, readPersistedLocalBrowserSessionRecord, readPersistedSessionRecord, resolveCloudConfig, resolveCloudSessionRecordPath, resolveDomActionBridge, resolveExtractedValueInContext, resolveFilesystemWorkspacePath, resolveLiveSessionRecordPath, resolveLocalSessionRecordPath, resolveOpensteerEngineName, resolveOpensteerProvider, resolveOpensteerRuntimeConfig, runWithPolicyTimeout, sanitizeElementPath, sanitizeReplayElementPath, sanitizeStructuralElementAnchor, settleWithPolicy, shouldKeepAttributeForPath, writePersistedSessionRecord };
|
package/dist/index.d.ts
CHANGED
|
@@ -1222,7 +1222,7 @@ interface OpensteerReplayAttempt {
|
|
|
1222
1222
|
readonly note?: string;
|
|
1223
1223
|
readonly error?: string;
|
|
1224
1224
|
}
|
|
1225
|
-
type OpensteerSessionFetchTransport = "auto" | "direct" | "matched-tls" | "page";
|
|
1225
|
+
type OpensteerSessionFetchTransport = "auto" | "direct" | "matched-tls" | "context" | "page";
|
|
1226
1226
|
interface OpensteerSessionFetchInput {
|
|
1227
1227
|
readonly pageRef?: PageRef;
|
|
1228
1228
|
readonly url: string;
|
|
@@ -1427,25 +1427,6 @@ interface CloudSessionRecordingState {
|
|
|
1427
1427
|
readonly error?: string;
|
|
1428
1428
|
readonly result?: CloudSessionRecordingResult;
|
|
1429
1429
|
}
|
|
1430
|
-
interface CloudSelectorCacheImportEntry {
|
|
1431
|
-
readonly workspace: string;
|
|
1432
|
-
readonly method: string;
|
|
1433
|
-
readonly persistHash: string;
|
|
1434
|
-
readonly persist?: string;
|
|
1435
|
-
readonly path: unknown;
|
|
1436
|
-
readonly schemaHash?: string;
|
|
1437
|
-
readonly createdAt: number;
|
|
1438
|
-
readonly updatedAt: number;
|
|
1439
|
-
}
|
|
1440
|
-
interface CloudSelectorCacheImportRequest {
|
|
1441
|
-
readonly entries: readonly CloudSelectorCacheImportEntry[];
|
|
1442
|
-
}
|
|
1443
|
-
interface CloudSelectorCacheImportResponse {
|
|
1444
|
-
readonly imported: number;
|
|
1445
|
-
readonly inserted: number;
|
|
1446
|
-
readonly updated: number;
|
|
1447
|
-
readonly skipped: number;
|
|
1448
|
-
}
|
|
1449
1430
|
interface CloudRegistryImportEntry {
|
|
1450
1431
|
readonly workspace: string;
|
|
1451
1432
|
readonly recordId: string;
|
|
@@ -4018,6 +3999,7 @@ declare function resolveCloudConfig(input?: {
|
|
|
4018
3999
|
|
|
4019
4000
|
interface OpensteerRuntimeOperationOptions {
|
|
4020
4001
|
readonly signal?: AbortSignal;
|
|
4002
|
+
readonly timeoutMs?: number;
|
|
4021
4003
|
}
|
|
4022
4004
|
interface OpensteerSemanticRuntime {
|
|
4023
4005
|
info(options?: OpensteerRuntimeOperationOptions): Promise<OpensteerSessionInfo>;
|
|
@@ -4093,7 +4075,6 @@ interface OpensteerCloudSessionCreateInput {
|
|
|
4093
4075
|
readonly sourceType?: "manual" | "local-cloud";
|
|
4094
4076
|
readonly sourceRef?: string;
|
|
4095
4077
|
readonly localWorkspaceRootPath?: string;
|
|
4096
|
-
readonly locality?: "auto" | "off";
|
|
4097
4078
|
}
|
|
4098
4079
|
interface OpensteerCloudSessionDescriptor {
|
|
4099
4080
|
readonly sessionId: string;
|
|
@@ -4105,15 +4086,19 @@ interface OpensteerCloudSessionDescriptor {
|
|
|
4105
4086
|
interface OpensteerCloudSessionState {
|
|
4106
4087
|
readonly status?: string;
|
|
4107
4088
|
}
|
|
4089
|
+
interface CloudRequestOptions {
|
|
4090
|
+
readonly signal?: AbortSignal | undefined;
|
|
4091
|
+
readonly timeoutMs?: number | undefined;
|
|
4092
|
+
}
|
|
4108
4093
|
|
|
4109
4094
|
declare class OpensteerCloudClient {
|
|
4110
4095
|
private readonly config;
|
|
4111
4096
|
constructor(config: OpensteerCloudConfig);
|
|
4112
4097
|
getConfig(): OpensteerCloudConfig;
|
|
4113
|
-
createSession(input?: OpensteerCloudSessionCreateInput): Promise<OpensteerCloudSessionDescriptor>;
|
|
4098
|
+
createSession(input?: OpensteerCloudSessionCreateInput, options?: CloudRequestOptions): Promise<OpensteerCloudSessionDescriptor>;
|
|
4114
4099
|
listSessions(): Promise<unknown>;
|
|
4115
|
-
getSession(sessionId: string): Promise<OpensteerCloudSessionState>;
|
|
4116
|
-
issueAccess(sessionId: string, capabilities: readonly OpensteerSessionGrantKind[]): Promise<OpensteerSessionAccessGrantResponse>;
|
|
4100
|
+
getSession(sessionId: string, options?: CloudRequestOptions): Promise<OpensteerCloudSessionState>;
|
|
4101
|
+
issueAccess(sessionId: string, capabilities: readonly OpensteerSessionGrantKind[], options?: CloudRequestOptions): Promise<OpensteerSessionAccessGrantResponse>;
|
|
4117
4102
|
getSessionRecording(sessionId: string): Promise<CloudSessionRecordingState>;
|
|
4118
4103
|
startSessionRecording(sessionId: string): Promise<CloudSessionRecordingState>;
|
|
4119
4104
|
stopSessionRecording(sessionId: string): Promise<CloudSessionRecordingState>;
|
|
@@ -4125,8 +4110,8 @@ declare class OpensteerCloudClient {
|
|
|
4125
4110
|
}): Promise<BrowserProfileImportDescriptor>;
|
|
4126
4111
|
getBrowserProfileImport(importId: string): Promise<BrowserProfileImportDescriptor>;
|
|
4127
4112
|
syncBrowserProfileCookies(input: SyncBrowserProfileCookiesInput): Promise<BrowserProfileImportDescriptor>;
|
|
4128
|
-
importSelectorCache(entries: readonly CloudSelectorCacheImportEntry[]): Promise<CloudSelectorCacheImportResponse>;
|
|
4129
4113
|
importDescriptors(entries: readonly CloudRegistryImportEntry[]): Promise<CloudRegistryImportResponse>;
|
|
4114
|
+
importRequestPlans(input: CloudRequestPlanImportRequest): Promise<CloudRegistryImportResponse>;
|
|
4130
4115
|
buildAuthorizationHeader(): string;
|
|
4131
4116
|
private buildHeaders;
|
|
4132
4117
|
private request;
|
|
@@ -4177,6 +4162,7 @@ interface CloudSessionProxyOptions {
|
|
|
4177
4162
|
readonly rootDir?: string;
|
|
4178
4163
|
readonly rootPath?: string;
|
|
4179
4164
|
readonly workspace?: string;
|
|
4165
|
+
readonly policy?: OpensteerPolicy;
|
|
4180
4166
|
readonly cleanupRootOnClose?: boolean;
|
|
4181
4167
|
readonly observability?: Partial<ObservabilityConfig>;
|
|
4182
4168
|
}
|
|
@@ -4187,11 +4173,13 @@ declare class CloudSessionProxy implements OpensteerDisconnectableRuntime {
|
|
|
4187
4173
|
private readonly cleanupRootOnClose;
|
|
4188
4174
|
private readonly cloud;
|
|
4189
4175
|
private readonly observability;
|
|
4176
|
+
private readonly policy;
|
|
4190
4177
|
private sessionId;
|
|
4191
4178
|
private semanticGrant;
|
|
4192
4179
|
private client;
|
|
4193
4180
|
private automation;
|
|
4194
4181
|
private workspaceStore;
|
|
4182
|
+
private syncWorkspaceOnClose;
|
|
4195
4183
|
constructor(cloud: OpensteerCloudClient, options?: CloudSessionProxyOptions);
|
|
4196
4184
|
open(input?: OpensteerOpenInput): Promise<OpensteerOpenOutput>;
|
|
4197
4185
|
info(): Promise<OpensteerSessionInfo>;
|
|
@@ -4230,7 +4218,7 @@ declare class CloudSessionProxy implements OpensteerDisconnectableRuntime {
|
|
|
4230
4218
|
close(): Promise<OpensteerSessionCloseOutput>;
|
|
4231
4219
|
disconnect(): Promise<void>;
|
|
4232
4220
|
private ensureSession;
|
|
4233
|
-
private
|
|
4221
|
+
private syncWorkspaceToCloud;
|
|
4234
4222
|
private bindClient;
|
|
4235
4223
|
private ensureWorkspaceStore;
|
|
4236
4224
|
private loadPersistedSession;
|
|
@@ -4241,11 +4229,15 @@ declare class CloudSessionProxy implements OpensteerDisconnectableRuntime {
|
|
|
4241
4229
|
private requireAutomation;
|
|
4242
4230
|
private ensureSemanticGrant;
|
|
4243
4231
|
private handleSemanticClientError;
|
|
4232
|
+
private invokeSemanticOperation;
|
|
4233
|
+
private invokeAutomationOperation;
|
|
4234
|
+
private runOperationWithPolicy;
|
|
4244
4235
|
private shouldUseLocalCloudTransport;
|
|
4245
4236
|
}
|
|
4246
4237
|
|
|
4247
4238
|
declare function dispatchSemanticOperation(runtime: OpensteerSemanticRuntime, operation: OpensteerSemanticOperationName, input: unknown, options?: {
|
|
4248
4239
|
readonly signal?: AbortSignal;
|
|
4240
|
+
readonly timeoutMs?: number;
|
|
4249
4241
|
}): Promise<unknown>;
|
|
4250
4242
|
|
|
4251
4243
|
interface LocalChromeProfileDescriptor {
|
|
@@ -4283,4 +4275,4 @@ declare function discoverLocalCdpBrowsers(input?: {
|
|
|
4283
4275
|
readonly timeoutMs?: number;
|
|
4284
4276
|
}): Promise<readonly LocalCdpBrowserCandidate[]>;
|
|
4285
4277
|
|
|
4286
|
-
export { type AnchorTargetRef, type AppendTraceEntryInput, type ArtifactManifest, type ArtifactPayloadType, type ArtifactScope, type BrowserProfileArchiveFormat, type BrowserProfileCreateRequest, type BrowserProfileDescriptor, type BrowserProfileImportCreateRequest, type BrowserProfileImportCreateResponse, type BrowserProfileImportDescriptor, type BrowserProfileImportStatus, type BrowserProfileListResponse, type BrowserProfileStatus, type CloudBrowserContextConfig, type CloudBrowserExtensionConfig, type CloudBrowserLaunchConfig, type CloudBrowserProfileLaunchPreference, type CloudBrowserProfilePreference, type CloudFingerprintMode, type CloudFingerprintPreference, type CloudGeolocation, type CloudProxyMode, type CloudProxyPreference, type CloudProxyProtocol, type CloudRegistryImportEntry, type CloudRegistryImportRequest, type CloudRegistryImportResponse, type CloudRequestPlanImportEntry, type CloudRequestPlanImportRequest, type
|
|
4278
|
+
export { type AnchorTargetRef, type AppendTraceEntryInput, type ArtifactManifest, type ArtifactPayloadType, type ArtifactScope, type BrowserProfileArchiveFormat, type BrowserProfileCreateRequest, type BrowserProfileDescriptor, type BrowserProfileImportCreateRequest, type BrowserProfileImportCreateResponse, type BrowserProfileImportDescriptor, type BrowserProfileImportStatus, type BrowserProfileListResponse, type BrowserProfileStatus, type CloudBrowserContextConfig, type CloudBrowserExtensionConfig, type CloudBrowserLaunchConfig, type CloudBrowserProfileLaunchPreference, type CloudBrowserProfilePreference, type CloudFingerprintMode, type CloudFingerprintPreference, type CloudGeolocation, type CloudProxyMode, type CloudProxyPreference, type CloudProxyProtocol, type CloudRegistryImportEntry, type CloudRegistryImportRequest, type CloudRegistryImportResponse, type CloudRequestPlanImportEntry, type CloudRequestPlanImportRequest, type CloudSessionLaunchConfig, CloudSessionProxy, type CloudSessionProxyOptions, type CloudSessionSourceType, type CloudSessionStatus, type CloudSessionSummary, type CloudSessionVisibilityScope, type CloudViewport, type ContextHop, type CreateFilesystemOpensteerWorkspaceOptions, type CreateTraceRunInput, DEFAULT_OPENSTEER_ENGINE, DEFERRED_MATCH_ATTR_KEYS, type DescriptorRecord, type DescriptorRegistryStore, type DomActionBridge, type DomActionBridgeProvider, type DomActionOutcome, type DomActionPolicyOperation, type DomActionScrollAlignment, type DomActionScrollOptions, type DomActionSettleOptions, type DomActionTargetInspection, type DomArrayFieldSelector, type DomArrayRowMetadata, type DomArraySelector, type DomBuildPathInput, type DomClickInput, type DomDescriptorPayload, type DomDescriptorRecord, type DomDescriptorStore, type DomExtractArrayRowsInput, type DomExtractFieldSelector, type DomExtractFieldsInput, type DomExtractedArrayRow, type DomHoverInput, type DomInputInput, type DomPath, type DomReadDescriptorInput, type DomResolveTargetInput, type DomRuntime, type DomScrollInput, type DomTargetRef, type DomWriteDescriptorInput, type ElementPath, ElementPathError, type FallbackDecision, type FallbackEvaluationInput, type FallbackPolicy, FilesystemArtifactStore, type FilesystemObservationStore, type FilesystemOpensteerWorkspace, type InspectedCdpEndpoint, type InteractionTraceRecord, type InteractionTraceRegistryStore, type JsonArray, type JsonObject, type JsonPrimitive, type JsonValue, type ListObservationArtifactsInput, type ListObservationEventsInput, type LocalCdpBrowserCandidate, type LocalChromeProfileDescriptor, MATCH_ATTRIBUTE_PRIORITY, type MatchClause, OPENSTEER_DOM_ACTION_BRIDGE_SYMBOL, OPENSTEER_ENGINE_NAMES, OPENSTEER_FILESYSTEM_WORKSPACE_LAYOUT, OPENSTEER_FILESYSTEM_WORKSPACE_VERSION, Opensteer, type OpensteerAddInitScriptOptions, type OpensteerArtifactStore, OpensteerAttachAmbiguousError, type OpensteerBrowserCloneOptions, type OpensteerBrowserController, OpensteerBrowserManager, type OpensteerBrowserManagerOptions, type OpensteerBrowserState, type OpensteerBrowserStatus, type OpensteerClickOptions, OpensteerCloudClient, type OpensteerCloudConfig, type OpensteerCloudProviderOptions, type OpensteerCloudSessionCreateInput, type OpensteerCloudSessionDescriptor, type OpensteerComputerExecuteOptions, type OpensteerCookieJar, type OpensteerDisconnectableRuntime, type OpensteerDomController, type OpensteerEngineName, type OpensteerExtractOptions, type OpensteerExtractionDescriptorPayload, type OpensteerExtractionDescriptorRecord, type OpensteerExtractionDescriptorStore, type OpensteerFetchOptions, type OpensteerFetchedRouteResponse, type OpensteerGotoOptions, type OpensteerInputOptions, type OpensteerInterceptScriptOptions, type OpensteerLiveSessionProvider, type OpensteerLocalProviderOptions, type OpensteerNetworkController, type OpensteerNetworkDetailResult, type OpensteerNetworkQueryOptions, type OpensteerNetworkQueryResult, type OpensteerOptions, type OpensteerPolicy, type OpensteerProviderMode, type OpensteerProviderOptions, type OpensteerProviderSource, type OpensteerResolvedProvider, type OpensteerRouteHandlerResult, type OpensteerRouteOptions, type OpensteerRouteRegistration, OpensteerRuntime, type OpensteerRuntimeOptions, type OpensteerScrollOptions, type OpensteerSemanticRuntime, OpensteerSessionRuntime, type OpensteerSessionRuntimeOptions, type OpensteerStorageMap, type OpensteerTargetOptions, type OpensteerTraceStore, type OpensteerWaitForNetworkOptions, type OpensteerWaitForPageOptions, type OpensteerWorkspaceManifest, type PathNode, type PersistedCloudSessionRecord, type PersistedLocalBrowserSessionRecord, type PersistedSessionRecord, type ProtocolArtifactDelivery, type RegistryProvenance, type RegistryRecord, type ReplayElementPath, type RequestPlanRecord, type RequestPlanRegistryStore, type ResolveRegistryRecordInput, type ResolvedDomTarget, type RetryDecision, type RetryEvaluationInput, type RetryPolicy, STABLE_PRIMARY_ATTR_KEYS, type SavedNetworkQueryInput, type SavedNetworkStore, type SettleContext, type SettleDelayInput, type SettleObserver, type SettlePolicy, type SettleTrigger, type StoredArtifactPayload, type StoredArtifactRecord, type StructuralElementAnchor, type StructuredArtifactKind, type SyncBrowserProfileCookiesInput, type TimeoutExecutionContext, type TimeoutPolicy, type TimeoutResolutionInput, type TraceEntryRecord, type TraceRunManifest, type UpdateRequestPlanFreshnessInput, type WorkspaceBrowserBootstrap, type WorkspaceBrowserManifest, type WorkspaceLiveBrowserRecord, type WriteBinaryArtifactInput, type WriteDescriptorInput, type WriteInteractionTraceInput, type WriteRequestPlanInput, type WriteStructuredArtifactInput, assertProviderSupportsEngine, buildArrayFieldPathCandidates, buildDomDescriptorKey, buildDomDescriptorPayload, buildDomDescriptorVersion, buildPathCandidates, buildPathSelectorHint, buildSegmentSelector, clearPersistedSessionRecord, cloneElementPath, cloneReplayElementPath, cloneStructuralElementAnchor, createArtifactStore, createDomDescriptorStore, createDomRuntime, createFilesystemOpensteerWorkspace, createObservationStore, createOpensteerExtractionDescriptorStore, createOpensteerSemanticRuntime, defaultFallbackPolicy, defaultPolicy, defaultRetryPolicy, defaultSettlePolicy, defaultTimeoutPolicy, delayWithSignal, discoverLocalCdpBrowsers, dispatchSemanticOperation, hashDomDescriptorPersist, inspectCdpEndpoint, isCurrentUrlField, isValidCssAttributeKey, listLocalChromeProfiles, manifestToExternalBinaryLocation, normalizeExtractedValue, normalizeObservabilityConfig, normalizeOpensteerEngineName, normalizeOpensteerProviderMode, normalizeWorkspaceId, parseDomDescriptorRecord, parseExtractionDescriptorRecord, readPersistedCloudSessionRecord, readPersistedLocalBrowserSessionRecord, readPersistedSessionRecord, resolveCloudConfig, resolveCloudSessionRecordPath, resolveDomActionBridge, resolveExtractedValueInContext, resolveFilesystemWorkspacePath, resolveLiveSessionRecordPath, resolveLocalSessionRecordPath, resolveOpensteerEngineName, resolveOpensteerProvider, resolveOpensteerRuntimeConfig, runWithPolicyTimeout, sanitizeElementPath, sanitizeReplayElementPath, sanitizeStructuralElementAnchor, settleWithPolicy, shouldKeepAttributeForPath, writePersistedSessionRecord };
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import './chunk-KCINASQC.js';
|
|
2
|
-
export { Opensteer } from './chunk-
|
|
3
|
-
export { CloudSessionProxy, DEFAULT_OPENSTEER_ENGINE, DEFERRED_MATCH_ATTR_KEYS, ElementPathError, MATCH_ATTRIBUTE_PRIORITY, OPENSTEER_DOM_ACTION_BRIDGE_SYMBOL, OPENSTEER_ENGINE_NAMES, OPENSTEER_FILESYSTEM_WORKSPACE_LAYOUT, OPENSTEER_FILESYSTEM_WORKSPACE_VERSION, OpensteerAttachAmbiguousError, OpensteerBrowserManager, OpensteerCloudClient, OpensteerRuntime, OpensteerSessionRuntime, STABLE_PRIMARY_ATTR_KEYS, assertProviderSupportsEngine, buildArrayFieldPathCandidates, buildDomDescriptorKey, buildDomDescriptorPayload, buildDomDescriptorVersion, buildPathCandidates, buildPathSelectorHint, buildSegmentSelector, clearPersistedSessionRecord, cloneElementPath, cloneReplayElementPath, cloneStructuralElementAnchor, createArtifactStore, createDomDescriptorStore, createDomRuntime, createFilesystemOpensteerWorkspace, createObservationStore, createOpensteerExtractionDescriptorStore, createOpensteerSemanticRuntime, defaultFallbackPolicy, defaultPolicy, defaultRetryPolicy, defaultSettlePolicy, defaultTimeoutPolicy, delayWithSignal, discoverLocalCdpBrowsers, dispatchSemanticOperation, hashDomDescriptorPersist, inspectCdpEndpoint, isCurrentUrlField, isValidCssAttributeKey, listLocalChromeProfiles, manifestToExternalBinaryLocation, normalizeExtractedValue, normalizeObservabilityConfig, normalizeOpensteerEngineName, normalizeOpensteerProviderMode, normalizeWorkspaceId, parseDomDescriptorRecord, parseExtractionDescriptorRecord, readPersistedCloudSessionRecord, readPersistedLocalBrowserSessionRecord, readPersistedSessionRecord, resolveCloudConfig, resolveCloudSessionRecordPath, resolveDomActionBridge, resolveExtractedValueInContext, resolveFilesystemWorkspacePath, resolveLiveSessionRecordPath, resolveLocalSessionRecordPath, resolveOpensteerEngineName, resolveOpensteerProvider, resolveOpensteerRuntimeConfig, runWithPolicyTimeout, sanitizeElementPath, sanitizeReplayElementPath, sanitizeStructuralElementAnchor, settleWithPolicy, shouldKeepAttributeForPath, writePersistedSessionRecord } from './chunk-
|
|
2
|
+
export { Opensteer } from './chunk-OIKLSFXA.js';
|
|
3
|
+
export { CloudSessionProxy, DEFAULT_OPENSTEER_ENGINE, DEFERRED_MATCH_ATTR_KEYS, ElementPathError, MATCH_ATTRIBUTE_PRIORITY, OPENSTEER_DOM_ACTION_BRIDGE_SYMBOL, OPENSTEER_ENGINE_NAMES, OPENSTEER_FILESYSTEM_WORKSPACE_LAYOUT, OPENSTEER_FILESYSTEM_WORKSPACE_VERSION, OpensteerAttachAmbiguousError, OpensteerBrowserManager, OpensteerCloudClient, OpensteerRuntime, OpensteerSessionRuntime, STABLE_PRIMARY_ATTR_KEYS, assertProviderSupportsEngine, buildArrayFieldPathCandidates, buildDomDescriptorKey, buildDomDescriptorPayload, buildDomDescriptorVersion, buildPathCandidates, buildPathSelectorHint, buildSegmentSelector, clearPersistedSessionRecord, cloneElementPath, cloneReplayElementPath, cloneStructuralElementAnchor, createArtifactStore, createDomDescriptorStore, createDomRuntime, createFilesystemOpensteerWorkspace, createObservationStore, createOpensteerExtractionDescriptorStore, createOpensteerSemanticRuntime, defaultFallbackPolicy, defaultPolicy, defaultRetryPolicy, defaultSettlePolicy, defaultTimeoutPolicy, delayWithSignal, discoverLocalCdpBrowsers, dispatchSemanticOperation, hashDomDescriptorPersist, inspectCdpEndpoint, isCurrentUrlField, isValidCssAttributeKey, listLocalChromeProfiles, manifestToExternalBinaryLocation, normalizeExtractedValue, normalizeObservabilityConfig, normalizeOpensteerEngineName, normalizeOpensteerProviderMode, normalizeWorkspaceId, parseDomDescriptorRecord, parseExtractionDescriptorRecord, readPersistedCloudSessionRecord, readPersistedLocalBrowserSessionRecord, readPersistedSessionRecord, resolveCloudConfig, resolveCloudSessionRecordPath, resolveDomActionBridge, resolveExtractedValueInContext, resolveFilesystemWorkspacePath, resolveLiveSessionRecordPath, resolveLocalSessionRecordPath, resolveOpensteerEngineName, resolveOpensteerProvider, resolveOpensteerRuntimeConfig, runWithPolicyTimeout, sanitizeElementPath, sanitizeReplayElementPath, sanitizeStructuralElementAnchor, settleWithPolicy, shouldKeepAttributeForPath, writePersistedSessionRecord } from './chunk-656MQUSM.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"opensteer-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"opensteer-LKX3233A.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opensteer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Opensteer browser automation, replay, and reverse-engineering toolkit.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
"sharp": "^0.34.5",
|
|
57
57
|
"skills": "^1.4.6",
|
|
58
58
|
"ws": "^8.18.0",
|
|
59
|
-
"@opensteer/
|
|
60
|
-
"@opensteer/
|
|
59
|
+
"@opensteer/runtime-core": "0.2.0",
|
|
60
|
+
"@opensteer/engine-playwright": "0.8.6"
|
|
61
61
|
},
|
|
62
62
|
"optionalDependencies": {
|
|
63
63
|
"webcrack": "^2.15.1"
|
|
@@ -71,9 +71,9 @@
|
|
|
71
71
|
}
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
|
-
"@opensteer/browser-core": "0.7.
|
|
74
|
+
"@opensteer/browser-core": "0.7.8",
|
|
75
75
|
"@opensteer/engine-abp": "0.8.7",
|
|
76
|
-
"@opensteer/protocol": "0.
|
|
76
|
+
"@opensteer/protocol": "0.8.0"
|
|
77
77
|
},
|
|
78
78
|
"scripts": {
|
|
79
79
|
"build": "tsup && node ../../scripts/sync-package-skills.mjs",
|
package/skills/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Opensteer Skills
|
|
2
2
|
|
|
3
|
-
First-party Opensteer skills published from this repository. Install them through the upstream [`skills`](https://skills.sh) CLI into Claude Code,
|
|
3
|
+
First-party Opensteer skills published from this repository. Install them through the upstream [`skills`](https://skills.sh) CLI into Codex, Cursor, Claude Code, and other compatible agents.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -14,6 +14,12 @@ Install into Claude Code explicitly:
|
|
|
14
14
|
opensteer skills install --agent claude-code
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
+
Install into Codex, Cursor, and Claude Code explicitly:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
opensteer skills install --agent codex --agent cursor --agent claude-code
|
|
21
|
+
```
|
|
22
|
+
|
|
17
23
|
List the packaged skills without installing them:
|
|
18
24
|
|
|
19
25
|
```bash
|
|
@@ -22,7 +28,7 @@ opensteer skills install --list
|
|
|
22
28
|
|
|
23
29
|
## Available Skills
|
|
24
30
|
|
|
25
|
-
- `opensteer`:
|
|
31
|
+
- `opensteer`: browser automation, DOM extraction, session-state inspection, and browser-backed request replay with the Opensteer CLI and SDK
|
|
26
32
|
|
|
27
33
|
## Repository Layout
|
|
28
34
|
|
|
@@ -30,13 +36,10 @@ opensteer skills install --list
|
|
|
30
36
|
skills/
|
|
31
37
|
opensteer/
|
|
32
38
|
SKILL.md
|
|
33
|
-
references/
|
|
34
|
-
cli-reference.md
|
|
35
|
-
sdk-reference.md
|
|
36
|
-
request-workflow.md
|
|
37
39
|
```
|
|
38
40
|
|
|
39
41
|
## Maintainers
|
|
40
42
|
|
|
41
43
|
- Run `pnpm run skills:check` to verify that the upstream `skills` CLI can discover this repository.
|
|
42
44
|
- Keep each skill self-contained under `skills/<name>/` and keep links relative.
|
|
45
|
+
- Codex and Cursor load project skills from `.agents/skills/`; Claude Code loads them from `.claude/skills/`.
|