@yolk-sdk/agent 0.1.0-canary.13 → 0.1.0-canary.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.md +30 -2
  2. package/dist/oauth/error.d.mts +15 -0
  3. package/dist/oauth/error.d.mts.map +1 -0
  4. package/dist/oauth/error.mjs +19 -0
  5. package/dist/oauth/error.mjs.map +1 -0
  6. package/dist/oauth/index.d.mts +4 -0
  7. package/dist/oauth/index.mjs +4 -0
  8. package/dist/oauth/source.d.mts +19 -0
  9. package/dist/oauth/source.d.mts.map +1 -0
  10. package/dist/oauth/source.mjs +12 -0
  11. package/dist/oauth/source.mjs.map +1 -0
  12. package/dist/oauth/token.d.mts +30 -0
  13. package/dist/oauth/token.d.mts.map +1 -0
  14. package/dist/oauth/token.mjs +27 -0
  15. package/dist/oauth/token.mjs.map +1 -0
  16. package/dist/providers/anthropic/claude-provider.d.mts +77 -0
  17. package/dist/providers/anthropic/claude-provider.d.mts.map +1 -0
  18. package/dist/providers/anthropic/claude-provider.mjs +757 -0
  19. package/dist/providers/anthropic/claude-provider.mjs.map +1 -0
  20. package/dist/providers/anthropic/claude.d.mts +55 -0
  21. package/dist/providers/anthropic/claude.d.mts.map +1 -0
  22. package/dist/providers/anthropic/claude.mjs +97 -0
  23. package/dist/providers/anthropic/claude.mjs.map +1 -0
  24. package/dist/providers/anthropic/index.d.mts +2 -0
  25. package/dist/providers/anthropic/index.mjs +2 -0
  26. package/dist/providers/openai/codex-provider.d.mts +77 -0
  27. package/dist/providers/openai/codex-provider.d.mts.map +1 -0
  28. package/dist/providers/openai/codex-provider.mjs +493 -0
  29. package/dist/providers/openai/codex-provider.mjs.map +1 -0
  30. package/dist/providers/openai/codex.d.mts +52 -0
  31. package/dist/providers/openai/codex.d.mts.map +1 -0
  32. package/dist/providers/openai/codex.mjs +53 -0
  33. package/dist/providers/openai/codex.mjs.map +1 -0
  34. package/dist/providers/openai/index.d.mts +2 -0
  35. package/dist/providers/openai/index.mjs +2 -0
  36. package/dist/providers/openai/provider.d.mts +68 -0
  37. package/dist/providers/openai/provider.d.mts.map +1 -0
  38. package/dist/providers/openai/provider.mjs +239 -0
  39. package/dist/providers/openai/provider.mjs.map +1 -0
  40. package/dist/react/chat-core.d.mts +81 -0
  41. package/dist/react/chat-core.d.mts.map +1 -0
  42. package/dist/react/chat-core.mjs +169 -0
  43. package/dist/react/chat-core.mjs.map +1 -0
  44. package/dist/react/chat-items.d.mts +129 -0
  45. package/dist/react/chat-items.d.mts.map +1 -0
  46. package/dist/react/chat-items.mjs +171 -0
  47. package/dist/react/chat-items.mjs.map +1 -0
  48. package/dist/react/chat-messages.d.mts +134 -0
  49. package/dist/react/chat-messages.d.mts.map +1 -0
  50. package/dist/react/chat-messages.mjs +758 -0
  51. package/dist/react/chat-messages.mjs.map +1 -0
  52. package/dist/react/chat-session-events.d.mts +33 -0
  53. package/dist/react/chat-session-events.d.mts.map +1 -0
  54. package/dist/react/chat-session-events.mjs +29 -0
  55. package/dist/react/chat-session-events.mjs.map +1 -0
  56. package/dist/react/index.d.mts +6 -0
  57. package/dist/react/index.mjs +6 -0
  58. package/dist/react/use-agent-chat.d.mts +96 -0
  59. package/dist/react/use-agent-chat.d.mts.map +1 -0
  60. package/dist/react/use-agent-chat.mjs +262 -0
  61. package/dist/react/use-agent-chat.mjs.map +1 -0
  62. package/dist/skillset/command.d.mts +56 -0
  63. package/dist/skillset/command.d.mts.map +1 -0
  64. package/dist/skillset/command.mjs +135 -0
  65. package/dist/skillset/command.mjs.map +1 -0
  66. package/dist/skillset/errors.d.mts +13 -0
  67. package/dist/skillset/errors.d.mts.map +1 -0
  68. package/dist/skillset/errors.mjs +18 -0
  69. package/dist/skillset/errors.mjs.map +1 -0
  70. package/dist/skillset/index.d.mts +8 -0
  71. package/dist/skillset/index.mjs +8 -0
  72. package/dist/skillset/manifest.d.mts +33 -0
  73. package/dist/skillset/manifest.d.mts.map +1 -0
  74. package/dist/skillset/manifest.mjs +18 -0
  75. package/dist/skillset/manifest.mjs.map +1 -0
  76. package/dist/skillset/markdown.d.mts +17 -0
  77. package/dist/skillset/markdown.d.mts.map +1 -0
  78. package/dist/skillset/markdown.mjs +41 -0
  79. package/dist/skillset/markdown.mjs.map +1 -0
  80. package/dist/skillset/merge.d.mts +42 -0
  81. package/dist/skillset/merge.d.mts.map +1 -0
  82. package/dist/skillset/merge.mjs +32 -0
  83. package/dist/skillset/merge.mjs.map +1 -0
  84. package/dist/skillset/name.d.mts +10 -0
  85. package/dist/skillset/name.d.mts.map +1 -0
  86. package/dist/skillset/name.mjs +18 -0
  87. package/dist/skillset/name.mjs.map +1 -0
  88. package/dist/skillset/skill.d.mts +30 -0
  89. package/dist/skillset/skill.d.mts.map +1 -0
  90. package/dist/skillset/skill.mjs +47 -0
  91. package/dist/skillset/skill.mjs.map +1 -0
  92. package/dist/voice/index.d.mts +2 -0
  93. package/dist/voice/index.mjs +2 -0
  94. package/dist/voice/tool-bridge.d.mts +24 -0
  95. package/dist/voice/tool-bridge.d.mts.map +1 -0
  96. package/dist/voice/tool-bridge.mjs +44 -0
  97. package/dist/voice/tool-bridge.mjs.map +1 -0
  98. package/package.json +65 -2
  99. package/src/oauth/error.ts +17 -0
  100. package/src/oauth/index.ts +11 -0
  101. package/src/oauth/source.ts +36 -0
  102. package/src/oauth/token.ts +31 -0
  103. package/src/providers/anthropic/claude-provider.ts +1345 -0
  104. package/src/providers/anthropic/claude.ts +144 -0
  105. package/src/providers/anthropic/index.ts +21 -0
  106. package/src/providers/openai/codex-provider.ts +1014 -0
  107. package/src/providers/openai/codex.ts +76 -0
  108. package/src/providers/openai/index.ts +19 -0
  109. package/src/providers/openai/provider.ts +519 -0
  110. package/src/react/chat-core.ts +314 -0
  111. package/src/react/chat-items.ts +336 -0
  112. package/src/react/chat-messages.ts +1430 -0
  113. package/src/react/chat-session-events.ts +47 -0
  114. package/src/react/index.ts +66 -0
  115. package/src/react/use-agent-chat.ts +416 -0
  116. package/src/skillset/command.ts +196 -0
  117. package/src/skillset/errors.ts +16 -0
  118. package/src/skillset/index.ts +19 -0
  119. package/src/skillset/manifest.ts +16 -0
  120. package/src/skillset/markdown.ts +74 -0
  121. package/src/skillset/merge.ts +61 -0
  122. package/src/skillset/name.ts +28 -0
  123. package/src/skillset/skill.ts +72 -0
  124. package/src/voice/index.ts +6 -0
  125. package/src/voice/tool-bridge.ts +91 -0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @yolk-sdk/agent
