@orcalang/orca-lang 0.1.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.
Files changed (183) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +128 -0
  3. package/dist/auth/index.d.ts +6 -0
  4. package/dist/auth/index.d.ts.map +1 -0
  5. package/dist/auth/index.js +6 -0
  6. package/dist/auth/index.js.map +1 -0
  7. package/dist/auth/lock.d.ts +2 -0
  8. package/dist/auth/lock.d.ts.map +1 -0
  9. package/dist/auth/lock.js +59 -0
  10. package/dist/auth/lock.js.map +1 -0
  11. package/dist/auth/providers/anthropic.d.ts +14 -0
  12. package/dist/auth/providers/anthropic.d.ts.map +1 -0
  13. package/dist/auth/providers/anthropic.js +145 -0
  14. package/dist/auth/providers/anthropic.js.map +1 -0
  15. package/dist/auth/providers/index.d.ts +3 -0
  16. package/dist/auth/providers/index.d.ts.map +1 -0
  17. package/dist/auth/providers/index.js +3 -0
  18. package/dist/auth/providers/index.js.map +1 -0
  19. package/dist/auth/providers/minimax.d.ts +6 -0
  20. package/dist/auth/providers/minimax.d.ts.map +1 -0
  21. package/dist/auth/providers/minimax.js +65 -0
  22. package/dist/auth/providers/minimax.js.map +1 -0
  23. package/dist/auth/refresh.d.ts +8 -0
  24. package/dist/auth/refresh.d.ts.map +1 -0
  25. package/dist/auth/refresh.js +104 -0
  26. package/dist/auth/refresh.js.map +1 -0
  27. package/dist/auth/store.d.ts +11 -0
  28. package/dist/auth/store.d.ts.map +1 -0
  29. package/dist/auth/store.js +63 -0
  30. package/dist/auth/store.js.map +1 -0
  31. package/dist/auth/types.d.ts +51 -0
  32. package/dist/auth/types.d.ts.map +1 -0
  33. package/dist/auth/types.js +2 -0
  34. package/dist/auth/types.js.map +1 -0
  35. package/dist/compiler/mermaid.d.ts +3 -0
  36. package/dist/compiler/mermaid.d.ts.map +1 -0
  37. package/dist/compiler/mermaid.js +86 -0
  38. package/dist/compiler/mermaid.js.map +1 -0
  39. package/dist/compiler/xstate.d.ts +15 -0
  40. package/dist/compiler/xstate.d.ts.map +1 -0
  41. package/dist/compiler/xstate.js +542 -0
  42. package/dist/compiler/xstate.js.map +1 -0
  43. package/dist/config/index.d.ts +3 -0
  44. package/dist/config/index.d.ts.map +1 -0
  45. package/dist/config/index.js +3 -0
  46. package/dist/config/index.js.map +1 -0
  47. package/dist/config/loader.d.ts +4 -0
  48. package/dist/config/loader.d.ts.map +1 -0
  49. package/dist/config/loader.js +109 -0
  50. package/dist/config/loader.js.map +1 -0
  51. package/dist/config/types.d.ts +13 -0
  52. package/dist/config/types.d.ts.map +1 -0
  53. package/dist/config/types.js +8 -0
  54. package/dist/config/types.js.map +1 -0
  55. package/dist/generators/index.d.ts +5 -0
  56. package/dist/generators/index.d.ts.map +1 -0
  57. package/dist/generators/index.js +5 -0
  58. package/dist/generators/index.js.map +1 -0
  59. package/dist/generators/registry.d.ts +12 -0
  60. package/dist/generators/registry.d.ts.map +1 -0
  61. package/dist/generators/registry.js +15 -0
  62. package/dist/generators/registry.js.map +1 -0
  63. package/dist/generators/typescript.d.ts +9 -0
  64. package/dist/generators/typescript.d.ts.map +1 -0
  65. package/dist/generators/typescript.js +55 -0
  66. package/dist/generators/typescript.js.map +1 -0
  67. package/dist/index.d.ts +10 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +630 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/llm/anthropic.d.ts +14 -0
  72. package/dist/llm/anthropic.d.ts.map +1 -0
  73. package/dist/llm/anthropic.js +87 -0
  74. package/dist/llm/anthropic.js.map +1 -0
  75. package/dist/llm/grok.d.ts +13 -0
  76. package/dist/llm/grok.d.ts.map +1 -0
  77. package/dist/llm/grok.js +60 -0
  78. package/dist/llm/grok.js.map +1 -0
  79. package/dist/llm/index.d.ts +11 -0
  80. package/dist/llm/index.d.ts.map +1 -0
  81. package/dist/llm/index.js +23 -0
  82. package/dist/llm/index.js.map +1 -0
  83. package/dist/llm/ollama.d.ts +11 -0
  84. package/dist/llm/ollama.d.ts.map +1 -0
  85. package/dist/llm/ollama.js +51 -0
  86. package/dist/llm/ollama.js.map +1 -0
  87. package/dist/llm/openai.d.ts +13 -0
  88. package/dist/llm/openai.d.ts.map +1 -0
  89. package/dist/llm/openai.js +61 -0
  90. package/dist/llm/openai.js.map +1 -0
  91. package/dist/llm/provider.d.ts +32 -0
  92. package/dist/llm/provider.d.ts.map +1 -0
  93. package/dist/llm/provider.js +2 -0
  94. package/dist/llm/provider.js.map +1 -0
  95. package/dist/parser/ast-to-markdown.d.ts +3 -0
  96. package/dist/parser/ast-to-markdown.d.ts.map +1 -0
  97. package/dist/parser/ast-to-markdown.js +209 -0
  98. package/dist/parser/ast-to-markdown.js.map +1 -0
  99. package/dist/parser/ast.d.ts +183 -0
  100. package/dist/parser/ast.d.ts.map +1 -0
  101. package/dist/parser/ast.js +3 -0
  102. package/dist/parser/ast.js.map +1 -0
  103. package/dist/parser/markdown-parser.d.ts +8 -0
  104. package/dist/parser/markdown-parser.d.ts.map +1 -0
  105. package/dist/parser/markdown-parser.js +838 -0
  106. package/dist/parser/markdown-parser.js.map +1 -0
  107. package/dist/runtime/effects.d.ts +17 -0
  108. package/dist/runtime/effects.d.ts.map +1 -0
  109. package/dist/runtime/effects.js +28 -0
  110. package/dist/runtime/effects.js.map +1 -0
  111. package/dist/runtime/machine.d.ts +8 -0
  112. package/dist/runtime/machine.d.ts.map +1 -0
  113. package/dist/runtime/machine.js +158 -0
  114. package/dist/runtime/machine.js.map +1 -0
  115. package/dist/runtime/types.d.ts +37 -0
  116. package/dist/runtime/types.d.ts.map +1 -0
  117. package/dist/runtime/types.js +3 -0
  118. package/dist/runtime/types.js.map +1 -0
  119. package/dist/skills.d.ts +114 -0
  120. package/dist/skills.d.ts.map +1 -0
  121. package/dist/skills.js +1103 -0
  122. package/dist/skills.js.map +1 -0
  123. package/dist/tools.d.ts +18 -0
  124. package/dist/tools.d.ts.map +1 -0
  125. package/dist/tools.js +124 -0
  126. package/dist/tools.js.map +1 -0
  127. package/dist/verifier/completeness.d.ts +4 -0
  128. package/dist/verifier/completeness.d.ts.map +1 -0
  129. package/dist/verifier/completeness.js +82 -0
  130. package/dist/verifier/completeness.js.map +1 -0
  131. package/dist/verifier/determinism.d.ts +17 -0
  132. package/dist/verifier/determinism.d.ts.map +1 -0
  133. package/dist/verifier/determinism.js +301 -0
  134. package/dist/verifier/determinism.js.map +1 -0
  135. package/dist/verifier/properties.d.ts +6 -0
  136. package/dist/verifier/properties.d.ts.map +1 -0
  137. package/dist/verifier/properties.js +404 -0
  138. package/dist/verifier/properties.js.map +1 -0
  139. package/dist/verifier/structural.d.ts +50 -0
  140. package/dist/verifier/structural.d.ts.map +1 -0
  141. package/dist/verifier/structural.js +692 -0
  142. package/dist/verifier/structural.js.map +1 -0
  143. package/dist/verifier/types.d.ts +40 -0
  144. package/dist/verifier/types.d.ts.map +1 -0
  145. package/dist/verifier/types.js +2 -0
  146. package/dist/verifier/types.js.map +1 -0
  147. package/package.json +49 -0
  148. package/src/auth/index.ts +5 -0
  149. package/src/auth/lock.ts +71 -0
  150. package/src/auth/providers/anthropic.ts +192 -0
  151. package/src/auth/providers/index.ts +17 -0
  152. package/src/auth/providers/minimax.ts +100 -0
  153. package/src/auth/refresh.ts +138 -0
  154. package/src/auth/store.ts +75 -0
  155. package/src/auth/types.ts +62 -0
  156. package/src/compiler/mermaid.ts +109 -0
  157. package/src/compiler/xstate.ts +615 -0
  158. package/src/config/index.ts +2 -0
  159. package/src/config/loader.ts +122 -0
  160. package/src/config/types.ts +21 -0
  161. package/src/generators/index.ts +6 -0
  162. package/src/generators/registry.ts +27 -0
  163. package/src/generators/typescript.ts +67 -0
  164. package/src/index.ts +671 -0
  165. package/src/llm/anthropic.ts +102 -0
  166. package/src/llm/grok.ts +73 -0
  167. package/src/llm/index.ts +29 -0
  168. package/src/llm/ollama.ts +62 -0
  169. package/src/llm/openai.ts +74 -0
  170. package/src/llm/provider.ts +35 -0
  171. package/src/parser/ast-to-markdown.ts +220 -0
  172. package/src/parser/ast.ts +236 -0
  173. package/src/parser/markdown-parser.ts +844 -0
  174. package/src/runtime/effects.ts +48 -0
  175. package/src/runtime/machine.ts +201 -0
  176. package/src/runtime/types.ts +44 -0
  177. package/src/skills.ts +1339 -0
  178. package/src/tools.ts +144 -0
  179. package/src/verifier/completeness.ts +89 -0
  180. package/src/verifier/determinism.ts +328 -0
  181. package/src/verifier/properties.ts +507 -0
  182. package/src/verifier/structural.ts +803 -0
  183. package/src/verifier/types.ts +45 -0
