@coze-arch/cli 0.0.13 → 0.0.14-alpha.c52ee4

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 (76) hide show
  1. package/lib/__templates__/expo/AGENTS.md +15 -7
  2. package/lib/__templates__/expo/README.md +15 -7
  3. package/lib/__templates__/expo/client/eslint.config.mjs +3 -0
  4. package/lib/__templates__/expo/eslint-plugins/expo/index.js +9 -0
  5. package/lib/__templates__/expo/eslint-plugins/expo/rule.js +105 -0
  6. package/lib/__templates__/expo/eslint-plugins/expo/tech.md +108 -0
  7. package/lib/__templates__/nextjs/AGENTS.md +9 -0
  8. package/lib/__templates__/nextjs/eslint.config.mjs +15 -0
  9. package/lib/__templates__/pi-agent/.coze +10 -0
  10. package/lib/__templates__/pi-agent/AGENTS.md +150 -0
  11. package/lib/__templates__/pi-agent/README.md +155 -0
  12. package/lib/__templates__/pi-agent/_gitignore +3 -0
  13. package/lib/__templates__/pi-agent/docs/project-overview.md +273 -0
  14. package/lib/__templates__/pi-agent/docs/user/getting-started.md +46 -0
  15. package/lib/__templates__/pi-agent/package.json +52 -0
  16. package/lib/__templates__/pi-agent/pnpm-lock.yaml +7840 -0
  17. package/lib/__templates__/pi-agent/scripts/dev.sh +14 -0
  18. package/lib/__templates__/pi-agent/scripts/prepare.sh +2 -0
  19. package/lib/__templates__/pi-agent/src/agent.ts +367 -0
  20. package/lib/__templates__/pi-agent/src/channels/feishu/index.ts +760 -0
  21. package/lib/__templates__/pi-agent/src/channels/feishu/streaming-card.ts +297 -0
  22. package/lib/__templates__/pi-agent/src/channels/wechat/index.ts +171 -0
  23. package/lib/__templates__/pi-agent/src/config.ts +596 -0
  24. package/lib/__templates__/pi-agent/src/core.ts +218 -0
  25. package/lib/__templates__/pi-agent/src/dashboard/api/channels.ts +148 -0
  26. package/lib/__templates__/pi-agent/src/dashboard/api/docs.ts +204 -0
  27. package/lib/__templates__/pi-agent/src/dashboard/api/models.ts +141 -0
  28. package/lib/__templates__/pi-agent/src/dashboard/api/overview.ts +33 -0
  29. package/lib/__templates__/pi-agent/src/dashboard/config-store.ts +64 -0
  30. package/lib/__templates__/pi-agent/src/dashboard/index.ts +39 -0
  31. package/lib/__templates__/pi-agent/src/dashboard/server.ts +622 -0
  32. package/lib/__templates__/pi-agent/src/dashboard/types.ts +25 -0
  33. package/lib/__templates__/pi-agent/src/dashboard/web/index.html +13 -0
  34. package/lib/__templates__/pi-agent/src/dashboard/web/postcss.config.cjs +7 -0
  35. package/lib/__templates__/pi-agent/src/dashboard/web/src/components/app-layout.tsx +186 -0
  36. package/lib/__templates__/pi-agent/src/dashboard/web/src/components/page-title.tsx +17 -0
  37. package/lib/__templates__/pi-agent/src/dashboard/web/src/components/ui/alert.tsx +22 -0
  38. package/lib/__templates__/pi-agent/src/dashboard/web/src/components/ui/badge.tsx +25 -0
  39. package/lib/__templates__/pi-agent/src/dashboard/web/src/components/ui/button.tsx +40 -0
  40. package/lib/__templates__/pi-agent/src/dashboard/web/src/components/ui/card.tsx +29 -0
  41. package/lib/__templates__/pi-agent/src/dashboard/web/src/components/ui/input.tsx +18 -0
  42. package/lib/__templates__/pi-agent/src/dashboard/web/src/components/ui/label.tsx +8 -0
  43. package/lib/__templates__/pi-agent/src/dashboard/web/src/components/ui/select.tsx +80 -0
  44. package/lib/__templates__/pi-agent/src/dashboard/web/src/components/ui/separator.tsx +23 -0
  45. package/lib/__templates__/pi-agent/src/dashboard/web/src/hooks/use-fetch.ts +32 -0
  46. package/lib/__templates__/pi-agent/src/dashboard/web/src/hooks/use-local-storage-state.ts +23 -0
  47. package/lib/__templates__/pi-agent/src/dashboard/web/src/main.tsx +30 -0
  48. package/lib/__templates__/pi-agent/src/dashboard/web/src/pages/channels-page.tsx +188 -0
  49. package/lib/__templates__/pi-agent/src/dashboard/web/src/pages/chat-page.tsx +451 -0
  50. package/lib/__templates__/pi-agent/src/dashboard/web/src/pages/docs-page.tsx +65 -0
  51. package/lib/__templates__/pi-agent/src/dashboard/web/src/pages/models-page.tsx +122 -0
  52. package/lib/__templates__/pi-agent/src/dashboard/web/src/pages/overview-page.tsx +134 -0
  53. package/lib/__templates__/pi-agent/src/dashboard/web/src/services/chat-ws-service.ts +167 -0
  54. package/lib/__templates__/pi-agent/src/dashboard/web/src/styles.css +294 -0
  55. package/lib/__templates__/pi-agent/src/dashboard/web/src/utils/index.ts +11 -0
  56. package/lib/__templates__/pi-agent/src/dashboard/web/tsconfig.json +13 -0
  57. package/lib/__templates__/pi-agent/src/dashboard/web/vite.config.ts +17 -0
  58. package/lib/__templates__/pi-agent/src/index.ts +123 -0
  59. package/lib/__templates__/pi-agent/src/session-store.ts +223 -0
  60. package/lib/__templates__/pi-agent/template.config.js +45 -0
  61. package/lib/__templates__/pi-agent/tests/config.test.ts +292 -0
  62. package/lib/__templates__/pi-agent/tests/dashboard-docs-api.test.ts +125 -0
  63. package/lib/__templates__/pi-agent/tests/dashboard-models-api.test.ts +171 -0
  64. package/lib/__templates__/pi-agent/tests/feishu-channel.test.ts +149 -0
  65. package/lib/__templates__/pi-agent/tests/feishu-streaming-card.test.ts +15 -0
  66. package/lib/__templates__/pi-agent/tests/session-store.test.ts +61 -0
  67. package/lib/__templates__/pi-agent/tests/smoke/run-smoke.ts +275 -0
  68. package/lib/__templates__/pi-agent/tsconfig.json +20 -0
  69. package/lib/__templates__/pi-agent/types/larksuiteoapi-node-sdk.d.ts +113 -0
  70. package/lib/__templates__/taro/pnpm-lock.yaml +24 -14
  71. package/lib/__templates__/taro/server/package.json +0 -2
  72. package/lib/__templates__/taro/src/presets/dev-debug.ts +2 -2
  73. package/lib/__templates__/templates.json +24 -0
  74. package/lib/__templates__/vite/AGENTS.md +5 -0
  75. package/lib/cli.js +1 -1
  76. package/package.json +1 -1
