@onesclawkolor/onesclaw 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 (141) hide show
  1. package/README.md +65 -0
  2. package/dist/agent/conversation.d.ts +34 -0
  3. package/dist/agent/conversation.js +61 -0
  4. package/dist/agent/conversation.js.map +1 -0
  5. package/dist/agent/loop.d.ts +40 -0
  6. package/dist/agent/loop.js +213 -0
  7. package/dist/agent/loop.js.map +1 -0
  8. package/dist/agent/session.d.ts +73 -0
  9. package/dist/agent/session.js +225 -0
  10. package/dist/agent/session.js.map +1 -0
  11. package/dist/audit/file-sink.d.ts +6 -0
  12. package/dist/audit/file-sink.js +21 -0
  13. package/dist/audit/file-sink.js.map +1 -0
  14. package/dist/audit/ids.d.ts +3 -0
  15. package/dist/audit/ids.js +15 -0
  16. package/dist/audit/ids.js.map +1 -0
  17. package/dist/audit/types.d.ts +13 -0
  18. package/dist/audit/types.js +2 -0
  19. package/dist/audit/types.js.map +1 -0
  20. package/dist/cli/commands.d.ts +31 -0
  21. package/dist/cli/commands.js +433 -0
  22. package/dist/cli/commands.js.map +1 -0
  23. package/dist/cli/logger.d.ts +57 -0
  24. package/dist/cli/logger.js +79 -0
  25. package/dist/cli/logger.js.map +1 -0
  26. package/dist/cli/output.d.ts +59 -0
  27. package/dist/cli/output.js +306 -0
  28. package/dist/cli/output.js.map +1 -0
  29. package/dist/cli/prompt.d.ts +29 -0
  30. package/dist/cli/prompt.js +197 -0
  31. package/dist/cli/prompt.js.map +1 -0
  32. package/dist/cli/repl.d.ts +4 -0
  33. package/dist/cli/repl.js +486 -0
  34. package/dist/cli/repl.js.map +1 -0
  35. package/dist/commands/init.d.ts +4 -0
  36. package/dist/commands/init.js +84 -0
  37. package/dist/commands/init.js.map +1 -0
  38. package/dist/commands/model.d.ts +3 -0
  39. package/dist/commands/model.js +178 -0
  40. package/dist/commands/model.js.map +1 -0
  41. package/dist/commands/plugin-init.d.ts +23 -0
  42. package/dist/commands/plugin-init.js +303 -0
  43. package/dist/commands/plugin-init.js.map +1 -0
  44. package/dist/commands/provider-auth.d.ts +14 -0
  45. package/dist/commands/provider-auth.js +153 -0
  46. package/dist/commands/provider-auth.js.map +1 -0
  47. package/dist/config/manager.d.ts +71 -0
  48. package/dist/config/manager.js +201 -0
  49. package/dist/config/manager.js.map +1 -0
  50. package/dist/config/types.d.ts +43 -0
  51. package/dist/config/types.js +2 -0
  52. package/dist/config/types.js.map +1 -0
  53. package/dist/errors.d.ts +37 -0
  54. package/dist/errors.js +55 -0
  55. package/dist/errors.js.map +1 -0
  56. package/dist/index.d.ts +2 -0
  57. package/dist/index.js +207 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/llm/anthropic.d.ts +83 -0
  60. package/dist/llm/anthropic.js +190 -0
  61. package/dist/llm/anthropic.js.map +1 -0
  62. package/dist/llm/factory.d.ts +105 -0
  63. package/dist/llm/factory.js +164 -0
  64. package/dist/llm/factory.js.map +1 -0
  65. package/dist/llm/openai-codex.d.ts +102 -0
  66. package/dist/llm/openai-codex.js +445 -0
  67. package/dist/llm/openai-codex.js.map +1 -0
  68. package/dist/llm/openai.d.ts +71 -0
  69. package/dist/llm/openai.js +289 -0
  70. package/dist/llm/openai.js.map +1 -0
  71. package/dist/llm/provider.d.ts +1 -0
  72. package/dist/llm/provider.js +2 -0
  73. package/dist/llm/provider.js.map +1 -0
  74. package/dist/llm/types.d.ts +72 -0
  75. package/dist/llm/types.js +2 -0
  76. package/dist/llm/types.js.map +1 -0
  77. package/dist/mcp/bridge.d.ts +17 -0
  78. package/dist/mcp/bridge.js +74 -0
  79. package/dist/mcp/bridge.js.map +1 -0
  80. package/dist/mcp/config.d.ts +10 -0
  81. package/dist/mcp/config.js +27 -0
  82. package/dist/mcp/config.js.map +1 -0
  83. package/dist/mcp/manager.d.ts +67 -0
  84. package/dist/mcp/manager.js +207 -0
  85. package/dist/mcp/manager.js.map +1 -0
  86. package/dist/memory/scope.d.ts +4 -0
  87. package/dist/memory/scope.js +14 -0
  88. package/dist/memory/scope.js.map +1 -0
  89. package/dist/memory/store.d.ts +28 -0
  90. package/dist/memory/store.js +126 -0
  91. package/dist/memory/store.js.map +1 -0
  92. package/dist/prompts/system.d.ts +4 -0
  93. package/dist/prompts/system.js +197 -0
  94. package/dist/prompts/system.js.map +1 -0
  95. package/dist/skills/loader.d.ts +25 -0
  96. package/dist/skills/loader.js +98 -0
  97. package/dist/skills/loader.js.map +1 -0
  98. package/dist/skills/registry.d.ts +57 -0
  99. package/dist/skills/registry.js +132 -0
  100. package/dist/skills/registry.js.map +1 -0
  101. package/dist/skills/sync.d.ts +33 -0
  102. package/dist/skills/sync.js +180 -0
  103. package/dist/skills/sync.js.map +1 -0
  104. package/dist/skills/types.d.ts +1 -0
  105. package/dist/skills/types.js +2 -0
  106. package/dist/skills/types.js.map +1 -0
  107. package/dist/tools/ask.d.ts +30 -0
  108. package/dist/tools/ask.js +60 -0
  109. package/dist/tools/ask.js.map +1 -0
  110. package/dist/tools/confirmation.d.ts +12 -0
  111. package/dist/tools/confirmation.js +75 -0
  112. package/dist/tools/confirmation.js.map +1 -0
  113. package/dist/tools/plugin-init.d.ts +29 -0
  114. package/dist/tools/plugin-init.js +47 -0
  115. package/dist/tools/plugin-init.js.map +1 -0
  116. package/dist/tools/registry.d.ts +56 -0
  117. package/dist/tools/registry.js +123 -0
  118. package/dist/tools/registry.js.map +1 -0
  119. package/dist/tools/safety.d.ts +2 -0
  120. package/dist/tools/safety.js +30 -0
  121. package/dist/tools/safety.js.map +1 -0
  122. package/dist/tools/server.d.ts +91 -0
  123. package/dist/tools/server.js +149 -0
  124. package/dist/tools/server.js.map +1 -0
  125. package/dist/tools/shell.d.ts +11 -0
  126. package/dist/tools/shell.js +174 -0
  127. package/dist/tools/shell.js.map +1 -0
  128. package/dist/tools/skills-sync.d.ts +19 -0
  129. package/dist/tools/skills-sync.js +29 -0
  130. package/dist/tools/skills-sync.js.map +1 -0
  131. package/dist/tools/ssh.d.ts +62 -0
  132. package/dist/tools/ssh.js +343 -0
  133. package/dist/tools/ssh.js.map +1 -0
  134. package/dist/tools/types.d.ts +10 -0
  135. package/dist/tools/types.js +2 -0
  136. package/dist/tools/types.js.map +1 -0
  137. package/dist/utils/retry.d.ts +7 -0
  138. package/dist/utils/retry.js +34 -0
  139. package/dist/utils/retry.js.map +1 -0
  140. package/install.sh +171 -0
  141. package/package.json +49 -0
