opencode-channels 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 (121) hide show
  1. package/README.md +187 -0
  2. package/bin/cli.js +24 -0
  3. package/bin/cli.ts +62 -0
  4. package/dist/bot/auto-binding.d.ts +6 -0
  5. package/dist/bot/auto-binding.d.ts.map +1 -0
  6. package/dist/bot/auto-binding.js +81 -0
  7. package/dist/bot/auto-binding.js.map +1 -0
  8. package/dist/bot/commands/agents.d.ts +9 -0
  9. package/dist/bot/commands/agents.d.ts.map +1 -0
  10. package/dist/bot/commands/agents.js +53 -0
  11. package/dist/bot/commands/agents.js.map +1 -0
  12. package/dist/bot/commands/base.d.ts +4 -0
  13. package/dist/bot/commands/base.d.ts.map +1 -0
  14. package/dist/bot/commands/base.js +241 -0
  15. package/dist/bot/commands/base.js.map +1 -0
  16. package/dist/bot/commands/dynamic.d.ts +8 -0
  17. package/dist/bot/commands/dynamic.d.ts.map +1 -0
  18. package/dist/bot/commands/dynamic.js +82 -0
  19. package/dist/bot/commands/dynamic.js.map +1 -0
  20. package/dist/bot/commands/index.d.ts +15 -0
  21. package/dist/bot/commands/index.d.ts.map +1 -0
  22. package/dist/bot/commands/index.js +25 -0
  23. package/dist/bot/commands/index.js.map +1 -0
  24. package/dist/bot/commands/models.d.ts +7 -0
  25. package/dist/bot/commands/models.d.ts.map +1 -0
  26. package/dist/bot/commands/models.js +60 -0
  27. package/dist/bot/commands/models.js.map +1 -0
  28. package/dist/bot/commands/sdk-commands.d.ts +5 -0
  29. package/dist/bot/commands/sdk-commands.d.ts.map +1 -0
  30. package/dist/bot/commands/sdk-commands.js +135 -0
  31. package/dist/bot/commands/sdk-commands.js.map +1 -0
  32. package/dist/bot/handlers/callback.d.ts +3 -0
  33. package/dist/bot/handlers/callback.d.ts.map +1 -0
  34. package/dist/bot/handlers/callback.js +52 -0
  35. package/dist/bot/handlers/callback.js.map +1 -0
  36. package/dist/bot/handlers/file.d.ts +3 -0
  37. package/dist/bot/handlers/file.d.ts.map +1 -0
  38. package/dist/bot/handlers/file.js +121 -0
  39. package/dist/bot/handlers/file.js.map +1 -0
  40. package/dist/bot/handlers/group.d.ts +3 -0
  41. package/dist/bot/handlers/group.d.ts.map +1 -0
  42. package/dist/bot/handlers/group.js +41 -0
  43. package/dist/bot/handlers/group.js.map +1 -0
  44. package/dist/bot/handlers/index.d.ts +4 -0
  45. package/dist/bot/handlers/index.d.ts.map +1 -0
  46. package/dist/bot/handlers/index.js +13 -0
  47. package/dist/bot/handlers/index.js.map +1 -0
  48. package/dist/bot/handlers/message.d.ts +15 -0
  49. package/dist/bot/handlers/message.d.ts.map +1 -0
  50. package/dist/bot/handlers/message.js +183 -0
  51. package/dist/bot/handlers/message.js.map +1 -0
  52. package/dist/bot/handlers/topic.d.ts +3 -0
  53. package/dist/bot/handlers/topic.d.ts.map +1 -0
  54. package/dist/bot/handlers/topic.js +43 -0
  55. package/dist/bot/handlers/topic.js.map +1 -0
  56. package/dist/bot/index.d.ts +5 -0
  57. package/dist/bot/index.d.ts.map +1 -0
  58. package/dist/bot/index.js +66 -0
  59. package/dist/bot/index.js.map +1 -0
  60. package/dist/cli/daemon.d.ts +6 -0
  61. package/dist/cli/daemon.d.ts.map +1 -0
  62. package/dist/cli/daemon.js +255 -0
  63. package/dist/cli/daemon.js.map +1 -0
  64. package/dist/cli/init.d.ts +19 -0
  65. package/dist/cli/init.d.ts.map +1 -0
  66. package/dist/cli/init.js +235 -0
  67. package/dist/cli/init.js.map +1 -0
  68. package/dist/cli/logs.d.ts +6 -0
  69. package/dist/cli/logs.d.ts.map +1 -0
  70. package/dist/cli/logs.js +42 -0
  71. package/dist/cli/logs.js.map +1 -0
  72. package/dist/cli/start.d.ts +4 -0
  73. package/dist/cli/start.d.ts.map +1 -0
  74. package/dist/cli/start.js +254 -0
  75. package/dist/cli/start.js.map +1 -0
  76. package/dist/plugin/index.d.ts +4 -0
  77. package/dist/plugin/index.d.ts.map +1 -0
  78. package/dist/plugin/index.js +73 -0
  79. package/dist/plugin/index.js.map +1 -0
  80. package/dist/server/api.d.ts +3 -0
  81. package/dist/server/api.d.ts.map +1 -0
  82. package/dist/server/api.js +30 -0
  83. package/dist/server/api.js.map +1 -0
  84. package/dist/server/events.d.ts +18 -0
  85. package/dist/server/events.d.ts.map +1 -0
  86. package/dist/server/events.js +131 -0
  87. package/dist/server/events.js.map +1 -0
  88. package/dist/server/filters.d.ts +19 -0
  89. package/dist/server/filters.d.ts.map +1 -0
  90. package/dist/server/filters.js +149 -0
  91. package/dist/server/filters.js.map +1 -0
  92. package/dist/server/index.d.ts +4 -0
  93. package/dist/server/index.d.ts.map +1 -0
  94. package/dist/server/index.js +10 -0
  95. package/dist/server/index.js.map +1 -0
  96. package/dist/server/sdk.d.ts +36 -0
  97. package/dist/server/sdk.d.ts.map +1 -0
  98. package/dist/server/sdk.js +485 -0
  99. package/dist/server/sdk.js.map +1 -0
  100. package/dist/shared/config.d.ts +34 -0
  101. package/dist/shared/config.d.ts.map +1 -0
  102. package/dist/shared/config.js +163 -0
  103. package/dist/shared/config.js.map +1 -0
  104. package/dist/shared/logger.d.ts +5 -0
  105. package/dist/shared/logger.d.ts.map +1 -0
  106. package/dist/shared/logger.js +114 -0
  107. package/dist/shared/logger.js.map +1 -0
  108. package/dist/shared/mapping.d.ts +90 -0
  109. package/dist/shared/mapping.d.ts.map +1 -0
  110. package/dist/shared/mapping.js +234 -0
  111. package/dist/shared/mapping.js.map +1 -0
  112. package/dist/shared/message-queue.d.ts +64 -0
  113. package/dist/shared/message-queue.d.ts.map +1 -0
  114. package/dist/shared/message-queue.js +138 -0
  115. package/dist/shared/message-queue.js.map +1 -0
  116. package/dist/shared/types.d.ts +284 -0
  117. package/dist/shared/types.d.ts.map +1 -0
  118. package/dist/shared/types.js +7 -0
  119. package/dist/shared/types.js.map +1 -0
  120. package/index.js +1 -0
  121. package/package.json +71 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/server/filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK7E,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,QAAQ,EAAE,YAAY,CAAC;CACxB;AAMD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,iBAAiB,EAAE,CAmDlF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAKpE;AAMD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAa3F;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAU7D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAOnG;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAenE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAO3D;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAG9E;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE5D;AAMD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMjG;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIhE"}