@@ -0,0 +1,33 @@
1
+ export type DashboardOverviewResponse = {
2
+ appName: string;
3
+ botStatus: string;
4
+ dashboardUrl: string;
5
+ agentMode: string;
6
+ workspaceDir: string;
7
+ agentDir: string;
8
+ enabledChannels: Array<{ id: string; enabled: boolean }>;
9
+ };
10
+
11
+ export function buildOverviewResponse(args: {
12
+ dashboardUrl: string;
13
+ dashboardStarted: boolean;
14
+ appName: string;
15
+ agentMode: string;
16
+ workspaceDir: string;
17
+ agentDir: string;
18
+ enabledChannels: { feishu: boolean; wechat: boolean };
19
+ }): DashboardOverviewResponse {
20
+ const { dashboardUrl, dashboardStarted } = args;
21
+ return {
22
+ appName: args.appName,
23
+ botStatus: dashboardStarted ? "running" : "stopped",
24
+ dashboardUrl,
25
+ agentMode: args.agentMode,
26
+ workspaceDir: args.workspaceDir || "Not set",
27
+ agentDir: args.agentDir || "Not set",
28
+ enabledChannels: [
29
+ { id: "feishu", enabled: Boolean(args.enabledChannels.feishu) },
30
+ { id: "wechat", enabled: Boolean(args.enabledChannels.wechat) },
31
+ ],
32
+ };
33
+ }
@@ -0,0 +1,64 @@
1
+ import { readFileSync, writeFileSync } from "node:fs";
2
+
3
+ export interface ConfigStore {
4
+ read(): Record<string, unknown>;
5
+ write(root: Record<string, unknown>): void;
6
+ }
7
+
8
+ export type ConfigSource =
9
+ | {
10
+ configPath: string;
11
+ configStore?: never;
12
+ }
13
+ | {
14
+ configPath?: never;
15
+ configStore: ConfigStore;
16
+ };
17
+
18
+ function cloneConfig(root: Record<string, unknown>): Record<string, unknown> {
19
+ return JSON.parse(JSON.stringify(root)) as Record<string, unknown>;
20
+ }
21
+
22
+ function ensureConfigRoot(value: unknown, source: string): Record<string, unknown> {
23
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
24
+ throw new Error(`Invalid config.json shape at ${source}`);
25
+ }
26
+ return value as Record<string, unknown>;
27
+ }
28
+
29
+ export function createFileConfigStore(configPath: string): ConfigStore {
30
+ return {
31
+ read() {
32
+ const raw = readFileSync(configPath, "utf-8");
33
+ return ensureConfigRoot(JSON.parse(raw) as unknown, configPath);
34
+ },
35
+ write(root) {
36
+ writeFileSync(configPath, `${JSON.stringify(root, null, 2)}\n`, "utf-8");
37
+ },
38
+ };
39
+ }
40
+
41
+ export function createMemoryConfigStore(
42
+ initialRoot: Record<string, unknown>,
43
+ ): ConfigStore & { snapshot(): Record<string, unknown> } {
44
+ let current = cloneConfig(initialRoot);
45
+
46
+ return {
47
+ read() {
48
+ return cloneConfig(current);
49
+ },
50
+ write(root) {
51
+ current = cloneConfig(root);
52
+ },
53
+ snapshot() {
54
+ return cloneConfig(current);
55
+ },
56
+ };
57
+ }
58
+
59
+ export function getConfigStore(source: ConfigSource): ConfigStore {
60
+ if (source.configStore) {
61
+ return source.configStore;
62
+ }
63
+ return createFileConfigStore(source.configPath);
64
+ }
@@ -0,0 +1,39 @@
1
+ import type { BotAppConfig } from "../core.js";
2
+ import { createDashboardServer } from "./server.js";
3
+ import type { DashboardServer } from "./types.js";
4
+ import type { PiAgentRuntime } from "../agent.js";
5
+ import {
6
+ createFileConfigStore,
7
+ type ConfigStore,
8
+ } from "./config-store.js";
9
+
10
+ export function createDashboard(args: {
11
+ botConfig: BotAppConfig;
12
+ channels: { feishu?: unknown; wechat?: unknown };
13
+ agentRuntime: PiAgentRuntime;
14
+ configStore?: ConfigStore;
15
+ }): DashboardServer {
16
+ const configStore =
17
+ args.configStore ??
18
+ (args.botConfig.agent.configPath
19
+ ? createFileConfigStore(args.botConfig.agent.configPath)
20
+ : undefined);
21
+ if (!configStore) {
22
+ throw new Error("Missing botConfig.agent.configPath for dashboard.");
23
+ }
24
+
25
+ return createDashboardServer({
26
+ runtime: {
27
+ appName: args.botConfig.appName,
28
+ agentMode: args.botConfig.agent.mode,
29
+ workspaceDir: args.botConfig.agent.cwd ?? "",
30
+ agentDir: args.botConfig.agent.agentDir ?? "",
31
+ enabledChannels: {
32
+ feishu: Boolean(args.channels.feishu),
33
+ wechat: Boolean(args.channels.wechat),
34
+ },
35
+ },
36
+ agentRuntime: args.agentRuntime,
37
+ configStore,
38
+ });
39
+ }