superun-ai-cli 0.1.46 → 0.1.66
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.
- package/INSTALL.md +2 -0
- package/README.en.md +190 -6
- package/README.md +209 -8
- package/dist/api/agent-query-api.d.ts +27 -0
- package/dist/api/agent-query-api.js +31 -0
- package/dist/api/agent-query-api.js.map +1 -1
- package/dist/api/bill-query-api.d.ts +61 -0
- package/dist/api/bill-query-api.js +92 -0
- package/dist/api/bill-query-api.js.map +1 -0
- package/dist/api/managed-agent-resource-api.d.ts +19 -0
- package/dist/api/managed-agent-resource-api.js +63 -0
- package/dist/api/managed-agent-resource-api.js.map +1 -0
- package/dist/api/market-query-api.d.ts +74 -0
- package/dist/api/market-query-api.js +145 -0
- package/dist/api/market-query-api.js.map +1 -0
- package/dist/api/order-query-api.d.ts +47 -0
- package/dist/api/order-query-api.js +96 -0
- package/dist/api/order-query-api.js.map +1 -0
- package/dist/api/ppt-api.d.ts +258 -0
- package/dist/api/ppt-api.js +111 -0
- package/dist/api/ppt-api.js.map +1 -0
- package/dist/api/publish-api.d.ts +1 -0
- package/dist/api/publish-api.js +3 -0
- package/dist/api/publish-api.js.map +1 -1
- package/dist/api/security-review-api.d.ts +1 -1
- package/dist/api/security-review-api.js +15 -1
- package/dist/api/security-review-api.js.map +1 -1
- package/dist/api/site-analysis-api.d.ts +85 -0
- package/dist/api/site-analysis-api.js +165 -0
- package/dist/api/site-analysis-api.js.map +1 -0
- package/dist/auth/browser-login.d.ts +1 -0
- package/dist/auth/browser-login.js +25 -2
- package/dist/auth/browser-login.js.map +1 -1
- package/dist/auth/credential-status.d.ts +4 -0
- package/dist/auth/credential-status.js +19 -0
- package/dist/auth/credential-status.js.map +1 -0
- package/dist/auth/pat-store.js +14 -3
- package/dist/auth/pat-store.js.map +1 -1
- package/dist/auth/windows-credential-acl.d.ts +2 -0
- package/dist/auth/windows-credential-acl.js +68 -0
- package/dist/auth/windows-credential-acl.js.map +1 -0
- package/dist/commands/agent/index.d.ts +3 -0
- package/dist/commands/agent/index.js +68 -0
- package/dist/commands/agent/index.js.map +1 -0
- package/dist/commands/auth/login.js +8 -3
- package/dist/commands/auth/login.js.map +1 -1
- package/dist/commands/auth/status.d.ts +1 -1
- package/dist/commands/auth/status.js +7 -2
- package/dist/commands/auth/status.js.map +1 -1
- package/dist/commands/bill/index.d.ts +3 -0
- package/dist/commands/bill/index.js +106 -0
- package/dist/commands/bill/index.js.map +1 -0
- package/dist/commands/chat/create.js +1 -0
- package/dist/commands/chat/create.js.map +1 -1
- package/dist/commands/chat/interaction.js +39 -6
- package/dist/commands/chat/interaction.js.map +1 -1
- package/dist/commands/chat/message.js +56 -34
- package/dist/commands/chat/message.js.map +1 -1
- package/dist/commands/chat/publish.js +72 -11
- package/dist/commands/chat/publish.js.map +1 -1
- package/dist/commands/chat/security.d.ts +1 -1
- package/dist/commands/chat/security.js +73 -29
- package/dist/commands/chat/security.js.map +1 -1
- package/dist/commands/independent-creation.d.ts +6 -0
- package/dist/commands/independent-creation.js +140 -0
- package/dist/commands/independent-creation.js.map +1 -0
- package/dist/commands/market/index.d.ts +3 -0
- package/dist/commands/market/index.js +111 -0
- package/dist/commands/market/index.js.map +1 -0
- package/dist/commands/order/index.d.ts +3 -0
- package/dist/commands/order/index.js +41 -0
- package/dist/commands/order/index.js.map +1 -0
- package/dist/commands/ppt/index.d.ts +3 -0
- package/dist/commands/ppt/index.js +159 -0
- package/dist/commands/ppt/index.js.map +1 -0
- package/dist/commands/session/diff.d.ts +4 -0
- package/dist/commands/session/diff.js +12 -0
- package/dist/commands/session/diff.js.map +1 -0
- package/dist/commands/session/history.d.ts +3 -0
- package/dist/commands/session/history.js +50 -0
- package/dist/commands/session/history.js.map +1 -0
- package/dist/commands/session/index.js +4 -0
- package/dist/commands/session/index.js.map +1 -1
- package/dist/commands/shared.d.ts +2 -2
- package/dist/commands/shared.js +5 -4
- package/dist/commands/shared.js.map +1 -1
- package/dist/commands/site/index.d.ts +3 -0
- package/dist/commands/site/index.js +113 -0
- package/dist/commands/site/index.js.map +1 -0
- package/dist/commands/system/version.js +13 -2
- package/dist/commands/system/version.js.map +1 -1
- package/dist/conversation/managed-agent-create-only.d.ts +26 -0
- package/dist/conversation/managed-agent-create-only.js +287 -0
- package/dist/conversation/managed-agent-create-only.js.map +1 -0
- package/dist/conversation/managed-agent-entry.d.ts +8 -8
- package/dist/conversation/ppt-preflight.d.ts +13 -0
- package/dist/conversation/ppt-preflight.js +68 -0
- package/dist/conversation/ppt-preflight.js.map +1 -0
- package/dist/conversation/project-check-preflight.d.ts +22 -0
- package/dist/conversation/project-check-preflight.js +89 -0
- package/dist/conversation/project-check-preflight.js.map +1 -0
- package/dist/conversation/publish-preflight.d.ts +44 -0
- package/dist/conversation/publish-preflight.js +123 -0
- package/dist/conversation/publish-preflight.js.map +1 -0
- package/dist/conversation/security-entry.d.ts +14 -0
- package/dist/conversation/security-entry.js +49 -0
- package/dist/conversation/security-entry.js.map +1 -0
- package/dist/conversation/security-review.d.ts +1 -1
- package/dist/conversation/security-review.js +1 -1
- package/dist/conversation/security-review.js.map +1 -1
- package/dist/conversation/snapshot-diff.d.ts +44 -0
- package/dist/conversation/snapshot-diff.js +134 -0
- package/dist/conversation/snapshot-diff.js.map +1 -0
- package/dist/interactions/managed-agent-model.d.ts +3 -0
- package/dist/interactions/managed-agent-model.js +2 -0
- package/dist/interactions/managed-agent-model.js.map +1 -1
- package/dist/interactions/managed-agent-wizard.d.ts +1 -1
- package/dist/interactions/managed-agent-wizard.js +38 -6
- package/dist/interactions/managed-agent-wizard.js.map +1 -1
- package/dist/program.js +12 -0
- package/dist/program.js.map +1 -1
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.js +2 -2
- package/dist/runtime.js.map +1 -1
- package/dist/site-analysis/pagespeed-report.d.ts +48 -0
- package/dist/site-analysis/pagespeed-report.js +163 -0
- package/dist/site-analysis/pagespeed-report.js.map +1 -0
- package/dist/transport/http-client.js +17 -3
- package/dist/transport/http-client.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
/** 智能体搭建专属入口绑定;不改变其它专家向导的默认行为。@author xiuyu.yi */
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { pendingTool } from '../interactions/context.js';
|
|
4
|
+
import { InteractionDraftStore } from '../interactions/draft-store.js';
|
|
5
|
+
import { ManagedAgentResourceApi } from '../api/managed-agent-resource-api.js';
|
|
6
|
+
import { object, text } from '../contracts/value.js';
|
|
7
|
+
import { CliError } from '../output/exit-codes.js';
|
|
8
|
+
import { currentRound, roundContainingMessage } from './round-selector.js';
|
|
9
|
+
import { collectInteractions } from '../interactions/registry.js';
|
|
10
|
+
import { hasPendingCreationWork } from './state-resolver.js';
|
|
11
|
+
import { buildManagedAgentIntentRoutingArgs, MANAGED_AGENT_CREATION_SKILL_ID, } from './managed-agent-entry.js';
|
|
12
|
+
const entrySchema = z.object({
|
|
13
|
+
sessionId: z.string(),
|
|
14
|
+
state: z.enum(['pending', 'active', 'complete', 'failed']),
|
|
15
|
+
sourceMessageId: z.string().optional(),
|
|
16
|
+
sourceReplyMessageId: z.string().optional(),
|
|
17
|
+
previousMessageId: z.string().optional(),
|
|
18
|
+
interactionId: z.string().optional(),
|
|
19
|
+
});
|
|
20
|
+
const key = (sessionId) => `managed-agent-create-only:${sessionId}`;
|
|
21
|
+
const storeFor = (runtime) => new InteractionDraftStore(runtime.client.interactionScope);
|
|
22
|
+
async function readEntry(runtime, sessionId) {
|
|
23
|
+
const raw = await storeFor(runtime).read(key(sessionId));
|
|
24
|
+
if (raw === undefined)
|
|
25
|
+
return undefined;
|
|
26
|
+
const parsed = entrySchema.safeParse(raw);
|
|
27
|
+
if (!parsed.success || parsed.data.sessionId !== sessionId)
|
|
28
|
+
throw new CliError('LOCAL_STATE_RECOVERY_REQUIRED', '智能体搭建入口记录不完整,请先核对,勿重复创建');
|
|
29
|
+
return parsed.data;
|
|
30
|
+
}
|
|
31
|
+
function lastMainMessage(view) {
|
|
32
|
+
const rows = object(object(view.pipeline.lanes).chain).messages;
|
|
33
|
+
if (!Array.isArray(rows))
|
|
34
|
+
return undefined;
|
|
35
|
+
const persistent = rows
|
|
36
|
+
.map(object)
|
|
37
|
+
.filter((row) => typeof row.messageId === 'string' &&
|
|
38
|
+
!/^(?:fake-message-|pending-|user-|assistant-|insufficient-credits-)/.test(row.messageId) &&
|
|
39
|
+
!/^select-branch-message-.+-batch-\d+$/.test(row.messageId));
|
|
40
|
+
if (persistent.some((row) => row.sessionId !== view.session.sessionId))
|
|
41
|
+
return undefined;
|
|
42
|
+
return persistent.at(-1);
|
|
43
|
+
}
|
|
44
|
+
/** 对齐Agent实际工具profile;粘性的sessionExtra不能替代当前主线轮次标记。 */
|
|
45
|
+
function assertToolPhase(view, head) {
|
|
46
|
+
const rawVersion = view.extra.version;
|
|
47
|
+
const version = typeof rawVersion === 'number'
|
|
48
|
+
? rawVersion
|
|
49
|
+
: typeof rawVersion === 'string' && /^[1-9]\d*$/.test(rawVersion)
|
|
50
|
+
? Number(rawVersion)
|
|
51
|
+
: NaN;
|
|
52
|
+
const one = (value) => value === 1 || value === '1';
|
|
53
|
+
const extra = object(head?.roundExtra);
|
|
54
|
+
if (!Number.isSafeInteger(version) || version < 1)
|
|
55
|
+
throw new CliError('INVALID_ARGUMENT', '项目流程版本缺失或未知,无法确认智能体工具当前可用');
|
|
56
|
+
if (!one(extra.hasSelectedStyle))
|
|
57
|
+
throw new CliError('INVALID_ARGUMENT', '当前主线尚未完成风格选择,智能体配置工具不可用');
|
|
58
|
+
if (version >= 4 && !one(extra.startDevelopment))
|
|
59
|
+
throw new CliError('INVALID_ARGUMENT', '当前仍在演示阶段,智能体配置工具尚未开放;请先进入研发阶段,不会自动推进');
|
|
60
|
+
if (version >= 6 && !one(extra.architecturePlanApproved))
|
|
61
|
+
throw new CliError('INVALID_ARGUMENT', '当前研发架构规划尚未确认,智能体配置工具不可用;请先处理当前规划');
|
|
62
|
+
return version;
|
|
63
|
+
}
|
|
64
|
+
/** 推荐开发功能是可选合成目录,不是等待工具回填的必答问题。 */
|
|
65
|
+
function blockingInteractions(view) {
|
|
66
|
+
return collectInteractions(view).filter((binding) => !(binding.interaction.kind === 'SELECT_FEATURES' &&
|
|
67
|
+
binding.interaction.source.variant === 'select_features' &&
|
|
68
|
+
!binding.interaction.source.toolId));
|
|
69
|
+
}
|
|
70
|
+
export async function agentCreationPreflight(runtime, sessionId) {
|
|
71
|
+
const view = await runtime.load(sessionId);
|
|
72
|
+
if (view.session.sessionId !== sessionId)
|
|
73
|
+
throw new CliError('PROTOCOL_ERROR', '智能体入口返回了不同项目');
|
|
74
|
+
await new ManagedAgentResourceApi(runtime.client).assertEditor(sessionId);
|
|
75
|
+
const head = lastMainMessage(view);
|
|
76
|
+
const version = assertToolPhase(view, head);
|
|
77
|
+
const one = (value) => value === 1 || value === '1';
|
|
78
|
+
if (!one(object(head?.roundExtra).hasSelectedStyle) ||
|
|
79
|
+
(version >= 4 && !one(view.extra.hasViewedDemo)) ||
|
|
80
|
+
view.session.status !== 3 ||
|
|
81
|
+
view.session.waiting !== false ||
|
|
82
|
+
view.session.errorType ||
|
|
83
|
+
!head ||
|
|
84
|
+
head.role !== 2 ||
|
|
85
|
+
head.status !== 1 ||
|
|
86
|
+
view.session.pendingBranch ||
|
|
87
|
+
!view.pipeline.render)
|
|
88
|
+
throw new CliError('INVALID_ARGUMENT', '请先处理当前主线任务和阶段前置,项目闲置后再搭建智能体', {
|
|
89
|
+
sessionId,
|
|
90
|
+
});
|
|
91
|
+
const activeSubagentWork = await runtime.taskProgress.hasPendingSubagentWork(sessionId);
|
|
92
|
+
const checked = { ...view, activeSubagentWork };
|
|
93
|
+
if (activeSubagentWork || hasPendingCreationWork(checked) || blockingInteractions(checked).length)
|
|
94
|
+
throw new CliError('INVALID_ARGUMENT', '项目仍有任务或待回答交互,请先处理当前流程', { sessionId });
|
|
95
|
+
return { view, sourceMessageId: String(head.messageId) };
|
|
96
|
+
}
|
|
97
|
+
/** 入口提交前就持久化pending;ACK丢失时不把后续任意向导当成本次流程。 */
|
|
98
|
+
export async function startAgentCreation(runtime, sessionId, workDescription) {
|
|
99
|
+
const store = storeFor(runtime);
|
|
100
|
+
return store.locked(key(sessionId), async () => {
|
|
101
|
+
const existing = await readEntry(runtime, sessionId);
|
|
102
|
+
if (existing?.state === 'pending')
|
|
103
|
+
throw new CliError('OUTCOME_UNKNOWN', '此前智能体创建入口回执未确认,请先查看项目,勿重复提交', {
|
|
104
|
+
sessionId,
|
|
105
|
+
retryable: false,
|
|
106
|
+
});
|
|
107
|
+
if (existing?.state === 'active') {
|
|
108
|
+
const view = await runtime.load(sessionId);
|
|
109
|
+
const entryRound = existing.sourceMessageId
|
|
110
|
+
? roundContainingMessage(view, existing.sourceMessageId)
|
|
111
|
+
: undefined;
|
|
112
|
+
// 入口明确正常结束且没有产生向导,例如用户改选了其它能力;只关闭该已结束入口。
|
|
113
|
+
const savedWizard = existing.interactionId
|
|
114
|
+
? object(await store.read(`wizard:${sessionId}:${existing.interactionId}`))
|
|
115
|
+
: {};
|
|
116
|
+
const endedWizard = savedWizard.createOnly === true && ['complete', 'stopped'].includes(String(savedWizard.checkpoint));
|
|
117
|
+
const endedWithoutWizard = !existing.interactionId &&
|
|
118
|
+
entryRound?.status === 'completed' &&
|
|
119
|
+
!blockingInteractions(view).some((binding) => binding.round.roundId === entryRound.roundId);
|
|
120
|
+
if (view.session.sessionId === sessionId && (endedWithoutWizard || endedWizard)) {
|
|
121
|
+
if (endedWithoutWizard)
|
|
122
|
+
await agentCreationPreflight(runtime, sessionId);
|
|
123
|
+
await store.write(key(sessionId), { ...existing, state: 'complete' });
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
if (view.session.sessionId !== sessionId ||
|
|
127
|
+
!entryRound ||
|
|
128
|
+
currentRound(view)?.roundId !== entryRound.roundId)
|
|
129
|
+
throw new CliError('STALE_INTERACTION', '此前智能体创建入口已被其它任务替换或无法定位,请先核对原创建结果,不能复用旧入口', { sessionId, sourceMessageId: existing.sourceMessageId });
|
|
130
|
+
return {
|
|
131
|
+
sessionId,
|
|
132
|
+
messageId: existing.sourceMessageId,
|
|
133
|
+
entryPending: true,
|
|
134
|
+
reused: true,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const current = await agentCreationPreflight(runtime, sessionId);
|
|
139
|
+
const plugin = await runtime.plugin.operate('status', sessionId, 'SUPERUN_MANAGED_AGENT_V2');
|
|
140
|
+
if (!['NOT_ENABLED', 'ENABLED'].includes(String(plugin.state)))
|
|
141
|
+
throw new CliError('INVALID_ARGUMENT', '通用智能体插件尚未稳定可用,请先查询或完成当前启用流程', {
|
|
142
|
+
sessionId,
|
|
143
|
+
pluginState: plugin.state,
|
|
144
|
+
});
|
|
145
|
+
const action = plugin.state === 'ENABLED' ? 'create' : 'enable';
|
|
146
|
+
const name = action === 'create' ? '新建 superun 通用智能体' : '启用 superun 通用智能体';
|
|
147
|
+
const args = [
|
|
148
|
+
buildManagedAgentIntentRoutingArgs(action),
|
|
149
|
+
'本次是只搭建智能体配置资源的专属流程。创建后报告实际agentId并结束;不创建运行会话、不试聊、不执行工作任务、不生成管理后台、不部署或连接外部渠道。工具完成结果adminPanelRequested=false。',
|
|
150
|
+
'下面是用户本次提供的智能体工作说明。最终角色设定仅使用工作说明,不包含上述流程指令:',
|
|
151
|
+
workDescription,
|
|
152
|
+
].join('\n\n');
|
|
153
|
+
const escape = (value) => value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
154
|
+
const record = { sessionId, state: 'pending', previousMessageId: current.sourceMessageId };
|
|
155
|
+
await store.write(key(sessionId), record);
|
|
156
|
+
try {
|
|
157
|
+
const response = await runtime.command.chat({
|
|
158
|
+
sessionId,
|
|
159
|
+
content: `<command-message>${name}</command-message>\n<command-name>${MANAGED_AGENT_CREATION_SKILL_ID}</command-name>\n<command-args>${escape(args)}</command-args>\n<command-type>skill</command-type>`,
|
|
160
|
+
roundExtra: { special_skill_scope: 'official' },
|
|
161
|
+
businessParams: {
|
|
162
|
+
skill_display: {
|
|
163
|
+
skillId: MANAGED_AGENT_CREATION_SKILL_ID,
|
|
164
|
+
name,
|
|
165
|
+
category: 'business',
|
|
166
|
+
description: '仅创建托管智能体配置资源,不运行或部署。',
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
if (response.sessionId !== undefined && response.sessionId !== sessionId)
|
|
171
|
+
throw new CliError('OUTCOME_UNKNOWN', '智能体入口回执项目不一致,已保留待核对记录;请勿重发', {
|
|
172
|
+
sessionId,
|
|
173
|
+
retryable: false,
|
|
174
|
+
});
|
|
175
|
+
const sourceMessageId = text(response.messageId);
|
|
176
|
+
if (!sourceMessageId)
|
|
177
|
+
throw new CliError('OUTCOME_UNKNOWN', '智能体创建入口已提交但缺少源消息回执,请先核对项目,勿重发', {
|
|
178
|
+
sessionId,
|
|
179
|
+
retryable: false,
|
|
180
|
+
});
|
|
181
|
+
await store.write(key(sessionId), {
|
|
182
|
+
...record,
|
|
183
|
+
state: 'active',
|
|
184
|
+
sourceMessageId,
|
|
185
|
+
sourceReplyMessageId: text(response.replyMessageId),
|
|
186
|
+
});
|
|
187
|
+
return { ...response, createOnly: true, sourceMessageId };
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
if (error instanceof CliError &&
|
|
191
|
+
['INVALID_ARGUMENT', 'AUTH_REQUIRED', 'BUSINESS_ERROR'].includes(error.code))
|
|
192
|
+
await store.write(key(sessionId), { ...record, state: 'failed' });
|
|
193
|
+
throw error;
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
function assertScope(binding) {
|
|
198
|
+
const sessionId = binding.view.session.sessionId;
|
|
199
|
+
if (!sessionId || binding.round.sessionId !== sessionId || binding.item.payload.sessionId !== sessionId)
|
|
200
|
+
throw new CliError('UNSUPPORTED_INTERACTION', '当前向导不属于本次主项目资源域,首期不支持猜测父子会话映射', { sessionId });
|
|
201
|
+
return sessionId;
|
|
202
|
+
}
|
|
203
|
+
function assertCurrent(binding) {
|
|
204
|
+
const latest = currentRound(binding.view);
|
|
205
|
+
const head = lastMainMessage(binding.view);
|
|
206
|
+
assertToolPhase(binding.view, head);
|
|
207
|
+
// BFF把等待人工工具回填的PENDING轮投影为interrupted;仅接受当前未取消的真实向导。
|
|
208
|
+
const waitingForWizard = binding.view.session.status === 4 &&
|
|
209
|
+
head?.status === 4 &&
|
|
210
|
+
head.messageId === binding.interaction.source.messageId &&
|
|
211
|
+
binding.interaction.kind === 'MANAGED_AGENT_WIZARD' &&
|
|
212
|
+
binding.item.variant === 'managed_agent_wizard' &&
|
|
213
|
+
!!binding.interaction.source.toolId &&
|
|
214
|
+
pendingTool(binding.item);
|
|
215
|
+
if (!latest ||
|
|
216
|
+
latest.roundId !== binding.round.roundId ||
|
|
217
|
+
!head ||
|
|
218
|
+
head.role !== 2 ||
|
|
219
|
+
head.replyMessageId !== binding.round.anchorUserMessageId ||
|
|
220
|
+
![1, 3, 4].includes(binding.view.session.status) ||
|
|
221
|
+
![0, 1, 4].includes(Number(head.status)) ||
|
|
222
|
+
typeof head.status !== 'number' ||
|
|
223
|
+
binding.view.session.errorType ||
|
|
224
|
+
head.sessionErrorType ||
|
|
225
|
+
(!['running', 'completed'].includes(binding.round.status) &&
|
|
226
|
+
!(binding.round.status === 'interrupted' && waitingForWizard)) ||
|
|
227
|
+
binding.view.session.waiting !== false)
|
|
228
|
+
throw new CliError('STALE_INTERACTION', '当前主线已离开本次智能体向导或不再允许回答,请查询当前状态');
|
|
229
|
+
}
|
|
230
|
+
/** 在首次project投影时继承入口模式,不依赖宿主记得给reply传开关。 */
|
|
231
|
+
export async function managedAgentCreateOnlyMode(runtime, binding, explicitOrSaved = false) {
|
|
232
|
+
const sessionId = binding.view.session.sessionId;
|
|
233
|
+
const entry = await readEntry(runtime, sessionId);
|
|
234
|
+
if (entry?.state === 'pending')
|
|
235
|
+
throw new CliError('OUTCOME_UNKNOWN', '创建入口来源尚未确认,不能将当前向导当作旧流程绕过,请先核对原请求', { sessionId, retryable: false });
|
|
236
|
+
let bound = false;
|
|
237
|
+
if (entry?.state === 'active') {
|
|
238
|
+
const entryRound = entry.sourceMessageId
|
|
239
|
+
? roundContainingMessage(binding.view, entry.sourceMessageId)
|
|
240
|
+
: undefined;
|
|
241
|
+
bound =
|
|
242
|
+
entry.interactionId === binding.interaction.interactionId ||
|
|
243
|
+
binding.interaction.source.messageId === entry.sourceMessageId ||
|
|
244
|
+
(entryRound !== undefined && entryRound.roundId === binding.round.roundId);
|
|
245
|
+
if (!bound && !entry.interactionId)
|
|
246
|
+
throw new CliError('UNSUPPORTED_INTERACTION', '当前向导无法与本次智能体入口源消息关联,不能创建资源', {
|
|
247
|
+
sessionId,
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
if (!bound && !explicitOrSaved)
|
|
251
|
+
return false;
|
|
252
|
+
assertScope(binding);
|
|
253
|
+
assertCurrent(binding);
|
|
254
|
+
await new ManagedAgentResourceApi(runtime.client).assertEditor(sessionId);
|
|
255
|
+
if (bound && entry && !entry.interactionId) {
|
|
256
|
+
await storeFor(runtime).locked(key(sessionId), async () => {
|
|
257
|
+
const latest = await readEntry(runtime, sessionId);
|
|
258
|
+
if (latest?.state !== 'active' || latest.sourceMessageId !== entry.sourceMessageId)
|
|
259
|
+
throw new CliError('STALE_INTERACTION', '智能体搭建入口已经变化,请重新查询当前向导');
|
|
260
|
+
await storeFor(runtime).write(key(sessionId), {
|
|
261
|
+
...latest,
|
|
262
|
+
interactionId: binding.interaction.interactionId,
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
/** 资源写入和工具回填前重新读取真实绑定,不能用初次传入的旧view复核。 */
|
|
269
|
+
export async function verifyManagedAgentCreateOnly(runtime, binding) {
|
|
270
|
+
const sessionId = assertScope(binding);
|
|
271
|
+
const fresh = collectInteractions(await runtime.load(sessionId)).find((candidate) => candidate.interaction.interactionId === binding.interaction.interactionId);
|
|
272
|
+
if (!fresh ||
|
|
273
|
+
fresh.interaction.source.messageId !== binding.interaction.source.messageId ||
|
|
274
|
+
fresh.interaction.source.toolId !== binding.interaction.source.toolId)
|
|
275
|
+
throw new CliError('STALE_INTERACTION', '智能体向导来源已变化,未继续写入资源');
|
|
276
|
+
await managedAgentCreateOnlyMode(runtime, fresh, true);
|
|
277
|
+
}
|
|
278
|
+
export async function completeAgentCreateOnly(runtime, binding) {
|
|
279
|
+
const sessionId = assertScope(binding);
|
|
280
|
+
const store = storeFor(runtime);
|
|
281
|
+
await store.locked(key(sessionId), async () => {
|
|
282
|
+
const entry = await readEntry(runtime, sessionId);
|
|
283
|
+
if (entry?.state === 'active' && entry.interactionId === binding.interaction.interactionId)
|
|
284
|
+
await store.write(key(sessionId), { ...entry, state: 'complete' });
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=managed-agent-create-only.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed-agent-create-only.js","sourceRoot":"","sources":["../../src/conversation/managed-agent-create-only.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,14 +4,7 @@ import { InteractionDraftStore } from '../interactions/draft-store.js';
|
|
|
4
4
|
/** 原专家团会查询插件状态;CLI 将该入口所属的对话继续映射到同一查询。 */
|
|
5
5
|
export declare function managedAgentEntryStore(runtime: CreationRuntime): InteractionDraftStore;
|
|
6
6
|
export declare const managedAgentEntryKey: (sessionId: string) => string;
|
|
7
|
-
export declare function managedAgentEntryState(runtime: CreationRuntime, sessionId: string): Promise<(
|
|
8
|
-
nextActions: import("../contracts/cli-output.js").NextAction[];
|
|
9
|
-
toolUsage?: {
|
|
10
|
-
toolCount?: number;
|
|
11
|
-
complete: boolean;
|
|
12
|
-
markdown: string;
|
|
13
|
-
} | undefined;
|
|
14
|
-
}) | ({
|
|
7
|
+
export declare function managedAgentEntryState(runtime: CreationRuntime, sessionId: string): Promise<({
|
|
15
8
|
state: "RUNNING";
|
|
16
9
|
sessionId: string;
|
|
17
10
|
messageId: string | undefined;
|
|
@@ -25,6 +18,13 @@ export declare function managedAgentEntryState(runtime: CreationRuntime, session
|
|
|
25
18
|
complete: boolean;
|
|
26
19
|
markdown: string;
|
|
27
20
|
} | undefined;
|
|
21
|
+
}) | (import("../contracts/cli-output.js").CreationResult & {
|
|
22
|
+
nextActions: import("../contracts/cli-output.js").NextAction[];
|
|
23
|
+
toolUsage?: {
|
|
24
|
+
toolCount?: number;
|
|
25
|
+
complete: boolean;
|
|
26
|
+
markdown: string;
|
|
27
|
+
} | undefined;
|
|
28
28
|
}) | undefined>;
|
|
29
29
|
/** 完整通用智能体创建 Skill;前端只负责把入口意图无损交给它。 */
|
|
30
30
|
export declare const MANAGED_AGENT_CREATION_SKILL_ID = "skill.superun_managed_agent_v2";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CreationRuntime } from '../runtime.js';
|
|
2
|
+
import type { SessionView } from '../contracts/node-wire.js';
|
|
3
|
+
export declare function slidesIntent(value: unknown): boolean | null;
|
|
4
|
+
export declare function pptHead(view: SessionView): {
|
|
5
|
+
role: number;
|
|
6
|
+
messageId: string;
|
|
7
|
+
sessionId: string;
|
|
8
|
+
status?: number | undefined;
|
|
9
|
+
} | undefined;
|
|
10
|
+
export declare function pptPreflight(service: CreationRuntime, sessionId: string, expectedSource?: string): Promise<{
|
|
11
|
+
view: SessionView;
|
|
12
|
+
sourceMessageId: string;
|
|
13
|
+
}>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/** PPT 专用只读前置校验,不改变通用会话选择和自动衔接。@author xiuyu.yi */
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { object } from '../contracts/value.js';
|
|
4
|
+
import { CliError } from '../output/exit-codes.js';
|
|
5
|
+
import { collectInteractions } from '../interactions/registry.js';
|
|
6
|
+
import { hasPendingCreationWork } from './state-resolver.js';
|
|
7
|
+
const chainSchema = z.array(z.object({
|
|
8
|
+
messageId: z.string().min(1),
|
|
9
|
+
sessionId: z.string(),
|
|
10
|
+
role: z.number().int(),
|
|
11
|
+
status: z.number().int().optional(),
|
|
12
|
+
}));
|
|
13
|
+
const TEMPORARY_PREFIXES = ['fake-message-', 'pending-', 'user-', 'assistant-', 'insufficient-credits-'];
|
|
14
|
+
export function slidesIntent(value) {
|
|
15
|
+
return value === '1' || value === 1 ? true : value === '0' || value === 0 ? false : null;
|
|
16
|
+
}
|
|
17
|
+
export function pptHead(view) {
|
|
18
|
+
const parsed = chainSchema.safeParse(object(object(view.pipeline.lanes).chain).messages);
|
|
19
|
+
if (!parsed.success)
|
|
20
|
+
return undefined;
|
|
21
|
+
const persistent = parsed.data.filter((message) => !TEMPORARY_PREFIXES.some((prefix) => message.messageId.startsWith(prefix)) &&
|
|
22
|
+
!/^select-branch-message-.+-batch-\d+$/.test(message.messageId));
|
|
23
|
+
if (persistent.some((message) => message.sessionId !== view.session.sessionId))
|
|
24
|
+
return undefined;
|
|
25
|
+
return persistent.at(-1);
|
|
26
|
+
}
|
|
27
|
+
export async function pptPreflight(service, sessionId, expectedSource) {
|
|
28
|
+
const view = await service.load(sessionId);
|
|
29
|
+
if (view.session.sessionId !== sessionId)
|
|
30
|
+
throw new CliError('PROTOCOL_ERROR', 'PPT 前置查询返回了不同作品');
|
|
31
|
+
if (slidesIntent(view.extra.hasSlidesIntent) !== true)
|
|
32
|
+
throw new CliError('INVALID_ARGUMENT', '当前作品未确认为 PPT 项目,请选择已有 PPT 或新建 PPT 作品', {
|
|
33
|
+
sessionId,
|
|
34
|
+
});
|
|
35
|
+
const compiled = view.session.everDeployed === true ||
|
|
36
|
+
(Number(view.extra.version) >= 2 && slidesIntent(view.extra.hasViewedDemo) === true);
|
|
37
|
+
if (!compiled)
|
|
38
|
+
throw new CliError('INVALID_ARGUMENT', '当前还没有满足幻灯片生成要求的编译演示,请先完成并查看演示', {
|
|
39
|
+
sessionId,
|
|
40
|
+
});
|
|
41
|
+
if (view.session.status !== 3 || view.session.waiting !== false || view.session.errorType)
|
|
42
|
+
throw new CliError('INVALID_ARGUMENT', '当前项目仍在运行、排队、等待回答或异常状态,不能生成或确认本次 PPT', { sessionId, sessionStatus: view.session.status });
|
|
43
|
+
const head = pptHead(view);
|
|
44
|
+
if (!head || head.role !== 2 || head.status !== 1)
|
|
45
|
+
throw new CliError('INVALID_ARGUMENT', '无法确认主线最后一条持久 Agent 消息已正常结束,请先查询项目进度', { sessionId });
|
|
46
|
+
if (expectedSource && head.messageId !== expectedSource)
|
|
47
|
+
throw new CliError('STALE_INTERACTION', 'PPT 来源主线已变化,请重新确认本次操作目标和内容', {
|
|
48
|
+
sessionId,
|
|
49
|
+
sourceMessageId: expectedSource,
|
|
50
|
+
currentSourceMessageId: head.messageId,
|
|
51
|
+
});
|
|
52
|
+
if (!view.pipeline.render || view.session.pendingBranch)
|
|
53
|
+
throw new CliError('INVALID_ARGUMENT', '项目交互状态不完整或仍待选择风格,不能继续 PPT 生成', {
|
|
54
|
+
sessionId,
|
|
55
|
+
});
|
|
56
|
+
const activeSubagentWork = await service.taskProgress.hasPendingSubagentWork(sessionId);
|
|
57
|
+
const checked = { ...view, activeSubagentWork };
|
|
58
|
+
if (activeSubagentWork || hasPendingCreationWork(checked))
|
|
59
|
+
throw new CliError('INVALID_ARGUMENT', '当前仍有后台任务或自动工具未结束,请先等待完成', { sessionId });
|
|
60
|
+
const interactions = collectInteractions(checked);
|
|
61
|
+
if (interactions.length)
|
|
62
|
+
throw new CliError('INVALID_ARGUMENT', '当前还有待回答的问题或选择,请先处理后再生成 PPT', {
|
|
63
|
+
sessionId,
|
|
64
|
+
interactions: interactions.map((binding) => binding.interaction.kind),
|
|
65
|
+
});
|
|
66
|
+
return { view, sourceMessageId: head.messageId };
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=ppt-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ppt-preflight.js","sourceRoot":"","sources":["../../src/conversation/ppt-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CreationRuntime } from '../runtime.js';
|
|
2
|
+
import { type SessionView } from '../contracts/node-wire.js';
|
|
3
|
+
/** 只验证编辑权限与暂存契约,不强加写入阶段门禁。 */
|
|
4
|
+
export declare function projectEditingState(service: CreationRuntime, sessionId: string): Promise<{
|
|
5
|
+
hasStaging: boolean;
|
|
6
|
+
files: unknown[];
|
|
7
|
+
}>;
|
|
8
|
+
/** 物理主线选取保持统一;不回退到混合展示末轮。 */
|
|
9
|
+
export declare function projectMainlineHead(view: SessionView): {
|
|
10
|
+
status: number;
|
|
11
|
+
role: number;
|
|
12
|
+
messageId: string;
|
|
13
|
+
sessionId: string;
|
|
14
|
+
replyMessageId?: string | undefined;
|
|
15
|
+
extra?: Record<string, unknown> | undefined;
|
|
16
|
+
roundExtra?: Record<string, unknown> | undefined;
|
|
17
|
+
} | undefined;
|
|
18
|
+
export declare function projectCheckPreflight(service: CreationRuntime, view: SessionView, sessionId: string, label: string): Promise<{
|
|
19
|
+
sourceMessageId: string;
|
|
20
|
+
stage: string;
|
|
21
|
+
hasStaging: boolean;
|
|
22
|
+
}>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/** 检查类写操作的主线、阶段与服务端编辑权限门禁。@author xiuyu.yi */
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { parseWire } from '../contracts/node-wire.js';
|
|
4
|
+
import { object } from '../contracts/value.js';
|
|
5
|
+
import { CliError } from '../output/exit-codes.js';
|
|
6
|
+
import { currentRound, roundContainingMessage } from './round-selector.js';
|
|
7
|
+
import { collectInteractions } from '../interactions/registry.js';
|
|
8
|
+
import { hasPendingCreationWork } from './state-resolver.js';
|
|
9
|
+
const chainSchema = z.array(z.object({
|
|
10
|
+
messageId: z.string().min(1),
|
|
11
|
+
sessionId: z.string(),
|
|
12
|
+
role: z.number().int(),
|
|
13
|
+
status: z.number().int(),
|
|
14
|
+
replyMessageId: z.string().optional(),
|
|
15
|
+
roundExtra: z.record(z.unknown()).optional(),
|
|
16
|
+
extra: z.record(z.unknown()).optional(),
|
|
17
|
+
}));
|
|
18
|
+
const one = (value) => value === '1' || value === 1;
|
|
19
|
+
/** 只验证编辑权限与暂存契约,不强加写入阶段门禁。 */
|
|
20
|
+
export async function projectEditingState(service, sessionId) {
|
|
21
|
+
if (!/^[A-Za-z0-9_-]+$/.test(sessionId))
|
|
22
|
+
throw new CliError('INVALID_ARGUMENT', '请明确本次单个作品ID');
|
|
23
|
+
const editing = parseWire(z.object({ hasStaging: z.boolean(), files: z.array(z.unknown()) }), await service.client.call('/api/uxa-center/agent/AgentQuery/queryAgentAttachmentGit', {
|
|
24
|
+
sessionId,
|
|
25
|
+
withContent: false,
|
|
26
|
+
}));
|
|
27
|
+
if (editing.hasStaging !== editing.files.length > 0)
|
|
28
|
+
throw new CliError('PROTOCOL_ERROR', '源码暂存状态不完整,未继续操作');
|
|
29
|
+
return editing;
|
|
30
|
+
}
|
|
31
|
+
/** 物理主线选取保持统一;不回退到混合展示末轮。 */
|
|
32
|
+
export function projectMainlineHead(view) {
|
|
33
|
+
const chain = chainSchema.safeParse(object(object(view.pipeline.lanes).chain).messages);
|
|
34
|
+
if (!chain.success || chain.data.some((row) => row.sessionId !== view.session.sessionId))
|
|
35
|
+
throw new CliError('PROTOCOL_ERROR', '无法核对当前物理主线,未发起检查');
|
|
36
|
+
const head = chain.data
|
|
37
|
+
.filter((row) => !/^(?:fake-message-|pending-|user-|assistant-|insufficient-credits-)/.test(row.messageId) &&
|
|
38
|
+
!/^select-branch-message-.+-batch-\d+$/.test(row.messageId))
|
|
39
|
+
.at(-1);
|
|
40
|
+
return head;
|
|
41
|
+
}
|
|
42
|
+
export async function projectCheckPreflight(service, view, sessionId, label) {
|
|
43
|
+
if (!/^[A-Za-z0-9_-]+$/.test(sessionId) || view.session.sessionId !== sessionId)
|
|
44
|
+
throw new CliError('PROTOCOL_ERROR', '检查目标与本次单个作品不一致');
|
|
45
|
+
// 复用有服务端编辑权限检查的只读方法;不以菜单可见或分享可访问代替权限。
|
|
46
|
+
const editing = await projectEditingState(service, sessionId);
|
|
47
|
+
const head = projectMainlineHead(view);
|
|
48
|
+
const round = head ? roundContainingMessage(view, head.messageId) : undefined;
|
|
49
|
+
if (!head ||
|
|
50
|
+
head.role !== 2 ||
|
|
51
|
+
head.status !== 1 ||
|
|
52
|
+
!round ||
|
|
53
|
+
round.sessionId !== sessionId ||
|
|
54
|
+
currentRound(view)?.roundId !== round.roundId ||
|
|
55
|
+
round.status !== 'completed' ||
|
|
56
|
+
view.session.status !== 3 ||
|
|
57
|
+
view.session.waiting !== false ||
|
|
58
|
+
view.session.errorType ||
|
|
59
|
+
view.session.pendingBranch ||
|
|
60
|
+
view.extra.agentRuntime === 'shire')
|
|
61
|
+
throw new CliError('INVALID_ARGUMENT', `当前主线不是已正常结束的常规创作流程,请先处理当前任务,再执行${label}`, { sessionId });
|
|
62
|
+
const rawVersion = view.extra.version;
|
|
63
|
+
const version = typeof rawVersion === 'number'
|
|
64
|
+
? rawVersion
|
|
65
|
+
: typeof rawVersion === 'string' && /^[1-9]\d*$/.test(rawVersion)
|
|
66
|
+
? Number(rawVersion)
|
|
67
|
+
: NaN;
|
|
68
|
+
const extra = object(head.roundExtra);
|
|
69
|
+
if (!Number.isSafeInteger(version) || version < 1 || !one(extra.hasSelectedStyle))
|
|
70
|
+
throw new CliError('INVALID_ARGUMENT', `尚未完成风格选择或流程版本未知,${label}工具当前不可用`, {
|
|
71
|
+
sessionId,
|
|
72
|
+
});
|
|
73
|
+
const stage = version < 4 || one(extra.startDevelopment) ? 'development' : 'demo';
|
|
74
|
+
if (version >= 6 && stage === 'development' && !one(extra.architecturePlanApproved))
|
|
75
|
+
throw new CliError('INVALID_ARGUMENT', `当前研发规划尚未确认,不能执行${label};不会自动确认规划`, {
|
|
76
|
+
sessionId,
|
|
77
|
+
});
|
|
78
|
+
const activeSubagentWork = await service.taskProgress.hasPendingSubagentWork(sessionId);
|
|
79
|
+
const checked = { ...view, activeSubagentWork };
|
|
80
|
+
const blocking = collectInteractions(checked).filter(({ interaction }) => !(interaction.kind === 'SELECT_FEATURES' &&
|
|
81
|
+
interaction.source.variant === 'select_features' &&
|
|
82
|
+
!interaction.source.toolId));
|
|
83
|
+
if (activeSubagentWork || hasPendingCreationWork(checked) || blocking.length)
|
|
84
|
+
throw new CliError('INVALID_ARGUMENT', `当前仍有后台任务或必答问题,请先处理后再执行${label}`, {
|
|
85
|
+
sessionId,
|
|
86
|
+
});
|
|
87
|
+
return { sourceMessageId: head.messageId, stage, hasStaging: editing.hasStaging };
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=project-check-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-check-preflight.js","sourceRoot":"","sources":["../../src/conversation/project-check-preflight.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAoB,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CACzB,CAAC,CAAC,MAAM,CAAC;IACP,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACtB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACxB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACxC,CAAC,CACH,CAAC;AACF,MAAM,GAAG,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC;AAE7D,8BAA8B;AAC9B,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAwB,EAAE,SAAiB;IACnF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,SAAS,CACvB,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAClE,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,0DAA0D,EAAE;QACpF,SAAS;QACT,WAAW,EAAE,KAAK;KACnB,CAAC,CACH,CAAC;IACF,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QACjD,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;IAC1D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,mBAAmB,CAAC,IAAiB;IACnD,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxF,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACtF,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;SACpB,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CACN,CAAC,oEAAoE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;QACzF,CAAC,sCAAsC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAC9D;SACA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACV,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAwB,EACxB,IAAiB,EACjB,SAAiB,EACjB,KAAa;IAEb,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;QAC7E,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IACzD,sCAAsC;IACtC,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,IACE,CAAC,IAAI;QACL,IAAI,CAAC,IAAI,KAAK,CAAC;QACf,IAAI,CAAC,MAAM,KAAK,CAAC;QACjB,CAAC,KAAK;QACN,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,OAAO;QAC7C,KAAK,CAAC,MAAM,KAAK,WAAW;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,KAAK;QAC9B,IAAI,CAAC,OAAO,CAAC,SAAS;QACtB,IAAI,CAAC,OAAO,CAAC,aAAa;QAC1B,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,OAAO;QAEnC,MAAM,IAAI,QAAQ,CAChB,kBAAkB,EAClB,kCAAkC,KAAK,EAAE,EACzC,EAAE,SAAS,EAAE,CACd,CAAC;IACJ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IACtC,MAAM,OAAO,GACX,OAAO,UAAU,KAAK,QAAQ;QAC5B,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,OAAO,UAAU,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;YAC/D,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;YACpB,CAAC,CAAC,GAAG,CAAC;IACZ,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAC/E,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,mBAAmB,KAAK,SAAS,EAAE;YACxE,SAAS;SACV,CAAC,CAAC;IACL,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;IAClF,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,aAAa,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC;QACjF,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,KAAK,WAAW,EAAE;YACzE,SAAS;SACV,CAAC,CAAC;IACL,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,kBAAkB,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,MAAM,CAClD,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAClB,CAAC,CACC,WAAW,CAAC,IAAI,KAAK,iBAAiB;QACtC,WAAW,CAAC,MAAM,CAAC,OAAO,KAAK,iBAAiB;QAChD,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAC3B,CACJ,CAAC;IACF,IAAI,kBAAkB,IAAI,sBAAsB,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,MAAM;QAC1E,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,yBAAyB,KAAK,EAAE,EAAE;YACvE,SAAS;SACV,CAAC,CAAC;IACL,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;AACpF,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { CreationRuntime } from '../runtime.js';
|
|
2
|
+
export declare function preparePublish(service: CreationRuntime, sessionId: string): Promise<{
|
|
3
|
+
state: string;
|
|
4
|
+
sessionId: string;
|
|
5
|
+
topic: string;
|
|
6
|
+
sourceMessageId: string;
|
|
7
|
+
stage: string;
|
|
8
|
+
publicStatus: number;
|
|
9
|
+
publishUrl: string;
|
|
10
|
+
targetRegion: string | null | undefined;
|
|
11
|
+
deploymentNode: string | null | undefined;
|
|
12
|
+
candidate: {
|
|
13
|
+
encryptedId: string;
|
|
14
|
+
deployStatus: number;
|
|
15
|
+
updatedAt: number;
|
|
16
|
+
websiteIntroduction?: string | null | undefined;
|
|
17
|
+
changeLog?: string | null | undefined;
|
|
18
|
+
changeLogSummary?: string | null | undefined;
|
|
19
|
+
};
|
|
20
|
+
fee: {
|
|
21
|
+
costItems: {
|
|
22
|
+
name: string;
|
|
23
|
+
estimatedDailyCost: number;
|
|
24
|
+
}[];
|
|
25
|
+
itemizedDailyTotal: number;
|
|
26
|
+
itemizedThirtyDayTotal: number;
|
|
27
|
+
currency: string;
|
|
28
|
+
unitsPerToken: number;
|
|
29
|
+
totalsConsistent: boolean;
|
|
30
|
+
confirmationRequired: boolean;
|
|
31
|
+
estimatedDailyTotal: number;
|
|
32
|
+
estimatedMonthlyTotal: number;
|
|
33
|
+
};
|
|
34
|
+
visibilityEffect: {
|
|
35
|
+
afterSuccessfulDeployment: number;
|
|
36
|
+
changesCurrentStatus: boolean;
|
|
37
|
+
privateDeploymentSupported: boolean;
|
|
38
|
+
confirmationRequired: boolean;
|
|
39
|
+
};
|
|
40
|
+
quoteId: string;
|
|
41
|
+
sourcePolicy: string;
|
|
42
|
+
warning: string;
|
|
43
|
+
}>;
|
|
44
|
+
export declare function assertPublishConfirmation(prepared: Awaited<ReturnType<typeof preparePublish>>, encryptedId: string, sourceMessageId: unknown, quoteId: unknown, acknowledged: boolean, sitePublicationAcknowledged?: boolean): void;
|