persona-core 1.0.0 → 1.0.1

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 (45) hide show
  1. package/dist/db/client.d.ts +5 -1
  2. package/dist/db/client.d.ts.map +1 -1
  3. package/dist/db/client.js +77 -80
  4. package/dist/db/client.js.map +1 -1
  5. package/dist/llm/capabilities.d.ts +1 -1
  6. package/dist/llm/capabilities.d.ts.map +1 -1
  7. package/dist/llm/capabilities.js +5 -7
  8. package/dist/llm/capabilities.js.map +1 -1
  9. package/dist/llm/interfaces.d.ts +2 -2
  10. package/dist/llm/interfaces.d.ts.map +1 -1
  11. package/dist/services/actionService.d.ts +27 -1
  12. package/dist/services/actionService.d.ts.map +1 -1
  13. package/dist/services/actionService.js +153 -10
  14. package/dist/services/actionService.js.map +1 -1
  15. package/dist/services/factory.d.ts +3 -0
  16. package/dist/services/factory.d.ts.map +1 -1
  17. package/dist/services/factory.js +1 -1
  18. package/dist/services/factory.js.map +1 -1
  19. package/dist/services/index.d.ts +1 -0
  20. package/dist/services/index.d.ts.map +1 -1
  21. package/dist/services/index.js +2 -0
  22. package/dist/services/index.js.map +1 -1
  23. package/dist/services/ossService.d.ts +101 -0
  24. package/dist/services/ossService.d.ts.map +1 -0
  25. package/dist/services/ossService.js +218 -0
  26. package/dist/services/ossService.js.map +1 -0
  27. package/dist/temporal/activities/actionActivities.d.ts.map +1 -1
  28. package/dist/temporal/activities/actionActivities.js +12 -2
  29. package/dist/temporal/activities/actionActivities.js.map +1 -1
  30. package/dist/temporal/activities/types.d.ts +6 -0
  31. package/dist/temporal/activities/types.d.ts.map +1 -1
  32. package/dist/temporal/personaWorker.d.ts +6 -0
  33. package/dist/temporal/personaWorker.d.ts.map +1 -1
  34. package/dist/temporal/personaWorker.js +1 -0
  35. package/dist/temporal/personaWorker.js.map +1 -1
  36. package/dist/temporal/worker.d.ts +1 -0
  37. package/dist/temporal/worker.d.ts.map +1 -1
  38. package/dist/temporal/workflows/scheduleWorkflow.d.ts.map +1 -1
  39. package/dist/temporal/workflows/scheduleWorkflow.js +4 -0
  40. package/dist/temporal/workflows/scheduleWorkflow.js.map +1 -1
  41. package/dist/types/nodes.d.ts +87 -29
  42. package/dist/types/nodes.d.ts.map +1 -1
  43. package/docs/add-llm-provider.md +10 -0
  44. package/docs/usage-guide.md +178 -1
  45. package/package.json +8 -2