@@ -0,0 +1,164 @@
1
+ // @ts-nocheck
2
+ import { AnthropicProvider } from './anthropic.js';
3
+ import { OpenAIProvider } from './openai.js';
4
+ import { getCodexAuthInfo, OpenAICodexProvider } from './openai-codex.js';
5
+ /**
6
+ * Provider 注册表
7
+ *
8
+ * 包含所有支持的 Provider 的元数据:显示名、认证方式、模型列表、校验规则。
9
+ */
10
+ export const PROVIDER_REGISTRY = [
11
+ {
12
+ name: 'openai-codex',
13
+ displayName: 'OpenAI Codex (OAuth)',
14
+ authModes: [{ mode: 'oauth', displayName: 'Codex OAuth 登录' }],
15
+ models: [
16
+ { id: 'gpt-5.4', displayName: 'GPT-5.4' },
17
+ { id: 'gpt-5.3-codex', displayName: 'GPT-5.3 Codex' },
18
+ { id: 'gpt-5.2-codex', displayName: 'GPT-5.2 Codex' },
19
+ { id: 'gpt-5.1-codex', displayName: 'GPT-5.1 Codex' },
20
+ ],
21
+ },
22
+ {
23
+ name: 'openai',
24
+ displayName: 'OpenAI (API Key)',
25
+ authModes: [{ mode: 'api_key', displayName: 'API Key' }],
26
+ models: [
27
+ { id: 'gpt-4o', displayName: 'GPT-4o' },
28
+ { id: 'gpt-4o-mini', displayName: 'GPT-4o Mini' },
29
+ { id: 'o3-mini', displayName: 'o3-mini' },
30
+ ],
31
+ validateKey: (key) => !key
32
+ ? 'API Key 不能为空'
33
+ : !key.startsWith('sk-')
34
+ ? 'API Key 格式不正确,应以 sk- 开头'
35
+ : null,
36
+ keyPlaceholder: 'sk-xxx...',
37
+ },
38
+ {
39
+ name: 'anthropic',
40
+ displayName: 'Anthropic (Claude)',
41
+ authModes: [{ mode: 'api_key', displayName: 'API Key' }],
42
+ models: [
43
+ { id: 'claude-opus-4-20250514', displayName: 'Claude Opus 4' },
44
+ { id: 'claude-sonnet-4-20250514', displayName: 'Claude Sonnet 4' },
45
+ { id: 'claude-haiku-3-5-20241022', displayName: 'Claude Haiku 3.5' },
46
+ ],
47
+ validateKey: (key) => !key
48
+ ? 'API Key 不能为空'
49
+ : !key.startsWith('sk-ant-')
50
+ ? 'API Key 格式不正确,应以 sk-ant- 开头'
51
+ : null,
52
+ keyPlaceholder: 'sk-ant-xxx...',
53
+ },
54
+ ];
55
+ /**
56
+ * 根据 provider name 查找注册信息
57
+ */
58
+ export function getProviderInfo(name) {
59
+ return PROVIDER_REGISTRY.find((p) => p.name === name);
60
+ }
61
+ /**
62
+ * 根据配置创建 LLM Provider 实例
63
+ *
64
+ * - anthropic → AnthropicProvider(api_key)
65
+ * - openai → OpenAIProvider(api_key)
66
+ * - openai-codex → OpenAIProvider(oauth_access_token)
67
+ */
68
+ export async function createLLMProvider(providerConfig, providerName) {
69
+ switch (providerName) {
70
+ case 'anthropic': {
71
+ if (!providerConfig.api_key) {
72
+ throw new Error('Anthropic API Key 未配置');
73
+ }
74
+ return new AnthropicProvider(providerConfig.api_key);
75
+ }
76
+ case 'openai': {
77
+ if (!providerConfig.api_key) {
78
+ throw new Error('OpenAI API Key 未配置');
79
+ }
80
+ return new OpenAIProvider(providerConfig.api_key, providerConfig.base_url);
81
+ }
82
+ case 'openai-codex': {
83
+ const { accessToken, accountId } = await getCodexAuthInfo();
84
+ return new OpenAICodexProvider(accessToken, accountId);
85
+ }
86
+ default:
87
+ throw new Error(`不支持的 Provider: ${providerName}`);
88
+ }
89
+ }
90
+ /**
91
+ * 从 provider API 动态获取可用模型列表
92
+ *
93
+ * 有凭证时尝试从 API 获取,失败或无凭证时回退到 PROVIDER_REGISTRY 中的固定列表。
94
+ */
95
+ export async function fetchAvailableModels(providerName, credential) {
96
+ const providerInfo = getProviderInfo(providerName);
97
+ if (!providerInfo) {
98
+ return [];
99
+ }
100
+ // 无凭证时直接返回固定列表
101
+ if (!credential) {
102
+ return providerInfo.models;
103
+ }
104
+ try {
105
+ if (providerName === 'anthropic') {
106
+ return await fetchAnthropicModels(credential);
107
+ }
108
+ else {
109
+ return await fetchOpenAIModels(credential);
110
+ }
111
+ }
112
+ catch {
113
+ // API 获取失败,回退到固定列表
114
+ return providerInfo.models;
115
+ }
116
+ }
117
+ /**
118
+ * 从 Anthropic API 获取模型列表
119
+ */
120
+ async function fetchAnthropicModels(apiKey) {
121
+ const response = await fetch('https://api.anthropic.com/v1/models', {
122
+ headers: {
123
+ 'x-api-key': apiKey,
124
+ 'anthropic-version': '2023-06-01',
125
+ },
126
+ });
127
+ if (!response.ok) {
128
+ throw new Error(`Anthropic API error: ${response.status}`);
129
+ }
130
+ const data = (await response.json());
131
+ return data.data
132
+ .filter((m) => m.id.includes('claude'))
133
+ .map((m) => ({
134
+ id: m.id,
135
+ displayName: m.display_name || m.id,
136
+ }))
137
+ .sort((a, b) => a.id.localeCompare(b.id));
138
+ }
139
+ /**
140
+ * 从 OpenAI API 获取模型列表
141
+ */
142
+ async function fetchOpenAIModels(credential) {
143
+ const response = await fetch('https://api.openai.com/v1/models', {
144
+ headers: {
145
+ Authorization: `Bearer ${credential}`,
146
+ },
147
+ });
148
+ if (!response.ok) {
149
+ throw new Error(`OpenAI API error: ${response.status}`);
150
+ }
151
+ const data = (await response.json());
152
+ // 过滤出 chat 模型(gpt-*, o1-*, o3-*),排除 embedding/tts 等
153
+ return data.data
154
+ .filter((m) => m.id.startsWith('gpt-') ||
155
+ m.id.startsWith('o1-') ||
156
+ m.id.startsWith('o3-') ||
157
+ m.id.startsWith('o4-'))
158
+ .map((m) => ({
159
+ id: m.id,
160
+ displayName: m.id,
161
+ }))
162
+ .sort((a, b) => a.id.localeCompare(b.id));
163
+ }
164
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/llm/factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * 检查 codex CLI 是否已安装
3
+ */
4
+ export declare function isCodexInstalled(): boolean;
5
+ /**
6
+ * 通过 Codex CLI 执行 Device Code Flow OAuth
7
+ *
8
+ * 调用 `codex login --device-auth` 子进程(继承 stdio 以展示 URL 和用户码)。
9
+ * 授权完成后 token 由 Codex 存储到 ~/.codex/auth.json。
10
+ */
11
+ export declare function codexOAuthLogin(): Promise<void>;
12
+ /**
13
+ * 从 ~/.codex/auth.json 读取认证信息(access_token + account_id)
14
+ *
15
+ * 若 token 可能过期(last_refresh > 55 分钟前),自动刷新。
16
+ */
17
+ export declare function getCodexAuthInfo(): Promise<{
18
+ accessToken: any;
19
+ accountId: any;
20
+ }>;
21
+ /**
22
+ * 从 ~/.codex/auth.json 读取当前 access_token
23
+ *
24
+ * 若 token 可能过期(last_refresh > 55 分钟前),自动刷新。
25
+ */
26
+ export declare function getCodexAccessToken(): Promise<any>;
27
+ /**
28
+ * 检查现有 Codex 授权是否有效
29
+ *
30
+ * 读取 auth.json → 检查关键字段 → 尝试获取/刷新 token
31
+ */
32
+ export declare function isCodexAuthValid(): Promise<boolean>;
33
+ /**
34
+ * OpenAI Codex LLM Provider
35
+ *
36
+ * 使用 ChatGPT 后端的 Responses API (`chatgpt.com/backend-api/codex/responses`)。
37
+ * Codex OAuth Token 绑定 ChatGPT/Codex 订阅,需要通过 ChatGPT 后端代理调用。
38
+ * 标准 OpenAI API (`api.openai.com`) 不接受 Codex OAuth Token。
39
+ */
40
+ export declare class OpenAICodexProvider {
41
+ name: string;
42
+ client: any;
43
+ constructor(accessToken: any, accountId: any);
44
+ chat(messages: any, tools: any, options: any): AsyncGenerator<{
45
+ type: string;
46
+ text: any;
47
+ id?: undefined;
48
+ name?: undefined;
49
+ input_json?: undefined;
50
+ stop_reason?: undefined;
51
+ usage?: undefined;
52
+ error?: undefined;
53
+ } | {
54
+ type: string;
55
+ id: any;
56
+ name: any;
57
+ text?: undefined;
58
+ input_json?: undefined;
59
+ stop_reason?: undefined;
60
+ usage?: undefined;
61
+ error?: undefined;
62
+ } | {
63
+ type: string;
64
+ input_json: any;
65
+ text?: undefined;
66
+ id?: undefined;
67
+ name?: undefined;
68
+ stop_reason?: undefined;
69
+ usage?: undefined;
70
+ error?: undefined;
71
+ } | {
72
+ type: string;
73
+ text?: undefined;
74
+ id?: undefined;
75
+ name?: undefined;
76
+ input_json?: undefined;
77
+ stop_reason?: undefined;
78
+ usage?: undefined;
79
+ error?: undefined;
80
+ } | {
81
+ type: string;
82
+ stop_reason: string;
83
+ usage: {
84
+ inputTokens: number;
85
+ outputTokens: number;
86
+ };
87
+ text?: undefined;
88
+ id?: undefined;
89
+ name?: undefined;
90
+ input_json?: undefined;
91
+ error?: undefined;
92
+ } | {
93
+ type: string;
94
+ error: Error;
95
+ text?: undefined;
96
+ id?: undefined;
97
+ name?: undefined;
98
+ input_json?: undefined;
99
+ stop_reason?: undefined;
100
+ usage?: undefined;
101
+ }, void, unknown>;
102
+ }