2
2
 
3
- Domain-free agent protocol, loop, runtime, client, and tool primitives.
3
+ Domain-free agent protocol, loop, runtime, client, tools, providers, OAuth, React, skillset, and voice primitives.
4
4
 
5
5
  Root export is intentionally tiny. Import feature APIs from explicit subpaths.
6
6
 
@@ -10,6 +10,8 @@ Root export is intentionally tiny. Import feature APIs from explicit subpaths.
10
10
  pnpm add @yolk-sdk/agent@canary effect
11
11
  ```
12
12
 
13
+ Add `react` if you use `@yolk-sdk/agent/react`.
14
+
13
15
  Canary APIs are unstable. Keep all `@yolk-sdk/*` packages on the same version.
14
16
 
15
17
  ## Subpaths
@@ -22,6 +24,17 @@ Canary APIs are unstable. Keep all `@yolk-sdk/*` packages on the same version.
22
24
  | `@yolk-sdk/agent/runtime` | Transcript or append-backed runtime orchestration |
23
25
  | `@yolk-sdk/agent/client` | HTTP/NDJSON transport, HITL resume, and client state helpers |
24
26
  | `@yolk-sdk/agent/tools` | Tool module registry, `makeTool`, task/question tool contracts |
27
+ | `@yolk-sdk/agent/react` | Headless React chat hook, reducer, selectors, and render model |
28
+ | `@yolk-sdk/agent/oauth` | Provider-neutral OAuth token and broker contracts |
29
+ | `@yolk-sdk/agent/providers/openai` | OpenAI/Codex OAuth and provider mechanics |
30
+ | `@yolk-sdk/agent/providers/openai/codex` | OpenAI Codex request and auth helpers |
31
+ | `@yolk-sdk/agent/providers/openai/codex-provider` | Codex LLM provider factory |
32
+ | `@yolk-sdk/agent/providers/openai/provider` | OpenAI-compatible LLM provider factory |
33
+ | `@yolk-sdk/agent/providers/anthropic` | Anthropic/Claude OAuth and provider mechanics |
34
+ | `@yolk-sdk/agent/providers/anthropic/claude` | Claude request and auth helpers |
35
+ | `@yolk-sdk/agent/providers/anthropic/claude-provider` | Claude LLM provider factory |
36
+ | `@yolk-sdk/agent/skillset` | Portable skill and slash-command parsing/catalogs |
37
+ | `@yolk-sdk/agent/voice` | Provider-neutral voice tool-call bridge |
25
38
 
26
39
  ## Imports
27
40
 
@@ -41,8 +54,21 @@ import {
41
54
  makeQuestionToolModule,
42
55
  resolveTools
43
56
  } from '@yolk-sdk/agent/tools'
57
+ import { useAgentChat } from '@yolk-sdk/agent/react'
58
+ import { makeOpenAiProviderLayer } from '@yolk-sdk/agent/providers/openai/provider'
44
59
  ```
45
60
 
61
+ ## Import migration
62
+
63
+ | Old package | New subpath |
64
+ | --- | --- |
65
+ | `@yolk-sdk/react` | `@yolk-sdk/agent/react` |
66
+ | `@yolk-sdk/oauth` | `@yolk-sdk/agent/oauth` |
67
+ | `@yolk-sdk/openai/*` | `@yolk-sdk/agent/providers/openai/*` |
68
+ | `@yolk-sdk/anthropic/*` | `@yolk-sdk/agent/providers/anthropic/*` |
69
+ | `@yolk-sdk/skillset` | `@yolk-sdk/agent/skillset` |
70
+ | `@yolk-sdk/voice-runtime` | `@yolk-sdk/agent/voice` |
71
+
46
72
  Test helpers live behind their own subpath:
47
73
 
48
74
  ```ts
@@ -160,7 +186,9 @@ See `examples/next/lib/agents/workflow-runtime/text-response.ts` for host-owned
160
186
 
161
187
  ## Boundaries
162
188
 
163
- - No React, Next.js, provider SDKs, auth, storage drivers, or app concepts.
189
+ - Core loop/protocol/runtime/tools have no React, Next.js, provider SDKs, auth, storage drivers, or app concepts.
190
+ - `@yolk-sdk/agent/react` is headless and uses React as an optional peer.
191
+ - Provider subpaths own vendor wire/auth mechanics only; hosts own token storage, refresh, routing, and policy.
164
192
  - Loop stays stateless: transcript in, events out.
165
193
  - Runtime owns generic session orchestration only; host apps own persistence adapters and policy.
166
194
  - Tools model generic metadata/execution; host apps own concrete tool catalogs.
@@ -0,0 +1,15 @@
1
+ import * as Schema from "effect/Schema";
2
+
3
+ //#region src/oauth/error.d.ts
4
+ declare const OAuthErrorCause: Schema.Literals<readonly ["broker_error", "credential_missing", "credential_invalid", "refresh_failed", "unauthorized"]>;
5
+ type OAuthErrorCause = typeof OAuthErrorCause.Type;
6
+ declare const OAuthError_base: Schema.Class<OAuthError, Schema.TaggedStruct<"OAuthError", {
7
+ readonly cause: Schema.Literals<readonly ["broker_error", "credential_missing", "credential_invalid", "refresh_failed", "unauthorized"]>;
8
+ readonly message: Schema.String;
9
+ readonly status: Schema.optional<Schema.Number>;
10
+ readonly underlying: Schema.optional<Schema.Unknown>;
11
+ }>, import("effect/Cause").YieldableError>;
12
+ declare class OAuthError extends OAuthError_base {}
13
+ //#endregion
14
+ export { OAuthError, OAuthErrorCause };
15
+ //# sourceMappingURL=error.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.mts","names":[],"sources":["../../src/oauth/error.ts"],"mappings":";;;cAEa,eAAA,EAAe,MAAA,CAAA,QAAA;AAAA,KAOhB,eAAA,UAAyB,eAAA,CAAgB,IAAI;AAAA,cAAA,eAAA;;;;;;cAE5C,UAAA,SAAmB,eAK9B"}
@@ -0,0 +1,19 @@
1
+ import * as Schema from "effect/Schema";
2
+ //#region src/oauth/error.ts
3
+ const OAuthErrorCause = Schema.Literals([
4
+ "broker_error",
5
+ "credential_missing",
6
+ "credential_invalid",
7
+ "refresh_failed",
8
+ "unauthorized"
9
+ ]);
10
+ var OAuthError = class extends Schema.TaggedErrorClass()("OAuthError", {
11
+ cause: OAuthErrorCause,
12
+ message: Schema.String,
13
+ status: Schema.optional(Schema.Number),
14
+ underlying: Schema.optional(Schema.Unknown)
15
+ }) {};
16
+ //#endregion
17
+ export { OAuthError, OAuthErrorCause };
18
+
19
+ //# sourceMappingURL=error.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.mjs","names":[],"sources":["../../src/oauth/error.ts"],"sourcesContent":["import * as Schema from 'effect/Schema'\n\nexport const OAuthErrorCause = Schema.Literals([\n 'broker_error',\n 'credential_missing',\n 'credential_invalid',\n 'refresh_failed',\n 'unauthorized'\n])\nexport type OAuthErrorCause = typeof OAuthErrorCause.Type\n\nexport class OAuthError extends Schema.TaggedErrorClass<OAuthError>()('OAuthError', {\n cause: OAuthErrorCause,\n message: Schema.String,\n status: Schema.optional(Schema.Number),\n underlying: Schema.optional(Schema.Unknown)\n}) {}\n"],"mappings":";;AAEA,MAAa,kBAAkB,OAAO,SAAS;CAC7C;CACA;CACA;CACA;CACA;AACF,CAAC;AAGD,IAAa,aAAb,cAAgC,OAAO,iBAA6B,EAAE,cAAc;CAClF,OAAO;CACP,SAAS,OAAO;CAChB,QAAQ,OAAO,SAAS,OAAO,MAAM;CACrC,YAAY,OAAO,SAAS,OAAO,OAAO;AAC5C,CAAC,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { OAuthError, OAuthErrorCause } from "./error.mjs";
2
+ import { OAuthAccessToken, TokenBrokerRequest, TokenBrokerResponse, isTokenFresh, shouldRefreshToken, tokenRemainingTtlMs } from "./token.mjs";
3
+ import { OAuthCredentialRequest, OAuthCredentialSource, TokenBrokerClient, credentialSourceFromBroker } from "./source.mjs";
4
+ export { OAuthAccessToken, type OAuthCredentialRequest, type OAuthCredentialSource, OAuthError, OAuthErrorCause, type TokenBrokerClient, TokenBrokerRequest, TokenBrokerResponse, credentialSourceFromBroker, isTokenFresh, shouldRefreshToken, tokenRemainingTtlMs };
@@ -0,0 +1,4 @@
1
+ import { OAuthError, OAuthErrorCause } from "./error.mjs";
2
+ import { OAuthAccessToken, TokenBrokerRequest, TokenBrokerResponse, isTokenFresh, shouldRefreshToken, tokenRemainingTtlMs } from "./token.mjs";
3
+ import { credentialSourceFromBroker } from "./source.mjs";
4
+ export { OAuthAccessToken, OAuthError, OAuthErrorCause, TokenBrokerRequest, TokenBrokerResponse, credentialSourceFromBroker, isTokenFresh, shouldRefreshToken, tokenRemainingTtlMs };
@@ -0,0 +1,19 @@
1
+ import { OAuthError } from "./error.mjs";
2
+ import { OAuthAccessToken, TokenBrokerRequest } from "./token.mjs";
3
+ import { Effect } from "effect";
4
+
5
+ //#region src/oauth/source.d.ts
6
+ type OAuthCredentialRequest = {
7
+ readonly minTtlSeconds?: number;
8
+ readonly forceRefresh?: boolean;
9
+ };
10
+ type OAuthCredentialSource = {
11
+ readonly getAccessToken: (request: OAuthCredentialRequest) => Effect.Effect<OAuthAccessToken, OAuthError>;
12
+ };
13
+ type TokenBrokerClient = {
14
+ readonly getAccessToken: (request: TokenBrokerRequest) => Effect.Effect<OAuthAccessToken, OAuthError>;
15
+ };
16
+ declare const credentialSourceFromBroker: (broker: TokenBrokerClient, request: Omit<TokenBrokerRequest, "minTtlSeconds" | "forceRefresh">) => OAuthCredentialSource;
17
+ //#endregion
18
+ export { OAuthCredentialRequest, OAuthCredentialSource, TokenBrokerClient, credentialSourceFromBroker };
19
+ //# sourceMappingURL=source.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.d.mts","names":[],"sources":["../../src/oauth/source.ts"],"mappings":";;;;;KAKY,sBAAA;EAAA,SACD,aAAA;EAAA,SACA,YAAY;AAAA;AAAA,KAGX,qBAAA;EAAA,SACD,cAAA,GACP,OAAA,EAAS,sBAAA,KACN,MAAA,CAAO,MAAA,CAAO,gBAAA,EAAkB,UAAA;AAAA;AAAA,KAG3B,iBAAA;EAAA,SACD,cAAA,GACP,OAAA,EAAS,kBAAA,KACN,MAAA,CAAO,MAAA,CAAO,gBAAA,EAAkB,UAAA;AAAA;AAAA,cAG1B,0BAAA,GACX,MAAA,EAAQ,iBAAA,EACR,OAAA,EAAS,IAAA,CAAK,kBAAA,wCACb,qBAAA"}
@@ -0,0 +1,12 @@
1
+ import { TokenBrokerRequest } from "./token.mjs";
2
+ //#region src/oauth/source.ts
3
+ const credentialSourceFromBroker = (broker, request) => ({ getAccessToken: (input) => broker.getAccessToken(new TokenBrokerRequest({
4
+ provider: request.provider,
5
+ subjectId: request.subjectId,
6
+ minTtlSeconds: input.minTtlSeconds,
7
+ forceRefresh: input.forceRefresh
8
+ })) });
9
+ //#endregion
10
+ export { credentialSourceFromBroker };
11
+
12
+ //# sourceMappingURL=source.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.mjs","names":[],"sources":["../../src/oauth/source.ts"],"sourcesContent":["import type { Effect } from 'effect'\nimport type { OAuthError } from './error.ts'\nimport { TokenBrokerRequest } from './token.ts'\nimport type { OAuthAccessToken } from './token.ts'\n\nexport type OAuthCredentialRequest = {\n readonly minTtlSeconds?: number\n readonly forceRefresh?: boolean\n}\n\nexport type OAuthCredentialSource = {\n readonly getAccessToken: (\n request: OAuthCredentialRequest\n ) => Effect.Effect<OAuthAccessToken, OAuthError>\n}\n\nexport type TokenBrokerClient = {\n readonly getAccessToken: (\n request: TokenBrokerRequest\n ) => Effect.Effect<OAuthAccessToken, OAuthError>\n}\n\nexport const credentialSourceFromBroker = (\n broker: TokenBrokerClient,\n request: Omit<TokenBrokerRequest, 'minTtlSeconds' | 'forceRefresh'>\n): OAuthCredentialSource => ({\n getAccessToken: input =>\n broker.getAccessToken(\n new TokenBrokerRequest({\n provider: request.provider,\n subjectId: request.subjectId,\n minTtlSeconds: input.minTtlSeconds,\n forceRefresh: input.forceRefresh\n })\n )\n})\n"],"mappings":";;AAsBA,MAAa,8BACX,QACA,aAC2B,EAC3B,iBAAgB,UACd,OAAO,eACL,IAAI,mBAAmB;CACrB,UAAU,QAAQ;CAClB,WAAW,QAAQ;CACnB,eAAe,MAAM;CACrB,cAAc,MAAM;AACtB,CAAC,CACH,EACJ"}
@@ -0,0 +1,30 @@
1
+ import * as Schema from "effect/Schema";
2
+
3
+ //#region src/oauth/token.d.ts
4
+ declare const OAuthAccessToken_base: Schema.Class<OAuthAccessToken, Schema.Struct<{
5
+ readonly provider: Schema.String;
6
+ readonly accessToken: Schema.String;
7
+ readonly expiresAt: Schema.Number;
8
+ readonly accountId: Schema.optional<Schema.String>;
9
+ }>, {}>;
10
+ declare class OAuthAccessToken extends OAuthAccessToken_base {}
11
+ declare const TokenBrokerRequest_base: Schema.Class<TokenBrokerRequest, Schema.Struct<{
12
+ readonly provider: Schema.String;
13
+ readonly subjectId: Schema.String;
14
+ readonly minTtlSeconds: Schema.optional<Schema.Number>;
15
+ readonly forceRefresh: Schema.optional<Schema.Boolean>;
16
+ }>, {}>;
17
+ declare class TokenBrokerRequest extends TokenBrokerRequest_base {}
18
+ declare const TokenBrokerResponse_base: Schema.Class<TokenBrokerResponse, Schema.Struct<{
19
+ readonly provider: Schema.String;
20
+ readonly accessToken: Schema.String;
21
+ readonly expiresAt: Schema.Number;
22
+ readonly accountId: Schema.optional<Schema.String>;
23
+ }>, {}>;
24
+ declare class TokenBrokerResponse extends TokenBrokerResponse_base {}
25
+ declare const tokenRemainingTtlMs: (token: OAuthAccessToken, nowMs: number) => number;
26
+ declare const isTokenFresh: (token: OAuthAccessToken, nowMs: number, minTtlMs: number) => boolean;
27
+ declare const shouldRefreshToken: (token: OAuthAccessToken, nowMs: number, minTtlMs: number) => boolean;
28
+ //#endregion
29
+ export { OAuthAccessToken, TokenBrokerRequest, TokenBrokerResponse, isTokenFresh, shouldRefreshToken, tokenRemainingTtlMs };
30
+ //# sourceMappingURL=token.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.mts","names":[],"sources":["../../src/oauth/token.ts"],"mappings":";;;cAAuC,qBAAA;;;;;;cAE1B,gBAAA,SAAyB,qBAKpC;AAAA,cAAG,uBAAA;;;;;;cAEQ,kBAAA,SAA2B,uBAKtC;AAAA,cAAG,wBAAA;;;;;;cAEQ,mBAAA,SAA4B,wBAKvC;AAAA,cAEW,mBAAA,GAAuB,KAAA,EAAO,gBAAgB,EAAE,KAAA;AAAA,cAGhD,YAAA,GAAgB,KAAA,EAAO,gBAAgB,EAAE,KAAA,UAAe,QAAA;AAAA,cAGxD,kBAAA,GAAsB,KAAA,EAAO,gBAAgB,EAAE,KAAA,UAAe,QAAA"}
@@ -0,0 +1,27 @@
1
+ import * as Schema from "effect/Schema";
2
+ //#region src/oauth/token.ts
3
+ var OAuthAccessToken = class extends Schema.Class("OAuthAccessToken")({
4
+ provider: Schema.String,
5
+ accessToken: Schema.String,
6
+ expiresAt: Schema.Number,
7
+ accountId: Schema.optional(Schema.String)
8
+ }) {};
9
+ var TokenBrokerRequest = class extends Schema.Class("TokenBrokerRequest")({
10
+ provider: Schema.String,
11
+ subjectId: Schema.String,
12
+ minTtlSeconds: Schema.optional(Schema.Number),
13
+ forceRefresh: Schema.optional(Schema.Boolean)
14
+ }) {};
15
+ var TokenBrokerResponse = class extends Schema.Class("TokenBrokerResponse")({
16
+ provider: Schema.String,
17
+ accessToken: Schema.String,
18
+ expiresAt: Schema.Number,
19
+ accountId: Schema.optional(Schema.String)
20
+ }) {};
21
+ const tokenRemainingTtlMs = (token, nowMs) => Math.max(0, token.expiresAt - nowMs);
22
+ const isTokenFresh = (token, nowMs, minTtlMs) => tokenRemainingTtlMs(token, nowMs) >= minTtlMs;
23
+ const shouldRefreshToken = (token, nowMs, minTtlMs) => !isTokenFresh(token, nowMs, minTtlMs);
24
+ //#endregion
25
+ export { OAuthAccessToken, TokenBrokerRequest, TokenBrokerResponse, isTokenFresh, shouldRefreshToken, tokenRemainingTtlMs };
26
+
27
+ //# sourceMappingURL=token.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.mjs","names":[],"sources":["../../src/oauth/token.ts"],"sourcesContent":["import * as Schema from 'effect/Schema'\n\nexport class OAuthAccessToken extends Schema.Class<OAuthAccessToken>('OAuthAccessToken')({\n provider: Schema.String,\n accessToken: Schema.String,\n expiresAt: Schema.Number,\n accountId: Schema.optional(Schema.String)\n}) {}\n\nexport class TokenBrokerRequest extends Schema.Class<TokenBrokerRequest>('TokenBrokerRequest')({\n provider: Schema.String,\n subjectId: Schema.String,\n minTtlSeconds: Schema.optional(Schema.Number),\n forceRefresh: Schema.optional(Schema.Boolean)\n}) {}\n\nexport class TokenBrokerResponse extends Schema.Class<TokenBrokerResponse>('TokenBrokerResponse')({\n provider: Schema.String,\n accessToken: Schema.String,\n expiresAt: Schema.Number,\n accountId: Schema.optional(Schema.String)\n}) {}\n\nexport const tokenRemainingTtlMs = (token: OAuthAccessToken, nowMs: number) =>\n Math.max(0, token.expiresAt - nowMs)\n\nexport const isTokenFresh = (token: OAuthAccessToken, nowMs: number, minTtlMs: number) =>\n tokenRemainingTtlMs(token, nowMs) >= minTtlMs\n\nexport const shouldRefreshToken = (token: OAuthAccessToken, nowMs: number, minTtlMs: number) =>\n !isTokenFresh(token, nowMs, minTtlMs)\n"],"mappings":";;AAEA,IAAa,mBAAb,cAAsC,OAAO,MAAwB,kBAAkB,EAAE;CACvF,UAAU,OAAO;CACjB,aAAa,OAAO;CACpB,WAAW,OAAO;CAClB,WAAW,OAAO,SAAS,OAAO,MAAM;AAC1C,CAAC,EAAE,CAAC;AAEJ,IAAa,qBAAb,cAAwC,OAAO,MAA0B,oBAAoB,EAAE;CAC7F,UAAU,OAAO;CACjB,WAAW,OAAO;CAClB,eAAe,OAAO,SAAS,OAAO,MAAM;CAC5C,cAAc,OAAO,SAAS,OAAO,OAAO;AAC9C,CAAC,EAAE,CAAC;AAEJ,IAAa,sBAAb,cAAyC,OAAO,MAA2B,qBAAqB,EAAE;CAChG,UAAU,OAAO;CACjB,aAAa,OAAO;CACpB,WAAW,OAAO;CAClB,WAAW,OAAO,SAAS,OAAO,MAAM;AAC1C,CAAC,EAAE,CAAC;AAEJ,MAAa,uBAAuB,OAAyB,UAC3D,KAAK,IAAI,GAAG,MAAM,YAAY,KAAK;AAErC,MAAa,gBAAgB,OAAyB,OAAe,aACnE,oBAAoB,OAAO,KAAK,KAAK;AAEvC,MAAa,sBAAsB,OAAyB,OAAe,aACzE,CAAC,aAAa,OAAO,OAAO,QAAQ"}
@@ -0,0 +1,77 @@
1
+ import { Effect, Layer, Stream } from "effect";
2
+ import { HttpClient, HttpClientResponse } from "effect/unstable/http";
3
+ import { LLMError, LLMEvent, LLMProvider, LLMRequest } from "@yolk-sdk/agent/loop";
4
+ import { OAuthAccessToken } from "@yolk-sdk/agent/oauth";
5
+
6
+ //#region src/providers/anthropic/claude-provider.d.ts
7
+ type AnthropicClaudeProviderConfig = {
8
+ readonly token: OAuthAccessToken;
9
+ readonly messagesUrl?: string;
10
+ readonly maxTokens?: number;
11
+ readonly extraHeaders?: Readonly<Record<string, string>>;
12
+ };
13
+ type AnthropicTextBlock = {
14
+ readonly type: 'text';
15
+ readonly text: string;
16
+ };
17
+ type AnthropicSystemBlock = AnthropicTextBlock;
18
+ type AnthropicImageBlock = {
19
+ readonly type: 'image';
20
+ readonly source: {
21
+ readonly type: 'base64';
22
+ readonly media_type: string;
23
+ readonly data: string;
24
+ };
25
+ };
26
+ type AnthropicDocumentBlock = {
27
+ readonly type: 'document';
28
+ readonly source: {
29
+ readonly type: 'base64';
30
+ readonly media_type: 'application/pdf';
31
+ readonly data: string;
32
+ };
33
+ readonly title?: string;
34
+ };
35
+ type AnthropicToolUseBlock = {
36
+ readonly type: 'tool_use';
37
+ readonly id: string;
38
+ readonly name: string;
39
+ readonly input: unknown;
40
+ };
41
+ type AnthropicToolResultBlock = {
42
+ readonly type: 'tool_result';
43
+ readonly tool_use_id: string;
44
+ readonly content: string;
45
+ readonly is_error?: boolean;
46
+ };
47
+ type AnthropicUserBlock = AnthropicTextBlock | AnthropicImageBlock | AnthropicDocumentBlock | AnthropicToolResultBlock;
48
+ type AnthropicAssistantBlock = AnthropicTextBlock | AnthropicToolUseBlock;
49
+ type AnthropicMessage = {
50
+ readonly role: 'user';
51
+ readonly content: string | ReadonlyArray<AnthropicUserBlock>;
52
+ } | {
53
+ readonly role: 'assistant';
54
+ readonly content: ReadonlyArray<AnthropicAssistantBlock>;
55
+ };
56
+ type AnthropicTool = {
57
+ readonly name: string;
58
+ readonly description: string;
59
+ readonly input_schema: unknown;
60
+ };
61
+ type AnthropicRequestBody = {
62
+ readonly model: string;
63
+ readonly system: ReadonlyArray<AnthropicSystemBlock>;
64
+ readonly messages: ReadonlyArray<AnthropicMessage>;
65
+ readonly max_tokens: number;
66
+ readonly stream?: true;
67
+ readonly tools?: ReadonlyArray<AnthropicTool>;
68
+ };
69
+ declare const toAnthropicClaudeRequestBody: (request: LLMRequest, config?: {
70
+ readonly maxTokens?: number;
71
+ readonly stream?: boolean;
72
+ }) => Effect.Effect<AnthropicRequestBody, LLMError>;
73
+ declare const streamAnthropicClaudeResponse: (response: HttpClientResponse.HttpClientResponse) => Stream.Stream<LLMEvent, LLMError>;
74
+ declare const makeAnthropicClaudeProviderLayer: (config: AnthropicClaudeProviderConfig) => Layer.Layer<LLMProvider, never, HttpClient.HttpClient>;
75
+ //#endregion
76
+ export { AnthropicClaudeProviderConfig, makeAnthropicClaudeProviderLayer, streamAnthropicClaudeResponse, toAnthropicClaudeRequestBody };
77
+ //# sourceMappingURL=claude-provider.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-provider.d.mts","names":[],"sources":["../../../src/providers/anthropic/claude-provider.ts"],"mappings":";;;;;;KA0CY,6BAAA;EAAA,SACD,KAAA,EAAO,gBAAA;EAAA,SACP,WAAA;EAAA,SACA,SAAA;EAAA,SACA,YAAA,GAAe,QAAA,CAAS,MAAA;AAAA;AAAA,KAG9B,kBAAA;EAAA,SACM,IAAA;EAAA,SACA,IAAI;AAAA;AAAA,KAGV,oBAAA,GAAuB,kBAAkB;AAAA,KAEzC,mBAAA;EAAA,SACM,IAAA;EAAA,SACA,MAAA;IAAA,SACE,IAAA;IAAA,SACA,UAAA;IAAA,SACA,IAAA;EAAA;AAAA;AAAA,KAIR,sBAAA;EAAA,SACM,IAAA;EAAA,SACA,MAAA;IAAA,SACE,IAAA;IAAA,SACA,UAAA;IAAA,SACA,IAAA;EAAA;EAAA,SAEF,KAAA;AAAA;AAAA,KAGN,qBAAA;EAAA,SACM,IAAA;EAAA,SACA,EAAA;EAAA,SACA,IAAA;EAAA,SACA,KAAA;AAAA;AAAA,KAGN,wBAAA;EAAA,SACM,IAAA;EAAA,SACA,WAAA;EAAA,SACA,OAAA;EAAA,SACA,QAAA;AAAA;AAAA,KAGN,kBAAA,GAAqB,kBAAA,GAAqB,mBAAA,GAAsB,sBAAA,GAAyB,wBAAA;AAAA,KACzF,uBAAA,GAA0B,kBAAA,GAAqB,qBAAqB;AAAA,KAEpE,gBAAA;EAAA,SACU,IAAA;EAAA,SAAuB,OAAA,WAAkB,aAAA,CAAc,kBAAA;AAAA;EAAA,SACvD,IAAA;EAAA,SAA4B,OAAA,EAAS,aAAA,CAAc,uBAAA;AAAA;AAAA,KAS7D,aAAA;EAAA,SACM,IAAA;EAAA,SACA,WAAA;EAAA,SACA,YAAA;AAAA;AAAA,KAGN,oBAAA;EAAA,SACM,KAAA;EAAA,SACA,MAAA,EAAQ,aAAA,CAAc,oBAAA;EAAA,SACtB,QAAA,EAAU,aAAA,CAAc,gBAAA;EAAA,SACxB,UAAA;EAAA,SACA,MAAA;EAAA,SACA,KAAA,GAAQ,aAAA,CAAc,aAAA;AAAA;AAAA,cA+oBpB,4BAAA,GACX,OAAA,EAAS,UAAA,EACT,MAAA;EAAA,SAAoB,SAAA;EAAA,SAA6B,MAAA;AAAA,MAChD,MAAA,CAAO,MAAA,CAAO,oBAAA,EAAsB,QAAA;AAAA,cA+d1B,6BAAA,GACX,QAAA,EAAU,kBAAA,CAAmB,kBAAA,KAC5B,MAAA,CAAO,MAAA,CAAO,QAAA,EAAU,QAAA;AAAA,cA4Ed,gCAAA,GAAoC,MAAA,EAAQ,6BAAA,KAA6B,KAAA,CAAA,KAAA,CAAA,WAAA,SAAA,UAAA,CAAA,UAAA"}