@@ -49,7 +49,11 @@ export declare function createInMemoryDatabase(): Promise<{
49
49
  */
50
50
  export declare function createDatabase(postgresUrl?: string): Promise<DatabaseHandle>;
51
51
  /**
52
- * 运行数据库迁移(创建表)
52
+ * 运行数据库迁移(PostgreSQL)
53
+ */
54
+ export declare function runMigrationsPostgres(client: postgres.Sql): Promise<void>;
55
+ /**
56
+ * 运行数据库迁移(PGlite - 创建表)
53
57
  */
54
58
  export declare function runMigrations(pglite: PGlite): Promise<void>;
55
59
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAA4B,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAGtC,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC;AAE3D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,EAAE,EAAE,cAAc,CAAC;IACnB,cAAc;IACd,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAEnE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG;IAC9D,EAAE,EAAE,cAAc,CAAC;IACnB,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC;CACtB,CAKA;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,EAAE,EAAE,cAAc,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAID;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAwBlF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4FjE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAA4B,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAGtC,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC;AAE3D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,EAAE,EAAE,cAAc,CAAC;IACnB,cAAc;IACd,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAEnE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG;IAC9D,EAAE,EAAE,cAAc,CAAC;IACnB,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC;CACtB,CAKA;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,EAAE,EAAE,cAAc,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAID;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA0BlF;AAuED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAK/E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjE"}
package/dist/db/client.js CHANGED
@@ -42,6 +42,8 @@ export async function createDatabase(postgresUrl) {
42
42
  if (postgresUrl) {
43
43
  // 使用 PostgreSQL
44
44
  const { db, client } = createPostgresClient(postgresUrl);
45
+ // 自动运行迁移
46
+ await runMigrationsPostgres(client);
45
47
  return {
46
48
  db,
47
49
  pgClient: client,
@@ -65,93 +67,88 @@ export async function createDatabase(postgresUrl) {
65
67
  }
66
68
  }
67
69
  /**
68
- * 运行数据库迁移(创建表)
70
+ * 迁移 SQL 语句
69
71
  */
70
- export async function runMigrations(pglite) {
72
+ const MIGRATION_STATEMENTS = [
71
73
  // 创建 schedules 表
72
- await pglite.exec(`
73
- CREATE TABLE IF NOT EXISTS schedules (
74
- id VARCHAR(64) PRIMARY KEY,
75
- persona_id VARCHAR(64) NOT NULL,
76
- persona JSONB NOT NULL,
77
- name VARCHAR(256) NOT NULL,
78
- description TEXT,
79
- status VARCHAR(32) NOT NULL DEFAULT 'pending',
80
- entry_node_id VARCHAR(64) NOT NULL,
81
- current_node_id VARCHAR(64),
82
- shared_data JSONB,
83
- runtime_state JSONB,
84
- execution_seq INTEGER DEFAULT 0,
85
- created_at TIMESTAMP DEFAULT NOW(),
86
- updated_at TIMESTAMP DEFAULT NOW(),
87
- started_at TIMESTAMP,
88
- completed_at TIMESTAMP
89
- )
90
- `);
74
+ `CREATE TABLE IF NOT EXISTS schedules (
75
+ id VARCHAR(64) PRIMARY KEY,
76
+ persona_id VARCHAR(64) NOT NULL,
77
+ persona JSONB NOT NULL,
78
+ name VARCHAR(256) NOT NULL,
79
+ description TEXT,
80
+ status VARCHAR(32) NOT NULL DEFAULT 'pending',
81
+ entry_node_id VARCHAR(64) NOT NULL,
82
+ current_node_id VARCHAR(64),
83
+ shared_data JSONB,
84
+ runtime_state JSONB,
85
+ execution_seq INTEGER DEFAULT 0,
86
+ created_at TIMESTAMP DEFAULT NOW(),
87
+ updated_at TIMESTAMP DEFAULT NOW(),
88
+ started_at TIMESTAMP,
89
+ completed_at TIMESTAMP
90
+ )`,
91
91
  // 创建 schedule_nodes 表
92
- await pglite.exec(`
93
- CREATE TABLE IF NOT EXISTS schedule_nodes (
94
- id VARCHAR(64) PRIMARY KEY,
95
- schedule_id VARCHAR(64) NOT NULL,
96
- kind VARCHAR(32) NOT NULL,
97
- config JSONB,
98
- next_node_id VARCHAR(64),
99
- on_failure VARCHAR(32),
100
- created_at TIMESTAMP DEFAULT NOW(),
101
- created_by VARCHAR(64)
102
- )
103
- `);
92
+ `CREATE TABLE IF NOT EXISTS schedule_nodes (
93
+ id VARCHAR(64) PRIMARY KEY,
94
+ schedule_id VARCHAR(64) NOT NULL,
95
+ kind VARCHAR(32) NOT NULL,
96
+ config JSONB,
97
+ next_node_id VARCHAR(64),
98
+ on_failure VARCHAR(32),
99
+ created_at TIMESTAMP DEFAULT NOW(),
100
+ created_by VARCHAR(64)
101
+ )`,
104
102
  // 创建索引
105
- await pglite.exec(`
106
- CREATE INDEX IF NOT EXISTS schedule_nodes_schedule_id_idx
107
- ON schedule_nodes(schedule_id)
108
- `);
103
+ `CREATE INDEX IF NOT EXISTS schedule_nodes_schedule_id_idx ON schedule_nodes(schedule_id)`,
109
104
  // 创建 node_executions 表
110
- await pglite.exec(`
111
- CREATE TABLE IF NOT EXISTS node_executions (
112
- id VARCHAR(64) PRIMARY KEY,
113
- schedule_id VARCHAR(64) NOT NULL,
114
- node_id VARCHAR(64) NOT NULL,
115
- status VARCHAR(32) NOT NULL,
116
- result JSONB,
117
- error TEXT,
118
- retry_count INTEGER DEFAULT 0,
119
- started_at TIMESTAMP,
120
- completed_at TIMESTAMP
121
- )
122
- `);
105
+ `CREATE TABLE IF NOT EXISTS node_executions (
106
+ id VARCHAR(64) PRIMARY KEY,
107
+ schedule_id VARCHAR(64) NOT NULL,
108
+ node_id VARCHAR(64) NOT NULL,
109
+ status VARCHAR(32) NOT NULL,
110
+ result JSONB,
111
+ error TEXT,
112
+ retry_count INTEGER DEFAULT 0,
113
+ started_at TIMESTAMP,
114
+ completed_at TIMESTAMP
115
+ )`,
123
116
  // 创建索引
124
- await pglite.exec(`
125
- CREATE INDEX IF NOT EXISTS node_executions_schedule_id_idx
126
- ON node_executions(schedule_id)
127
- `);
128
- await pglite.exec(`
129
- CREATE INDEX IF NOT EXISTS node_executions_node_id_idx
130
- ON node_executions(node_id)
131
- `);
132
- await pglite.exec(`
133
- CREATE INDEX IF NOT EXISTS node_executions_schedule_node_idx
134
- ON node_executions(schedule_id, node_id)
135
- `);
117
+ `CREATE INDEX IF NOT EXISTS node_executions_schedule_id_idx ON node_executions(schedule_id)`,
118
+ `CREATE INDEX IF NOT EXISTS node_executions_node_id_idx ON node_executions(node_id)`,
119
+ `CREATE INDEX IF NOT EXISTS node_executions_schedule_node_idx ON node_executions(schedule_id, node_id)`,
136
120
  // 创建 plan_results 表
137
- await pglite.exec(`
138
- CREATE TABLE IF NOT EXISTS plan_results (
139
- idempotency_key VARCHAR(256) PRIMARY KEY,
140
- result JSONB NOT NULL,
141
- created_at TIMESTAMP DEFAULT NOW()
142
- )
143
- `);
121
+ `CREATE TABLE IF NOT EXISTS plan_results (
122
+ idempotency_key VARCHAR(256) PRIMARY KEY,
123
+ result JSONB NOT NULL,
124
+ created_at TIMESTAMP DEFAULT NOW()
125
+ )`,
144
126
  // 创建 personas 表
145
- await pglite.exec(`
146
- CREATE TABLE IF NOT EXISTS personas (
147
- id VARCHAR(64) PRIMARY KEY,
148
- name VARCHAR(256) NOT NULL,
149
- description TEXT,
150
- system_prompt TEXT NOT NULL,
151
- action_types JSONB NOT NULL,
152
- created_at TIMESTAMP DEFAULT NOW(),
153
- updated_at TIMESTAMP DEFAULT NOW()
154
- )
155
- `);
127
+ `CREATE TABLE IF NOT EXISTS personas (
128
+ id VARCHAR(64) PRIMARY KEY,
129
+ name VARCHAR(256) NOT NULL,
130
+ description TEXT,
131
+ system_prompt TEXT NOT NULL,
132
+ action_types JSONB NOT NULL,
133
+ created_at TIMESTAMP DEFAULT NOW(),
134
+ updated_at TIMESTAMP DEFAULT NOW()
135
+ )`,
136
+ ];
137
+ /**
138
+ * 运行数据库迁移(PostgreSQL)
139
+ */
140
+ export async function runMigrationsPostgres(client) {
141
+ for (const sql of MIGRATION_STATEMENTS) {
142
+ await client.unsafe(sql);
143
+ }
144
+ console.log('[persona-core] Database migrations completed (PostgreSQL)');
145
+ }
146
+ /**
147
+ * 运行数据库迁移(PGlite - 创建表)
148
+ */
149
+ export async function runMigrations(pglite) {
150
+ for (const sql of MIGRATION_STATEMENTS) {
151
+ await pglite.exec(sql);
152
+ }
156
153
  }
157
154
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAkB,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAoBtC;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,OAAO,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,gBAAwB;IAI3D,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC1C,gCAAgC;IAChC,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAA8B,CAAC;IAC5E,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAI1C,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,WAAoB;IACvD,IAAI,WAAW,EAAE,CAAC;QAChB,gBAAgB;QAChB,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACzD,OAAO;YACL,EAAE;YACF,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;YACrB,CAAC;SACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,kBAAkB;QAClB,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO;YACL,EAAE;YACF,MAAM;YACN,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc;IAChD,iBAAiB;IACjB,MAAM,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;GAkBjB,CAAC,CAAC;IAEH,sBAAsB;IACtB,MAAM,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;;GAWjB,CAAC,CAAC;IAEH,OAAO;IACP,MAAM,MAAM,CAAC,IAAI,CAAC;;;GAGjB,CAAC,CAAC;IAEH,uBAAuB;IACvB,MAAM,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;;;GAYjB,CAAC,CAAC;IAEH,OAAO;IACP,MAAM,MAAM,CAAC,IAAI,CAAC;;;GAGjB,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,IAAI,CAAC;;;GAGjB,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,IAAI,CAAC;;;GAGjB,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,MAAM,CAAC,IAAI,CAAC;;;;;;GAMjB,CAAC,CAAC;IAEH,gBAAgB;IAChB,MAAM,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;GAUjB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,7 @@ export declare class LLMContentGenerationCapability implements ContentGeneration
43
43
  constructor(provider: LLMProvider,
44
44
  /** 默认选项,内容生成场景可使用较高 temperature (0.7-0.9) 以增加创意性 */
45
45
  defaultOptions?: LLMCallOptions | undefined);
46
- generate(actionName: string, actionDescription: string | undefined, inputs: Record<string, unknown>, outputFields: Array<{
46
+ generate(actionName: string, actionDescription: string | undefined, sharedData: Record<string, unknown>, outputFields: Array<{
47
47
  name: string;
48
48
  typeHint?: string;
49
49
  }>, options?: LLMCallOptions): Promise<ContentGenerationResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/llm/capabilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,qBAAa,qBAAsB,YAAW,kBAAkB;IAE5D,OAAO,CAAC,QAAQ;IAChB,2CAA2C;IAC3C,OAAO,CAAC,cAAc,CAAC;gBAFf,QAAQ,EAAE,WAAW;IAC7B,2CAA2C;IACnC,cAAc,CAAC,EAAE,cAAc,YAAA;IAGnC,IAAI,CACR,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,cAAc,CAAC;IAuB1B,OAAO,CAAC,iBAAiB;IA+EzB,OAAO,CAAC,eAAe;IAkDvB,OAAO,CAAC,eAAe;CAwCxB;AAED;;GAEG;AACH,qBAAa,2BAA4B,YAAW,wBAAwB;IAExE,OAAO,CAAC,QAAQ;IAChB,2CAA2C;IAC3C,OAAO,CAAC,cAAc,CAAC;gBAFf,QAAQ,EAAE,WAAW;IAC7B,2CAA2C;IACnC,cAAc,CAAC,EAAE,cAAc,YAAA;IAGnC,MAAM,CACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EACnD,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC;CAqCnB;AAED;;GAEG;AACH,qBAAa,8BAA+B,YAAW,2BAA2B;IAE9E,OAAO,CAAC,QAAQ;IAChB,oDAAoD;IACpD,OAAO,CAAC,cAAc,CAAC;gBAFf,QAAQ,EAAE,WAAW;IAC7B,oDAAoD;IAC5C,cAAc,CAAC,EAAE,cAAc,YAAA;IAGnC,QAAQ,CACZ,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACxD,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,uBAAuB,CAAC;IAiDnC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAa1B"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/llm/capabilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,qBAAa,qBAAsB,YAAW,kBAAkB;IAE5D,OAAO,CAAC,QAAQ;IAChB,2CAA2C;IAC3C,OAAO,CAAC,cAAc,CAAC;gBAFf,QAAQ,EAAE,WAAW;IAC7B,2CAA2C;IACnC,cAAc,CAAC,EAAE,cAAc,YAAA;IAGnC,IAAI,CACR,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,cAAc,CAAC;IAuB1B,OAAO,CAAC,iBAAiB;IA+EzB,OAAO,CAAC,eAAe;IAkDvB,OAAO,CAAC,eAAe;CAwCxB;AAED;;GAEG;AACH,qBAAa,2BAA4B,YAAW,wBAAwB;IAExE,OAAO,CAAC,QAAQ;IAChB,2CAA2C;IAC3C,OAAO,CAAC,cAAc,CAAC;gBAFf,QAAQ,EAAE,WAAW;IAC7B,2CAA2C;IACnC,cAAc,CAAC,EAAE,cAAc,YAAA;IAGnC,MAAM,CACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EACnD,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC;CAqCnB;AAED;;GAEG;AACH,qBAAa,8BAA+B,YAAW,2BAA2B;IAE9E,OAAO,CAAC,QAAQ;IAChB,oDAAoD;IACpD,OAAO,CAAC,cAAc,CAAC;gBAFf,QAAQ,EAAE,WAAW;IAC7B,oDAAoD;IAC5C,cAAc,CAAC,EAAE,cAAc,YAAA;IAGnC,QAAQ,CACZ,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACxD,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,uBAAuB,CAAC;IA8CnC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAa1B"}
@@ -247,10 +247,7 @@ export class LLMContentGenerationCapability {
247
247
  this.provider = provider;
248
248
  this.defaultOptions = defaultOptions;
249
249
  }
250
- async generate(actionName, actionDescription, inputs, outputFields, options) {
251
- const inputsDesc = Object.entries(inputs)
252
- .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)
253
- .join('\n');
250
+ async generate(actionName, actionDescription, sharedData, outputFields, options) {
254
251
  // 基于 outputFields 动态构建 JSON schema 确保输出一致性
255
252
  const outputSchema = this.buildOutputSchema(outputFields);
256
253
  // 合并默认选项和传入选项
@@ -276,10 +273,11 @@ export class LLMContentGenerationCapability {
276
273
 
277
274
  任务描述:${actionDescription ?? ''}
278
275
 
279
- 输入参数:
280
- ${inputsDesc}
276
+ ## 当前共享数据
277
+
278
+ ${JSON.stringify(sharedData, null, 2)}
281
279
 
282
- 请完成这个任务并返回结果。`,
280
+ 请根据共享数据中的信息完成这个任务并返回结果。`,
283
281
  },
284
282
  ], { schema: outputSchema }, mergedOptions);
285
283
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/llm/capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/llm/capabilities.ts"],"names":[],"mappings":"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"}
@@ -236,12 +236,12 @@ export interface ContentGenerationCapability {
236
236
  * 生成内容
237
237
  * @param actionName 动作名称
238
238
  * @param actionDescription 动作描述
239
- * @param inputs 输入参数
239
+ * @param sharedData 共享数据(与 thinking 节点一样自动传入所有数据)
240
240
  * @param outputFields 期望的输出字段
241
241
  * @param options 可选的 LLM 调用选项(如 temperature)
242
242
  * @returns 生成结果(包含输出和可选的思考过程)
243
243
  */
244
- generate(actionName: string, actionDescription: string | undefined, inputs: Record<string, unknown>, outputFields: Array<{
244
+ generate(actionName: string, actionDescription: string | undefined, sharedData: Record<string, unknown>, outputFields: Array<{
245
245
  name: string;
246
246
  typeHint?: string;
247
247
  }>, options?: LLMCallOptions): Promise<ContentGenerationResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/llm/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/llm/interfaces.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  import { ActionService, ActionContext, ActionResult, TaskStatus } from './interfaces.js';
6
6
  import { ActionNodeType } from '../types/index.js';
7
7
  import { ContentGenerationCapability, LLMCallOptions } from '../llm/interfaces.js';
8
+ import { OssService } from './ossService.js';
8
9
  /**
9
10
  * 文件操作配置
10
11
  */
@@ -24,11 +25,14 @@ export declare class DefaultActionService implements ActionService {
24
25
  private fileConfig;
25
26
  private fileLoader;
26
27
  private nunjucksEnv;
28
+ private ossService?;
27
29
  constructor(
28
30
  /** LLM 内容生成能力(用于 llm_call 类型) */
29
31
  contentGeneration: ContentGenerationCapability, defaultOptions?: LLMCallOptions | undefined,
30
32
  /** 文件操作配置 */
31
- fileConfig?: Partial<FileOperationConfig>);
33
+ fileConfig?: Partial<FileOperationConfig>,
34
+ /** OSS 服务(可选,用于 saveToOss 功能) */
35
+ ossService?: OssService);
32
36
  /**
33
37
  * 注册 Nunjucks 内置过滤器
34
38
  * 替换原有的 Loader 和 Transformer 系统
@@ -54,6 +58,10 @@ export declare class DefaultActionService implements ActionService {
54
58
  /**
55
59
  * 解析 URL 中的模板变量
56
60
  * 支持 ${variableName} 格式
61
+ *
62
+ * 智能编码逻辑:
63
+ * - 如果模板只有一个变量且值看起来是完整 URL,则不编码
64
+ * - 否则对变量值进行 URL 编码(用于路径片段等)
57
65
  */
58
66
  private resolveUrlTemplate;
59
67
  /**
@@ -73,6 +81,19 @@ export declare class DefaultActionService implements ActionService {
73
81
  * 用于处理大型响应(如图片、视频),避免超出 Temporal payload 限制
74
82
  */
75
83
  private saveResponseDataToFile;
84
+ /**
85
+ * 将响应数据保存到对象存储
86
+ * 支持三种模式:
87
+ * 1. 响应数据是 base64 编码 - 直接转换上传
88
+ * 2. 响应数据是 URL - 下载后再上传
89
+ * 3. 响应数据是 ArrayBuffer/Buffer - 直接上传二进制数据
90
+ */
91
+ private saveResponseDataToOss;
92
+ /**
93
+ * 统一的 OSS 上传方法
94
+ * 用于同步 API 响应和异步任务结果的上传
95
+ */
96
+ private uploadDataToOss;
76
97
  /**
77
98
  * 将数据转换为 Buffer
78
99
  * 支持多种数据格式
@@ -110,6 +131,11 @@ export declare class DefaultActionService implements ActionService {
110
131
  submitAsyncTask(actionType: ActionNodeType, context: ActionContext): Promise<string>;
111
132
  checkTaskStatus(taskId: string): Promise<TaskStatus>;
112
133
  getTaskResult(taskId: string): Promise<ActionResult>;
134
+ /**
135
+ * 将异步任务结果保存到对象存储
136
+ * 复用 uploadDataToOss 统一方法
137
+ */
138
+ private saveAsyncResultToOss;
113
139
  /**
114
140
  * 解析异步 URL 模板
115
141
  * 支持 ${taskId} 和 ${fieldName} 变量
@@ -1 +1 @@
1
- {"version":3,"file":"actionService.d.ts","sourceRoot":"","sources":["../../src/services/actionService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAkC,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGnF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAmBD,qBAAa,oBAAqB,YAAW,aAAa;IAOtD,iCAAiC;IACjC,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,cAAc,CAAC;IARzB,OAAO,CAAC,iBAAiB,CAA4C;IACrE,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAuB;;IAGxC,iCAAiC;IACzB,iBAAiB,EAAE,2BAA2B,EAC9C,cAAc,CAAC,EAAE,cAAc,YAAA;IACvC,aAAa;IACb,UAAU,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAgB3C;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IA6J/B;;OAEG;YACW,mBAAmB;IAQjC;;;;OAIG;YACW,mBAAmB;IAmCjC;;OAEG;YACW,cAAc;IAetB,WAAW,CACf,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC;YA2BV,cAAc;YAkBd,cAAc;IA0D5B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;YACW,YAAY;IA4D1B;;OAEG;YACW,gBAAgB;IAoE9B;;OAEG;YACW,kBAAkB;IAkEhC;;;OAGG;YACW,sBAAsB;IAuCpC;;;OAGG;IACH,OAAO,CAAC,eAAe;IAqFvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;YA0BP,kBAAkB;YAmBlB,oBAAoB;IA2BlC;;OAEG;IACH,OAAO,CAAC,eAAe;IAyBvB;;OAEG;YACW,gBAAgB;IAkD9B;;OAEG;YACW,eAAe;YA4Cf,oBAAoB;YASpB,mBAAmB;IAS3B,eAAe,CACnB,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC;IAuDZ,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAiEpD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoD1D;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAkB/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;;OAGG;IACH,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAG9C"}
1
+ {"version":3,"file":"actionService.d.ts","sourceRoot":"","sources":["../../src/services/actionService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAmD,MAAM,mBAAmB,CAAC;AACpG,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAmBD,qBAAa,oBAAqB,YAAW,aAAa;IAQtD,iCAAiC;IACjC,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,cAAc,CAAC;IATzB,OAAO,CAAC,iBAAiB,CAA4C;IACrE,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,UAAU,CAAC,CAAa;;IAG9B,iCAAiC;IACzB,iBAAiB,EAAE,2BAA2B,EAC9C,cAAc,CAAC,EAAE,cAAc,YAAA;IACvC,aAAa;IACb,UAAU,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IACzC,iCAAiC;IACjC,UAAU,CAAC,EAAE,UAAU;IAiBzB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IA6J/B;;OAEG;YACW,mBAAmB;IAQjC;;;;OAIG;YACW,mBAAmB;IAmCjC;;OAEG;YACW,cAAc;IAetB,WAAW,CACf,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC;YA2BV,cAAc;YAoBd,cAAc;IA0D5B;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;OAEG;YACW,YAAY;IA4D1B;;OAEG;YACW,gBAAgB;IAoE9B;;OAEG;YACW,kBAAkB;IAuFhC;;;OAGG;YACW,sBAAsB;IAuCpC;;;;;;OAMG;YACW,qBAAqB;IAQnC;;;OAGG;YACW,eAAe;IAsF7B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAqFvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;YA0BP,kBAAkB;YAmBlB,oBAAoB;IA2BlC;;OAEG;IACH,OAAO,CAAC,eAAe;IAyBvB;;OAEG;YACW,gBAAgB;IAkD9B;;OAEG;YACW,eAAe;YA4Cf,oBAAoB;YASpB,mBAAmB;IAS3B,eAAe,CACnB,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC;IAuDZ,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAiEpD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA2E1D;;;OAGG;YACW,oBAAoB;IAQlC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAkB/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;;OAGG;IACH,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAG9C"}
@@ -13,11 +13,14 @@ export class DefaultActionService {
13
13
  fileConfig;
14
14
  fileLoader;
15
15
  nunjucksEnv;
16
+ ossService;
16
17
  constructor(
17
18
  /** LLM 内容生成能力(用于 llm_call 类型) */
18
19
  contentGeneration, defaultOptions,
19
20
  /** 文件操作配置 */
20
- fileConfig) {
21
+ fileConfig,
22
+ /** OSS 服务(可选,用于 saveToOss 功能) */
23
+ ossService) {
21
24
  this.contentGeneration = contentGeneration;
22
25
  this.defaultOptions = defaultOptions;
23
26
  this.fileConfig = {
@@ -26,6 +29,7 @@ export class DefaultActionService {
26
29
  maxFileSize: fileConfig?.maxFileSize ?? 10 * 1024 * 1024, // 10MB
27
30
  };
28
31
  this.fileLoader = new FileLoader(this.fileConfig.baseDir, this.fileConfig.maxFileSize);
32
+ this.ossService = ossService;
29
33
  // 初始化 Nunjucks 环境
30
34
  this.nunjucksEnv = new nunjucks.Environment(null, {
31
35
  autoescape: false, // JSON 模板不需要 HTML 转义
@@ -257,7 +261,9 @@ export class DefaultActionService {
257
261
  }
258
262
  }
259
263
  async executeLLMCall(actionType, context) {
260
- const result = await this.contentGeneration.generate(actionType.name, actionType.description, context.resolvedInputs, actionType.outputFields, this.defaultOptions);
264
+ // llm_call 类型的 action thinking 节点一样自动获取所有 shared data
265
+ // LLM 可以自行决定需要引用哪些数据,无需通过 inputFields 预先指定
266
+ const result = await this.contentGeneration.generate(actionType.name, actionType.description, context.sharedData.data, actionType.outputFields, this.defaultOptions);
261
267
  return {
262
268
  outputs: result.outputs,
263
269
  reasoningContent: result.reasoningContent,
@@ -310,8 +316,25 @@ export class DefaultActionService {
310
316
  /**
311
317
  * 解析 URL 中的模板变量
312
318
  * 支持 ${variableName} 格式
319
+ *
320
+ * 智能编码逻辑:
321
+ * - 如果模板只有一个变量且值看起来是完整 URL,则不编码
322
+ * - 否则对变量值进行 URL 编码(用于路径片段等)
313
323
  */
314
324
  resolveUrlTemplate(urlTemplate, inputs) {
325
+ // 检查是否整个模板就是一个变量(常见于动态 URL 场景)
326
+ const singleVarMatch = urlTemplate.match(/^\$\{(\w+)\}$/);
327
+ if (singleVarMatch) {
328
+ const value = inputs[singleVarMatch[1]];
329
+ if (value === undefined || value === null) {
330
+ throw new Error(`Missing URL template variable: ${singleVarMatch[1]}`);
331
+ }
332
+ const strValue = String(value);
333
+ // 如果值看起来像是完整 URL,直接返回不编码
334
+ if (strValue.startsWith('http://') || strValue.startsWith('https://')) {
335
+ return strValue;
336
+ }
337
+ }
315
338
  return urlTemplate.replace(/\$\{(\w+)\}/g, (_match, varName) => {
316
339
  const value = inputs[varName];
317
340
  if (value === undefined || value === null) {
@@ -478,6 +501,20 @@ export class DefaultActionService {
478
501
  outputs.success = true;
479
502
  return outputs;
480
503
  }
504
+ // 检查是否配置了 saveToOss
505
+ const saveToOssConfig = apiConfig.response?.saveToOss;
506
+ if (saveToOssConfig?.enabled) {
507
+ const saveResult = await this.saveResponseDataToOss(responseData, saveToOssConfig, inputs);
508
+ // 返回 OSS URL 和相关信息,不返回原始数据
509
+ const outputField = saveToOssConfig.outputField ?? 'ossUrl';
510
+ outputs[outputField] = saveResult.url;
511
+ outputs.ossKey = saveResult.key;
512
+ outputs.bucket = saveResult.bucket;
513
+ outputs.bytesUploaded = saveResult.bytesUploaded;
514
+ outputs.contentType = saveResult.contentType;
515
+ outputs.success = true;
516
+ return outputs;
517
+ }
481
518
  // 如果配置了字段提取
482
519
  if (apiConfig.response?.extract && typeof responseData === 'object' && responseData !== null) {
483
520
  for (const [outputField, jsonPath] of Object.entries(apiConfig.response.extract)) {
@@ -522,6 +559,82 @@ export class DefaultActionService {
522
559
  bytesWritten: buffer.length,
523
560
  };
524
561
  }
562
+ /**
563
+ * 将响应数据保存到对象存储
564
+ * 支持三种模式:
565
+ * 1. 响应数据是 base64 编码 - 直接转换上传
566
+ * 2. 响应数据是 URL - 下载后再上传
567
+ * 3. 响应数据是 ArrayBuffer/Buffer - 直接上传二进制数据
568
+ */
569
+ async saveResponseDataToOss(responseData, config, inputs) {
570
+ return this.uploadDataToOss(responseData, config, inputs);
571
+ }
572
+ /**
573
+ * 统一的 OSS 上传方法
574
+ * 用于同步 API 响应和异步任务结果的上传
575
+ */
576
+ async uploadDataToOss(responseData, config, inputs) {
577
+ // 检查 OSS 服务是否可用
578
+ if (!this.ossService) {
579
+ throw new Error('OSS service is not configured. Please provide an OssService instance to DefaultActionService.');
580
+ }
581
+ // 获取 OSS key
582
+ const ossKey = inputs[config.keyField];
583
+ if (!ossKey) {
584
+ throw new Error(`saveToOss.keyField "${config.keyField}" not found in inputs`);
585
+ }
586
+ // 提取要保存的数据
587
+ let dataToSave = responseData;
588
+ if (config.dataPath) {
589
+ dataToSave = this.extractByPath(responseData, config.dataPath);
590
+ if (dataToSave === undefined) {
591
+ throw new Error(`Could not extract data from response using path: ${config.dataPath}`);
592
+ }
593
+ }
594
+ // 预处理:如果数据是对象且包含 url 字段,提取 url
595
+ if (typeof dataToSave === 'object' && dataToSave !== null && !ArrayBuffer.isView(dataToSave) && !(dataToSave instanceof ArrayBuffer) && 'url' in dataToSave) {
596
+ dataToSave = dataToSave.url;
597
+ }
598
+ // 处理 ArrayBuffer/Buffer 类型(二进制响应)
599
+ if (dataToSave instanceof ArrayBuffer || ArrayBuffer.isView(dataToSave)) {
600
+ const buffer = dataToSave instanceof ArrayBuffer
601
+ ? Buffer.from(dataToSave)
602
+ : Buffer.from(dataToSave.buffer, dataToSave.byteOffset, dataToSave.byteLength);
603
+ return this.ossService.uploadFromBuffer(config.bucket, ossKey, buffer, { contentType: config.contentType });
604
+ }
605
+ // 确定数据来源类型
606
+ const sourceType = config.sourceType ?? 'auto';
607
+ let detectedSourceType;
608
+ if (sourceType === 'auto') {
609
+ if (typeof dataToSave === 'string') {
610
+ if (dataToSave.startsWith('data:') || this.looksLikeBase64(dataToSave)) {
611
+ detectedSourceType = 'base64';
612
+ }
613
+ else if (dataToSave.startsWith('http://') || dataToSave.startsWith('https://')) {
614
+ detectedSourceType = 'url';
615
+ }
616
+ else {
617
+ throw new Error('Cannot auto-detect source type. Data is not a valid base64 or URL.');
618
+ }
619
+ }
620
+ else {
621
+ throw new Error('saveToOss requires string data (base64 or URL) or binary data (ArrayBuffer/Buffer)');
622
+ }
623
+ }
624
+ else {
625
+ detectedSourceType = sourceType;
626
+ }
627
+ if (typeof dataToSave !== 'string') {
628
+ throw new Error('saveToOss requires string data (base64 or URL) or binary data (ArrayBuffer/Buffer)');
629
+ }
630
+ // 根据来源类型上传
631
+ if (detectedSourceType === 'base64') {
632
+ return this.ossService.uploadFromBase64(config.bucket, ossKey, dataToSave, { contentType: config.contentType });
633
+ }
634
+ else {
635
+ return this.ossService.uploadFromUrl(config.bucket, ossKey, dataToSave, { contentType: config.contentType });
636
+ }
637
+ }
525
638
  /**
526
639
  * 将数据转换为 Buffer
527
640
  * 支持多种数据格式
@@ -896,6 +1009,8 @@ export class DefaultActionService {
896
1009
  throw new Error(`Task context not found for taskId: ${taskId}. The task may not have been submitted through this service instance.`);
897
1010
  }
898
1011
  const resultFetch = ctx.asyncMode.resultFetch;
1012
+ let outputs;
1013
+ let rawResponseData;
899
1014
  // 情况 1: 有独立的结果获取 URL
900
1015
  if (resultFetch?.url) {
901
1016
  const url = this.resolveAsyncUrlTemplate(resultFetch.url, taskId, ctx.inputs);
@@ -911,22 +1026,50 @@ export class DefaultActionService {
911
1026
  throw new Error(`Result fetch failed: ${response.status} ${response.statusText}`);
912
1027
  }
913
1028
  const data = await response.json();
1029
+ rawResponseData = data;
914
1030
  // 应用结果提取映射
915
1031
  if (resultFetch.extract) {
916
- return { outputs: this.extractMultipleFields(data, resultFetch.extract) };
1032
+ outputs = this.extractMultipleFields(data, resultFetch.extract);
1033
+ }
1034
+ else {
1035
+ outputs = data;
917
1036
  }
918
- return { outputs: data };
919
1037
  }
920
- // 情况 2: 从最后一次状态检查响应中提取结果
921
- if (ctx.lastStatusResponse) {
1038
+ else if (ctx.lastStatusResponse) {
1039
+ // 情况 2: 从最后一次状态检查响应中提取结果
1040
+ rawResponseData = ctx.lastStatusResponse;
922
1041
  const extractConfig = resultFetch?.extractFromStatus;
923
1042
  if (extractConfig) {
924
- return { outputs: this.extractMultipleFields(ctx.lastStatusResponse, extractConfig) };
1043
+ outputs = this.extractMultipleFields(ctx.lastStatusResponse, extractConfig);
925
1044
  }
926
- // 使用整个状态响应作为结果
927
- return { outputs: ctx.lastStatusResponse };
1045
+ else {
1046
+ // 使用整个状态响应作为结果
1047
+ outputs = ctx.lastStatusResponse;
1048
+ }
1049
+ }
1050
+ else {
1051
+ throw new Error('No result available: neither result URL nor status response found');
1052
+ }
1053
+ // 检查是否配置了 saveToOss,如果配置了则执行上传
1054
+ if (resultFetch?.saveToOss?.enabled) {
1055
+ const saveResult = await this.saveAsyncResultToOss(rawResponseData, resultFetch.saveToOss, ctx.inputs);
1056
+ // 返回 OSS URL 和相关信息
1057
+ const outputField = resultFetch.saveToOss.outputField ?? 'ossUrl';
1058
+ outputs[outputField] = saveResult.url;
1059
+ outputs.ossKey = saveResult.key;
1060
+ outputs.bucket = saveResult.bucket;
1061
+ outputs.bytesUploaded = saveResult.bytesUploaded;
1062
+ outputs.contentType = saveResult.contentType;
1063
+ outputs.success = true;
928
1064
  }
929
- throw new Error('No result available: neither result URL nor status response found');
1065
+ return { outputs };
1066
+ }
1067
+ /**
1068
+ * 将异步任务结果保存到对象存储
1069
+ * 复用 uploadDataToOss 统一方法
1070
+ */
1071
+ async saveAsyncResultToOss(responseData, config, inputs) {
1072
+ return this.uploadDataToOss(responseData, config, inputs);
930
1073
  }
931
1074
  /**
932
1075
  * 解析异步 URL 模板