@@ -0,0 +1,65 @@
1
+ const MINIMAX_AUTH_URL = 'https://api.minimaxi.chat/oauth/authorize';
2
+ const MINIMAX_TOKEN_URL = 'https://api.minimaxi.chat/oauth/token';
3
+ export const minimaxOAuthProvider = 'minimax';
4
+ export async function exchangeCodeForTokens(code, clientId, clientSecret, redirectUri) {
5
+ const response = await fetch(MINIMAX_TOKEN_URL, {
6
+ method: 'POST',
7
+ headers: {
8
+ 'Content-Type': 'application/x-www-form-urlencoded',
9
+ },
10
+ body: new URLSearchParams({
11
+ grant_type: 'authorization_code',
12
+ code,
13
+ client_id: clientId,
14
+ client_secret: clientSecret,
15
+ redirect_uri: redirectUri,
16
+ }),
17
+ });
18
+ if (!response.ok) {
19
+ const error = await response.json();
20
+ throw new Error(`Token exchange failed: ${error.error_description ?? error.error}`);
21
+ }
22
+ const data = await response.json();
23
+ return {
24
+ access: data.access_token,
25
+ refresh: data.refresh_token,
26
+ expires: Date.now() + data.expires_in * 1000,
27
+ };
28
+ }
29
+ export async function refreshAccessToken(refreshToken, clientId, clientSecret) {
30
+ const response = await fetch(MINIMAX_TOKEN_URL, {
31
+ method: 'POST',
32
+ headers: {
33
+ 'Content-Type': 'application/x-www-form-urlencoded',
34
+ },
35
+ body: new URLSearchParams({
36
+ grant_type: 'refresh_token',
37
+ refresh_token: refreshToken,
38
+ client_id: clientId,
39
+ client_secret: clientSecret,
40
+ }),
41
+ });
42
+ if (!response.ok) {
43
+ const error = await response.json();
44
+ throw new Error(`Token refresh failed: ${error.error_description ?? error.error}`);
45
+ }
46
+ const data = await response.json();
47
+ return {
48
+ access: data.access_token,
49
+ refresh: data.refresh_token,
50
+ expires: Date.now() + data.expires_in * 1000,
51
+ };
52
+ }
53
+ export function buildAuthorizationUrl(clientId, redirectUri, state) {
54
+ const params = new URLSearchParams({
55
+ client_id: clientId,
56
+ response_type: 'code',
57
+ redirect_uri: redirectUri,
58
+ scope: 'full_access',
59
+ });
60
+ if (state) {
61
+ params.set('state', state);
62
+ }
63
+ return `${MINIMAX_AUTH_URL}?${params.toString()}`;
64
+ }
65
+ //# sourceMappingURL=minimax.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimax.js","sourceRoot":"","sources":["../../../src/auth/providers/minimax.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG,2CAA2C,CAAC;AACrE,MAAM,iBAAiB,GAAG,uCAAuC,CAAC;AAElE,MAAM,CAAC,MAAM,oBAAoB,GAAkB,SAAS,CAAC;AAW7D,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,QAAgB,EAChB,YAAoB,EACpB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE;QAC9C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,mCAAmC;SACpD;QACD,IAAI,EAAE,IAAI,eAAe,CAAC;YACxB,UAAU,EAAE,oBAAoB;YAChC,IAAI;YACJ,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,YAAY;YAC3B,YAAY,EAAE,WAAW;SAC1B,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0B,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0B,CAAC;IAE3D,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,YAAY;QACzB,OAAO,EAAE,IAAI,CAAC,aAAa;QAC3B,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;KAC7C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,YAAoB,EACpB,QAAgB,EAChB,YAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE;QAC9C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,mCAAmC;SACpD;QACD,IAAI,EAAE,IAAI,eAAe,CAAC;YACxB,UAAU,EAAE,eAAe;YAC3B,aAAa,EAAE,YAAY;YAC3B,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,YAAY;SAC5B,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0B,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0B,CAAC;IAE3D,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,YAAY;QACzB,OAAO,EAAE,IAAI,CAAC,aAAa;QAC3B,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;KAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,WAAmB,EACnB,KAAc;IAEd,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,SAAS,EAAE,QAAQ;QACnB,aAAa,EAAE,MAAM;QACrB,YAAY,EAAE,WAAW;QACzB,KAAK,EAAE,aAAa;KACrB,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,GAAG,gBAAgB,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;AACpD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { AuthProfile, OAuthCredential } from './types.js';
2
+ export declare function refreshOAuthCredential(profileId: string, profile: AuthProfile): Promise<OAuthCredential>;
3
+ export declare function getValidAccessToken(profileId: string): Promise<{
4
+ apiKey: string;
5
+ provider: string;
6
+ email?: string;
7
+ } | null>;
8
+ //# sourceMappingURL=refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../src/auth/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAsB,MAAM,YAAY,CAAC;AAkB9E,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,eAAe,CAAC,CAqE1B;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA2CtE"}
@@ -0,0 +1,104 @@
1
+ import { getAuthProfile, setAuthProfile } from './store.js';
2
+ import { withFileLock } from './lock.js';
3
+ import { refreshAccessToken as anthropicRefresh, anthropicOAuthProvider, } from './providers/anthropic.js';
4
+ import { refreshAccessToken as minimaxRefresh, minimaxOAuthProvider, } from './providers/minimax.js';
5
+ const REFRESH_THRESHOLD_MS = 5 * 60 * 1000; // 5 minutes before expiry
6
+ function isExpired(expires) {
7
+ return Date.now() >= expires - REFRESH_THRESHOLD_MS;
8
+ }
9
+ export async function refreshOAuthCredential(profileId, profile) {
10
+ if (profile.mode !== 'oauth') {
11
+ throw new Error('Profile is not an OAuth credential');
12
+ }
13
+ if (!profile.refresh) {
14
+ throw new Error('No refresh token available');
15
+ }
16
+ // Use file lock to prevent concurrent refresh attempts
17
+ const result = await withFileLock(`oauth:${profileId}`, async () => {
18
+ // Re-read profile in case it was updated by another process
19
+ const currentProfile = getAuthProfile(profileId);
20
+ if (!currentProfile || currentProfile.mode !== 'oauth') {
21
+ throw new Error('Profile not found or not OAuth');
22
+ }
23
+ // Check if token is still valid
24
+ if (currentProfile.expires && !isExpired(currentProfile.expires)) {
25
+ return {
26
+ access: currentProfile.access,
27
+ refresh: currentProfile.refresh,
28
+ expires: currentProfile.expires,
29
+ };
30
+ }
31
+ // Refresh the token based on provider
32
+ let refreshResult;
33
+ if (currentProfile.provider === anthropicOAuthProvider) {
34
+ // For Anthropic, we need client credentials
35
+ // In a full implementation, these would be stored securely
36
+ // For now, we'll use a simplified approach
37
+ refreshResult = await anthropicRefresh(currentProfile.refresh, 'orca-cli', // Would be the actual client ID
38
+ '' // Would be the actual client secret
39
+ );
40
+ }
41
+ else if (currentProfile.provider === minimaxOAuthProvider) {
42
+ refreshResult = await minimaxRefresh(currentProfile.refresh, 'orca-cli', '');
43
+ }
44
+ else {
45
+ throw new Error(`Unsupported OAuth provider: ${currentProfile.provider}`);
46
+ }
47
+ // Update profile with new credentials
48
+ const updatedProfile = {
49
+ ...currentProfile,
50
+ access: refreshResult.access,
51
+ refresh: refreshResult.refresh ?? currentProfile.refresh,
52
+ expires: refreshResult.expires,
53
+ };
54
+ setAuthProfile(profileId, updatedProfile);
55
+ return refreshResult;
56
+ });
57
+ return {
58
+ type: 'oauth',
59
+ provider: profile.provider,
60
+ access: result.access,
61
+ refresh: result.refresh ?? profile.refresh,
62
+ expires: result.expires,
63
+ email: profile.email,
64
+ };
65
+ }
66
+ export async function getValidAccessToken(profileId) {
67
+ const profile = getAuthProfile(profileId);
68
+ if (!profile) {
69
+ return null;
70
+ }
71
+ if (profile.mode === 'api_key') {
72
+ return {
73
+ apiKey: profile.key ?? '',
74
+ provider: profile.provider,
75
+ email: profile.email,
76
+ };
77
+ }
78
+ if (profile.mode === 'oauth') {
79
+ // Check if we need to refresh
80
+ if (profile.expires && !isExpired(profile.expires)) {
81
+ return {
82
+ apiKey: profile.access ?? '',
83
+ provider: profile.provider,
84
+ email: profile.email,
85
+ };
86
+ }
87
+ // Refresh and return new token
88
+ const refreshed = await refreshOAuthCredential(profileId, profile);
89
+ return {
90
+ apiKey: refreshed.access,
91
+ provider: refreshed.provider,
92
+ email: refreshed.email,
93
+ };
94
+ }
95
+ if (profile.mode === 'token') {
96
+ return {
97
+ apiKey: profile.token ?? '',
98
+ provider: profile.provider,
99
+ email: profile.email,
100
+ };
101
+ }
102
+ return null;
103
+ }
104
+ //# sourceMappingURL=refresh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../src/auth/refresh.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { AuthProfileStore, AuthProfile } from './types.js';
2
+ export declare function getOrcaDir(): string;
3
+ export declare function getAuthStorePath(): string;
4
+ export declare function ensureOrcaDir(): void;
5
+ export declare function loadAuthStore(): AuthProfileStore;
6
+ export declare function saveAuthStore(store: AuthProfileStore): void;
7
+ export declare function getAuthProfile(profileId: string): AuthProfile | null;
8
+ export declare function setAuthProfile(profileId: string, profile: AuthProfile): void;
9
+ export declare function deleteAuthProfile(profileId: string): boolean;
10
+ export declare function listAuthProfiles(): string[];
11
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI3D,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,aAAa,IAAI,gBAAgB,CAkBhD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAM3D;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAGpE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAI5E;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAQ5D;AAED,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAG3C"}
@@ -0,0 +1,63 @@
1
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
2
+ import { join } from 'path';
3
+ import { homedir } from 'os';
4
+ const STORE_VERSION = 1;
5
+ export function getOrcaDir() {
6
+ return join(homedir(), '.orca');
7
+ }
8
+ export function getAuthStorePath() {
9
+ return join(getOrcaDir(), 'auth_profiles.json');
10
+ }
11
+ export function ensureOrcaDir() {
12
+ const dir = getOrcaDir();
13
+ if (!existsSync(dir)) {
14
+ mkdirSync(dir, { mode: 0o700, recursive: true });
15
+ }
16
+ }
17
+ export function loadAuthStore() {
18
+ const path = getAuthStorePath();
19
+ ensureOrcaDir();
20
+ if (!existsSync(path)) {
21
+ return { version: STORE_VERSION, profiles: {} };
22
+ }
23
+ try {
24
+ const content = readFileSync(path, 'utf-8');
25
+ const store = JSON.parse(content);
26
+ return {
27
+ version: store.version ?? STORE_VERSION,
28
+ profiles: store.profiles ?? {},
29
+ };
30
+ }
31
+ catch {
32
+ return { version: STORE_VERSION, profiles: {} };
33
+ }
34
+ }
35
+ export function saveAuthStore(store) {
36
+ const path = getAuthStorePath();
37
+ ensureOrcaDir();
38
+ // Set restrictive permissions (owner read/write only)
39
+ writeFileSync(path, JSON.stringify(store, null, 2), { mode: 0o600 });
40
+ }
41
+ export function getAuthProfile(profileId) {
42
+ const store = loadAuthStore();
43
+ return store.profiles[profileId] ?? null;
44
+ }
45
+ export function setAuthProfile(profileId, profile) {
46
+ const store = loadAuthStore();
47
+ store.profiles[profileId] = profile;
48
+ saveAuthStore(store);
49
+ }
50
+ export function deleteAuthProfile(profileId) {
51
+ const store = loadAuthStore();
52
+ if (store.profiles[profileId]) {
53
+ delete store.profiles[profileId];
54
+ saveAuthStore(store);
55
+ return true;
56
+ }
57
+ return false;
58
+ }
59
+ export function listAuthProfiles() {
60
+ const store = loadAuthStore();
61
+ return Object.keys(store.profiles);
62
+ }
63
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ export type AuthMode = 'api_key' | 'oauth' | 'token';
2
+ export interface ApiKeyCredential {
3
+ type: 'api_key';
4
+ provider: string;
5
+ key: string;
6
+ email?: string;
7
+ }
8
+ export interface OAuthCredential {
9
+ type: 'oauth';
10
+ provider: string;
11
+ access: string;
12
+ refresh: string;
13
+ expires: number;
14
+ email?: string;
15
+ }
16
+ export interface TokenCredential {
17
+ type: 'token';
18
+ provider: string;
19
+ token: string;
20
+ expires?: number;
21
+ email?: string;
22
+ }
23
+ export type AuthCredential = ApiKeyCredential | OAuthCredential | TokenCredential;
24
+ export interface AuthProfile {
25
+ mode: AuthMode;
26
+ provider: string;
27
+ email?: string;
28
+ key?: string;
29
+ keyRef?: string;
30
+ token?: string;
31
+ tokenRef?: string;
32
+ access?: string;
33
+ refresh?: string;
34
+ expires?: number;
35
+ }
36
+ export interface AuthProfileStore {
37
+ version: number;
38
+ profiles: Record<string, AuthProfile>;
39
+ }
40
+ export interface AuthProfileResult {
41
+ apiKey: string;
42
+ provider: string;
43
+ email?: string;
44
+ }
45
+ export type OAuthProvider = 'anthropic' | 'minimax';
46
+ export interface TokenRefreshResult {
47
+ access: string;
48
+ refresh?: string;
49
+ expires: number;
50
+ }
51
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,eAAe,GAAG,eAAe,CAAC;AAElF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { MachineDef } from '../parser/ast.js';
2
+ export declare function compileToMermaid(machine: MachineDef): string;
3
+ //# sourceMappingURL=mermaid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mermaid.d.ts","sourceRoot":"","sources":["../../src/compiler/mermaid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAY,MAAM,kBAAkB,CAAC;AAExD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAqC5D"}
@@ -0,0 +1,86 @@
1
+ export function compileToMermaid(machine) {
2
+ const lines = [];
3
+ lines.push(`stateDiagram-v2`);
4
+ lines.push(` direction LR`);
5
+ lines.push(``);
6
+ // Add initial state transition
7
+ lines.push(` [*] --> ${getInitialStateName(machine)}`);
8
+ // Add termination transitions for top-level final states
9
+ for (const state of machine.states) {
10
+ if (state.isFinal) {
11
+ lines.push(` ${state.name} --> [*]`);
12
+ }
13
+ }
14
+ lines.push(``);
15
+ // Render compound/parallel state bodies
16
+ for (const state of machine.states) {
17
+ renderStateBody(state, machine, lines, ' ');
18
+ }
19
+ // Add transitions
20
+ for (const t of machine.transitions) {
21
+ let label = t.event;
22
+ if (t.guard) {
23
+ label += ` [${t.guard.negated ? '!' : ''}${t.guard.name}]`;
24
+ }
25
+ if (t.action && t.action !== '_') {
26
+ label += ` / ${t.action}`;
27
+ }
28
+ lines.push(` ${t.source} --> ${t.target} : ${label}`);
29
+ }
30
+ return lines.join('\n');
31
+ }
32
+ function renderStateBody(state, machine, lines, indent) {
33
+ // Hierarchical compound states
34
+ if (state.contains && state.contains.length > 0) {
35
+ lines.push(`${indent}state ${state.name} {`);
36
+ const inner = indent + ' ';
37
+ // Initial child transition
38
+ const initialChild = state.contains.find(s => s.isInitial) || state.contains[0];
39
+ lines.push(`${inner}[*] --> ${initialChild.name}`);
40
+ // Final child transitions
41
+ for (const child of state.contains) {
42
+ if (child.isFinal) {
43
+ lines.push(`${inner}${child.name} --> [*]`);
44
+ }
45
+ }
46
+ // Recurse into children that are themselves compound/parallel
47
+ for (const child of state.contains) {
48
+ renderStateBody(child, machine, lines, inner);
49
+ }
50
+ lines.push(`${indent}}`);
51
+ }
52
+ // Parallel states
53
+ if (state.parallel) {
54
+ lines.push(`${indent}state ${state.name} {`);
55
+ const inner = indent + ' ';
56
+ for (let i = 0; i < state.parallel.regions.length; i++) {
57
+ const region = state.parallel.regions[i];
58
+ // Region separator between regions
59
+ if (i > 0) {
60
+ lines.push(`${inner}--`);
61
+ }
62
+ lines.push(`${inner}state ${region.name} {`);
63
+ const regionInner = inner + ' ';
64
+ // Initial child transition within region
65
+ const initialChild = region.states.find(s => s.isInitial) || region.states[0];
66
+ lines.push(`${regionInner}[*] --> ${initialChild.name}`);
67
+ // Final child transitions within region
68
+ for (const child of region.states) {
69
+ if (child.isFinal) {
70
+ lines.push(`${regionInner}${child.name} --> [*]`);
71
+ }
72
+ }
73
+ // Recurse into children
74
+ for (const child of region.states) {
75
+ renderStateBody(child, machine, lines, regionInner);
76
+ }
77
+ lines.push(`${inner}}`);
78
+ }
79
+ lines.push(`${indent}}`);
80
+ }
81
+ }
82
+ function getInitialStateName(machine) {
83
+ const initial = machine.states.find(s => s.isInitial);
84
+ return initial?.name || machine.states[0]?.name || 'unknown';
85
+ }
86
+ //# sourceMappingURL=mermaid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mermaid.js","sourceRoot":"","sources":["../../src/compiler/mermaid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { MachineDef } from '../parser/ast.js';
2
+ export interface CompiledMachine {
3
+ config: any;
4
+ effectMeta: {
5
+ effectfulActions: Array<{
6
+ name: string;
7
+ effectType: string;
8
+ state: string;
9
+ transition?: string;
10
+ }>;
11
+ };
12
+ }
13
+ export declare function compileToXStateMachine(machine: MachineDef): CompiledMachine;
14
+ export declare function compileToXState(machine: MachineDef): string;
15
+ //# sourceMappingURL=xstate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xstate.d.ts","sourceRoot":"","sources":["../../src/compiler/xstate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAyC,MAAM,kBAAkB,CAAC;AAiCrF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,GAAG,CAAC;IACZ,UAAU,EAAE;QACV,gBAAgB,EAAE,KAAK,CAAC;YACtB,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;YACnB,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;KACJ,CAAC;CACH;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,GAAG,eAAe,CAiB3E;AAgUD,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAiL3D"}