@@ -0,0 +1,149 @@
1
+ import { DateTime } from 'luxon';
2
+ const POPULAR_PROVIDERS = ['opencode', 'anthropic', 'github-copilot', 'openai', 'google', 'openrouter', 'vercel'];
3
+ function mkKey(providerID, modelID) {
4
+ return `${providerID}:${modelID}`;
5
+ }
6
+ export function filterVisibleModels(providers) {
7
+ const allModels = providers.flatMap((p) => p.models.map((m) => ({ ...m, provider: p })));
8
+ const releaseMap = new Map();
9
+ for (const m of allModels) {
10
+ if (m.release_date) {
11
+ releaseMap.set(mkKey(m.provider.id, m.id), DateTime.fromISO(m.release_date));
12
+ }
13
+ }
14
+ const recentModels = allModels.filter((m) => {
15
+ const date = releaseMap.get(mkKey(m.provider.id, m.id));
16
+ if (!date || !date.isValid)
17
+ return false;
18
+ return Math.abs(date.diffNow().as('months')) < 6;
19
+ });
20
+ const byProvider = new Map();
21
+ for (const m of recentModels) {
22
+ if (!byProvider.has(m.provider.id))
23
+ byProvider.set(m.provider.id, []);
24
+ byProvider.get(m.provider.id).push(m);
25
+ }
26
+ const latestSet = new Set();
27
+ for (const models of byProvider.values()) {
28
+ const byFamily = new Map();
29
+ for (const m of models) {
30
+ const fam = m.family || 'default';
31
+ if (!byFamily.has(fam))
32
+ byFamily.set(fam, []);
33
+ byFamily.get(fam).push(m);
34
+ }
35
+ for (const group of byFamily.values()) {
36
+ group.sort((a, b) => {
37
+ const da = a.release_date ? DateTime.fromISO(a.release_date) : DateTime.invalid('none');
38
+ const db = b.release_date ? DateTime.fromISO(b.release_date) : DateTime.invalid('none');
39
+ return db.toMillis() - da.toMillis();
40
+ });
41
+ if (group[0]) {
42
+ latestSet.add(mkKey(group[0].provider.id, group[0].id));
43
+ }
44
+ }
45
+ }
46
+ return allModels.filter((m) => {
47
+ const key = mkKey(m.provider.id, m.id);
48
+ if (latestSet.has(key))
49
+ return true;
50
+ const date = releaseMap.get(key);
51
+ if (!date || !date.isValid)
52
+ return true;
53
+ return false;
54
+ });
55
+ }
56
+ export function filterVisibleAgents(agents) {
57
+ return agents.filter((agent) => {
58
+ const hidden = agent.hidden;
59
+ return !hidden;
60
+ });
61
+ }
62
+ function normalizeAgentName(name) {
63
+ return name.toLowerCase().replace(/[^a-z0-9]/g, '');
64
+ }
65
+ export function findMatchingAgent(agents, searchName) {
66
+ const normalizedSearch = normalizeAgentName(searchName);
67
+ const exactMatch = agents.find(a => a.name.toLowerCase() === searchName.toLowerCase());
68
+ if (exactMatch)
69
+ return exactMatch;
70
+ const normalizedMatch = agents.find(a => normalizeAgentName(a.name) === normalizedSearch);
71
+ if (normalizedMatch)
72
+ return normalizedMatch;
73
+ const containsMatch = agents.find(a => normalizeAgentName(a.name).includes(normalizedSearch));
74
+ if (containsMatch)
75
+ return containsMatch;
76
+ return null;
77
+ }
78
+ export function sortProviders(providerIds) {
79
+ const popularSet = new Set(POPULAR_PROVIDERS);
80
+ return [...providerIds].sort((a, b) => {
81
+ const aP = popularSet.has(a);
82
+ const bP = popularSet.has(b);
83
+ if (aP && !bP)
84
+ return -1;
85
+ if (!aP && bP)
86
+ return 1;
87
+ if (aP && bP)
88
+ return POPULAR_PROVIDERS.indexOf(a) - POPULAR_PROVIDERS.indexOf(b);
89
+ return a.localeCompare(b);
90
+ });
91
+ }
92
+ export function groupModelsByProvider(models) {
93
+ const grouped = new Map();
94
+ for (const model of models) {
95
+ if (!grouped.has(model.provider.id))
96
+ grouped.set(model.provider.id, []);
97
+ grouped.get(model.provider.id).push(model);
98
+ }
99
+ return grouped;
100
+ }
101
+ export function formatModelList(models) {
102
+ const grouped = groupModelsByProvider(models);
103
+ const sortedIds = sortProviders([...grouped.keys()]);
104
+ const lines = [];
105
+ for (const pid of sortedIds) {
106
+ const providerModels = grouped.get(pid);
107
+ const providerName = providerModels[0].provider.name;
108
+ lines.push(`\n<b>${escapeHtml(providerName)}</b>`);
109
+ for (const model of providerModels) {
110
+ lines.push(` /${formatModelCommand(model.provider.id, model.id)} - ${escapeHtml(model.name)}`);
111
+ }
112
+ }
113
+ return lines.join('\n');
114
+ }
115
+ export function formatAgentList(agents) {
116
+ return agents
117
+ .map((agent) => {
118
+ const desc = agent.description ? ` - ${escapeHtml(agent.description.substring(0, 50))}` : '';
119
+ return `/${formatAgentCommand(agent.name)}${desc}`;
120
+ })
121
+ .join('\n');
122
+ }
123
+ export function formatModelCommand(providerID, modelID) {
124
+ const encode = (s) => s.toLowerCase().replace(/\./g, '0dot0').replace(/[^a-z0-9_]/g, '_');
125
+ return `model_${encode(providerID)}__${encode(modelID)}`;
126
+ }
127
+ export function formatAgentCommand(agentName) {
128
+ return `agent_${agentName}`.toLowerCase().replace(/[^a-z0-9_]/g, '_');
129
+ }
130
+ function stripBotMention(command) {
131
+ return command.replace(/@\S+$/, '');
132
+ }
133
+ export function parseModelCommand(command) {
134
+ const clean = stripBotMention(command);
135
+ const match = clean.match(/^model_(.+?)__(.+)$/);
136
+ if (!match)
137
+ return null;
138
+ const decode = (s) => s.replace(/0dot0/g, '.').replace(/_/g, '-');
139
+ return { providerID: decode(match[1]), modelID: decode(match[2]) };
140
+ }
141
+ export function parseAgentCommand(command) {
142
+ const clean = stripBotMention(command);
143
+ const match = clean.match(/^agent_(.+)$/);
144
+ return match ? match[1].replace(/_/g, '-') : null;
145
+ }
146
+ function escapeHtml(text) {
147
+ return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
148
+ }
149
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/server/filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Hono } from 'hono';
2
+ import type { Config } from '../shared/types.js';
3
+ export declare function createServer(config: Config): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,8EAO1C"}
@@ -0,0 +1,10 @@
1
+ import { Hono } from 'hono';
2
+ import { logger } from 'hono/logger';
3
+ import { registerRoutes } from './api.js';
4
+ export function createServer(config) {
5
+ const app = new Hono();
6
+ app.use('*', logger());
7
+ registerRoutes(app);
8
+ return app;
9
+ }
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACvB,cAAc,CAAC,GAAG,CAAC,CAAC;IAEpB,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { OpencodeClient } from '@opencode-ai/sdk/v2/client';
2
+ import type { AgentInfo, ProviderInfo, SessionInfo, CommandInfo } from '../shared/types.js';
3
+ export type { AgentInfo, ProviderInfo, SessionInfo, CommandInfo } from '../shared/types.js';
4
+ export declare function initSDK(): OpencodeClient;
5
+ /** 重置 SDK 客户端(用于测试或重连) */
6
+ export declare function resetSDK(): void;
7
+ export declare function getAgents(projectPath: string): Promise<AgentInfo[]>;
8
+ export declare function extractTextFromParts(parts: Array<any>): string;
9
+ export declare function createSession(projectPath: string, title: string): Promise<string>;
10
+ export declare function createSessionWithInfo(projectPath: string, title: string): Promise<SessionInfo>;
11
+ export declare function getProviders(projectPath: string): Promise<ProviderInfo[]>;
12
+ export declare function updateConfig(projectPath: string, updates: {
13
+ agent?: string;
14
+ model?: string;
15
+ }): Promise<boolean>;
16
+ export declare function sendMessage(sessionId: string, message: string, agent?: string, projectPath?: string, model?: string, noReply?: boolean): Promise<{
17
+ text: string;
18
+ agent: string;
19
+ modelId?: string;
20
+ }>;
21
+ export declare function sendMessageAsync(sessionId: string, message: string, agent?: string, projectPath?: string, model?: string): Promise<void>;
22
+ export declare function replyPermission(requestId: string, reply: 'once' | 'always' | 'reject', projectPath?: string): Promise<void>;
23
+ export declare function replyQuestion(requestId: string, answers: Array<Array<string>>, projectPath?: string): Promise<void>;
24
+ export declare function getLatestAssistantMessage(sessionId: string, projectPath?: string): Promise<{
25
+ text: string;
26
+ agent: string;
27
+ modelId?: string;
28
+ } | null>;
29
+ export declare function getCommands(projectPath: string): Promise<CommandInfo[]>;
30
+ export declare function executeCommand(sessionId: string, commandName: string, args: string, projectPath?: string, agent?: string, model?: string): Promise<{
31
+ text: string;
32
+ agent: string;
33
+ modelId?: string;
34
+ }>;
35
+ export declare function compactSession(sessionId: string, projectPath?: string, model?: string): Promise<boolean>;
36
+ //# sourceMappingURL=sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/server/sdk.ts"],"names":[],"mappings":"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"}