dodo-mcp 1.4.1 → 1.4.3
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/README.md +10 -1
- package/dist/server/bootstrap.js +11 -3
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/configUi/ui/recovery.js +32 -46
- package/dist/services/multimodal/images.js +13 -0
- package/dist/services/multimodal/images.js.map +1 -1
- package/dist/services/recovery/contracts.js +2 -0
- package/dist/services/recovery/contracts.js.map +1 -1
- package/dist/services/recovery/drift.js +13 -3
- package/dist/services/recovery/drift.js.map +1 -1
- package/dist/services/recovery/history.js +48 -23
- package/dist/services/recovery/history.js.map +1 -1
- package/dist/services/recovery/recoveryService.js +114 -67
- package/dist/services/recovery/recoveryService.js.map +1 -1
- package/dist/services/recovery/storage.js +21 -7
- package/dist/services/recovery/storage.js.map +1 -1
- package/dist/services/resources/providers.js +17 -0
- package/dist/services/resources/providers.js.map +1 -1
- package/docs/RECOVERY.md +57 -18
- package/docs/RELEASE_1.4.2.md +66 -0
- package/docs/RELEASE_1.4.3.md +22 -0
- package/docs/RELEASE_NOTES.md +23 -0
- package/docs/TEST_REPORT.md +45 -0
- package/package.json +23 -11
package/README.md
CHANGED
|
@@ -619,6 +619,11 @@ npm pack
|
|
|
619
619
|
### Recovery — สำรองและกู้คืนงาน
|
|
620
620
|
|
|
621
621
|
โปรเจกต์ที่ลงทะเบียนเปิด source backup เป็นค่าเริ่มต้น ก่อนแก้ไฟล์หรือรันคำสั่ง
|
|
622
|
+
ตั้งแต่ **1.4.2** การสำรองอัตโนมัติเป็น best effort: หากสำรองไม่ได้ งานปกติยังทำต่อได้
|
|
623
|
+
แม้รีสตาร์ตหรือมีค่า strict/Git requirement เดิม ระบบแสดงคำเตือนและ `blockedPath`
|
|
624
|
+
พร้อม `skippedSecretFiles` และ `operationsBlocked:false` ใน `project_overview`
|
|
625
|
+
ค่าเลือกข้ามไฟล์ที่มีเนื้อหาคล้าย Secret เก็บถาวรต่อโปรเจกต์ ส่วน checkpoint ที่สั่งเอง
|
|
626
|
+
และการกู้คืนตามแผนยังต้องผ่านการตรวจสำเนาและ integrity จริง
|
|
622
627
|
หน้า **Projects → Recovery** ใช้ตรวจประวัติ เปรียบเทียบ และยืนยันแผนกู้คืนได้จริง
|
|
623
628
|
หรือใช้ `dodo recovery --help` ผ่าน terminal สำเนาอยู่ใน private state แยกจาก Git
|
|
624
629
|
ของโปรเจกต์ และไม่ push ขึ้น GitHub อัตโนมัติ
|
|
@@ -632,7 +637,11 @@ npm pack
|
|
|
632
637
|
**Source restore ไม่ย้อนฐานข้อมูล, secrets, volumes หรือระบบภายนอก** การสำรอง config
|
|
633
638
|
ใช้กุญแจจาก OS credential store และไม่ส่งเนื้อหาให้ AI; ไม่มี generic database rollback
|
|
634
639
|
หรือการ restart service อัตโนมัติ ดู [คู่มือ Recovery](docs/RECOVERY.md),
|
|
635
|
-
[การเปลี่ยนแปลง 1.
|
|
640
|
+
[การเปลี่ยนแปลง 1.4.2](docs/RELEASE_1.4.2.md) และ [ผลตรวจรับจริง](docs/TEST_REPORT.md)
|
|
641
|
+
|
|
642
|
+
อัปเดตด้วย `npm install -g dodo-mcp@1.4.2` แล้ว restart process ของ DODO ที่ใช้งานจริง
|
|
643
|
+
และเรียก `project_overview` ใหม่เพื่อรับ workspace epoch ปัจจุบัน การติดตั้งแพ็กเกจ
|
|
644
|
+
อย่างเดียวไม่เปลี่ยนโค้ดที่ process เดิมโหลดค้างอยู่
|
|
636
645
|
|
|
637
646
|
### จัดการพื้นที่สำรอง Recovery
|
|
638
647
|
|
package/dist/server/bootstrap.js
CHANGED
|
@@ -133,10 +133,18 @@ export function bootstrapWorkspace(opts) {
|
|
|
133
133
|
applier.beforeMutation = async (opts, files) => {
|
|
134
134
|
await services.recovery.checkpoint('before-write', opts.principal, files.flatMap(f => [f.path, ...(f.destPath ? [f.destPath] : [])]));
|
|
135
135
|
};
|
|
136
|
-
|
|
137
|
-
|
|
136
|
+
const recordRecovery = (record) => {
|
|
137
|
+
try {
|
|
138
|
+
record();
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
services.recovery.reportBookkeepingFailure(error);
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
applier.onCommitted = files => recordRecovery(() => services.recovery.drift.committed(files));
|
|
145
|
+
applier.onChangeset = id => recordRecovery(() => services.recovery.history.record('changeset', id));
|
|
138
146
|
jobs.withRecovery = (actor, fn) => services.recovery.history.around(actor, undefined, fn);
|
|
139
|
-
jobs.onRecorded = id => services.recovery.history.record('job', id);
|
|
147
|
+
jobs.onRecorded = id => recordRecovery(() => services.recovery.history.record('job', id));
|
|
140
148
|
jobs.afterFinished = () => services.recovery.observeJob();
|
|
141
149
|
jobs.beforeStart = async (req) => { await services.recovery.checkpoint('before-exec', req.principal); };
|
|
142
150
|
jobs.requiresPreparation = () => Boolean(store.db.prepare('SELECT 1 FROM project_registry WHERE workspace_id=? AND removed_at IS NULL').get(workspaceId));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/server/bootstrap.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/server/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -171,13 +171,13 @@ window.DodoRecovery=({el,section,button,check,field,choice,notice,confirmDanger,
|
|
|
171
171
|
const box=section('การเปลี่ยนไฟล์นอก journal','เปรียบเทียบ hash จริง ไม่ระบุว่าใครแก้จากเวลาไฟล์ การยอมรับสถานะไม่ใช่ผลทดสอบและไม่เพิ่มสิทธิ์');parent.append(box);
|
|
172
172
|
const view=el('div');box.append(view);
|
|
173
173
|
function render(d){
|
|
174
|
-
view.replaceChildren(el('p',d.state==='external_changes'?`พบ ${d.changedCount} รายการ · ไม่ทราบผู้แก้${d.critical?' ·
|
|
174
|
+
view.replaceChildren(el('p',d.state==='external_changes'?`พบ ${d.changedCount} รายการ · ไม่ทราบผู้แก้${d.critical?' · แนะนำให้ตรวจทานก่อนรันคำสั่ง':''}`:d.state==='unchanged'?'ไม่พบการเปลี่ยนจากสถานะที่บันทึก':d.state==='unavailable'?`ตรวจไม่สำเร็จ: ${d.errorCode} · ไม่บล็อกงานปกติ`:'ยังไม่ได้สแกน'));
|
|
175
175
|
if(d.changedCount){
|
|
176
176
|
const list=el('ul');for(const c of d.changes)list.append(el('li',`${c.change} · ${c.path} · ${c.beforeHash?.slice(0,12)||'ไม่มี'} → ${c.observedHash?.slice(0,12)||'ไม่มี'}`));view.append(list);
|
|
177
177
|
if(d.truncated){view.append(el('p','ยังมีรายการถัดไป การยืนยันใช้กับการเปลี่ยนแปลงทั้งหมดที่ระบุ'));view.append(button('ดูรายการเปลี่ยนแปลงถัดไป',async()=>render(await act('recovery.drift.scan',{cursor:d.nextCursor}))));}
|
|
178
178
|
view.append(el('p','สำเนาที่ตรวจพบแยกจาก baseline เดิม ไม่รับรองว่ามี bytes ก่อนถูกเขียนทับ หากยังไม่เคยสำรอง'));
|
|
179
179
|
view.append(button('ยอมรับสถานะที่ตรวจนี้',async()=>{
|
|
180
|
-
if(!await confirmDanger('ยอมรับไฟล์ที่เปลี่ยน?',`มี ${d.changedCount} รายการ
|
|
180
|
+
if(!await confirmDanger('ยอมรับไฟล์ที่เปลี่ยน?',`มี ${d.changedCount} รายการ การยืนยันบันทึกสถานะที่ตรวจแล้วเป็น baseline ใหม่ ไม่ได้กู้ไฟล์กลับ`,'ยอมรับสถานะ'))return;
|
|
181
181
|
const result=await act('recovery.drift.acknowledge',{digest:d.digest,workspaceId:selected.workspaceId,workspaceEpoch:selected.workspaceEpoch,confirm:true});render(result);notice('บันทึกสถานะที่เจ้าของตรวจแล้ว');
|
|
182
182
|
}));
|
|
183
183
|
}
|
|
@@ -191,26 +191,31 @@ window.DodoRecovery=({el,section,button,check,field,choice,notice,confirmDanger,
|
|
|
191
191
|
const status=el('p','กำลังตรวจสอบจุดกู้คืน…','wb-status');status.setAttribute('role','status');card.append(status);
|
|
192
192
|
const selected={...getSelected()};
|
|
193
193
|
const act=(operation,args={})=>api('admin/action',{projectId:selected.projectId,operation,args},true);
|
|
194
|
+
const retryBackup=async()=>{
|
|
195
|
+
const result=await act('recovery.reset');
|
|
196
|
+
notice(result.state==='BLOCKED'?`ตรวจสำเนาใหม่แล้ว ยังสำรองไม่ได้ (${result.errorCode||'UNKNOWN'}) · งานปกติยังทำต่อได้`:'ตรวจสถานะสำเนาใหม่แล้ว');
|
|
197
|
+
await refresh();
|
|
198
|
+
};
|
|
194
199
|
try {
|
|
195
200
|
const data=await act('recovery.status');
|
|
196
201
|
const effectiveMode=data.effectiveMode||(data.hasGitRepo?'git':'snapshot');
|
|
197
202
|
const labels={
|
|
198
203
|
INITIALIZING:'กำลังเตรียมสำเนา — พร้อมใช้งานโดยไม่บล็อกการทำงาน',
|
|
199
204
|
READY:effectiveMode==='git'?'SAVED · พร้อมใช้งาน (โหมด Git Recovery)':'SAVED · มีสำเนาที่ตรวจ integrity แล้ว (โหมด Snapshot)',
|
|
200
|
-
BLOCKED:'
|
|
205
|
+
BLOCKED:'สำรองไม่พร้อม — ยังแก้ไฟล์และรันคำสั่งได้ตามสิทธิ์เดิม',
|
|
201
206
|
DISABLED_BY_OWNER:'เจ้าของปิดการสำรองอัตโนมัติ',
|
|
202
207
|
};
|
|
203
208
|
status.textContent=labels[data.state]||data.state;
|
|
204
|
-
if(data.awaitingActivation&&data.enabled)status.textContent='
|
|
209
|
+
if(data.awaitingActivation&&data.enabled&&data.state==='INITIALIZING')status.textContent='เปิดการสำรองไว้ — รอสร้างจุดกู้คืนแรก';
|
|
205
210
|
|
|
206
211
|
const headerBar=el('div',undefined,'rec-header');
|
|
207
212
|
const headerCopy=el('div',undefined,'rec-header-copy');
|
|
208
213
|
headerCopy.append(
|
|
209
214
|
el('strong',data.hasGitRepo?'ตรวจพบ Git Repository ในโปรเจกต์นี้ (.git)':'โปรเจกต์ทั่วไป (ยังไม่ได้เชื่อม Git)'),
|
|
210
|
-
el('span',
|
|
215
|
+
el('span','สำรองอัตโนมัติแบบ best effort: ปัญหาการสำรองไม่บล็อกการแก้ไฟล์หรือรันคำสั่ง','muted')
|
|
211
216
|
);
|
|
212
217
|
const badge=el('span',
|
|
213
|
-
data.state==='BLOCKED'
|
|
218
|
+
data.state==='BLOCKED'?`สำรองไม่พร้อม · ${data.errorCode||'BLOCKED'}`:
|
|
214
219
|
data.state==='DISABLED_BY_OWNER'?'ปิดการใช้งาน':
|
|
215
220
|
effectiveMode==='git'?'พร้อมใช้งาน · Git Recovery':'พร้อมใช้งาน · DODO Snapshot',
|
|
216
221
|
'rec-badge'
|
|
@@ -224,7 +229,7 @@ window.DodoRecovery=({el,section,button,check,field,choice,notice,confirmDanger,
|
|
|
224
229
|
statCard(
|
|
225
230
|
'โหมดที่ใช้งานจริง',
|
|
226
231
|
effectiveMode==='git'?'Git Recovery':effectiveMode==='off'?'ปิดการใช้งาน':'DODO Snapshot',
|
|
227
|
-
`ตั้งค่า: ${(data.policy.mode||'auto').toUpperCase()} ·
|
|
232
|
+
`ตั้งค่า: ${(data.policy.mode||'auto').toUpperCase()} · ปัญหาการสำรองไม่บล็อกงานปกติ`
|
|
228
233
|
),
|
|
229
234
|
statCard(
|
|
230
235
|
'การตรวจสอบล่าสุด',
|
|
@@ -256,49 +261,35 @@ window.DodoRecovery=({el,section,button,check,field,choice,notice,confirmDanger,
|
|
|
256
261
|
alertBox.append(
|
|
257
262
|
el('p',
|
|
258
263
|
data.state==='BLOCKED'
|
|
259
|
-
|
|
264
|
+
?`Recovery ยังสำรองไม่สำเร็จ (${data.errorCode||'UNKNOWN'}) · ไม่บล็อกการแก้ไฟล์หรือรันคำสั่ง`
|
|
260
265
|
:`คำเตือนจากระบบ Recovery (ไม่บล็อกการแก้ไฟล์หรือรันคำสั่ง)`,
|
|
261
266
|
'rec-alert-title'
|
|
262
267
|
)
|
|
263
268
|
);
|
|
264
|
-
if(data.errorDetail
|
|
265
|
-
|
|
266
|
-
}
|
|
269
|
+
if(data.errorDetail)alertBox.append(el('p',data.errorDetail,'muted'));
|
|
270
|
+
if(data.lastWarning&&data.lastWarning!==data.errorDetail)alertBox.append(el('p',data.lastWarning,'muted'));
|
|
267
271
|
if(problemPaths.length){
|
|
268
|
-
alertBox.append(el('p','
|
|
272
|
+
alertBox.append(el('p','พาธภายในโปรเจกต์ที่สำรองไม่ได้หรือถูกข้าม (relative path; เช่น เนื้อหาคล้ายคีย์หรือไฟล์เกินขีดจำกัด):'));
|
|
269
273
|
const ul=el('ul',undefined,'rec-path-list');
|
|
270
274
|
for(const p of problemPaths)ul.append(el('li',p,'rec-path-pill'));
|
|
271
275
|
alertBox.append(ul);
|
|
272
276
|
}else if(data.errorCode==='SECRET_PATH_DENIED'){
|
|
273
|
-
alertBox.append(el('p','
|
|
277
|
+
alertBox.append(el('p','ตรวจไฟล์ตัวอย่างที่อาจมีข้อความคล้ายคีย์ เช่น env.example, scripts/setup-env.sh หรือ src/lib/env.ts แล้วลองสำรองใหม่หรือเลือกข้ามไฟล์นั้น การแก้ไฟล์และรันคำสั่งยังใช้สิทธิ์เดิม','muted'));
|
|
274
278
|
}
|
|
275
279
|
const quickActions=el('div',undefined,'rec-action-bar');
|
|
276
280
|
if(problemPaths.length){
|
|
277
281
|
quickActions.append(button('เพิ่มไฟล์ต้นเหตุเข้า Exclude ทันที',async()=>{
|
|
278
282
|
const merged=[...new Set([...(data.policy.excludePaths||[]),...problemPaths])];
|
|
279
|
-
await act('recovery.configure',{confirm:true,policy:{...data.policy,strictEnforcement:false,
|
|
283
|
+
await act('recovery.configure',{confirm:true,policy:{...data.policy,strictEnforcement:false,excludePaths:merged}});
|
|
280
284
|
await act('recovery.reset');
|
|
281
|
-
notice(`เพิ่ม ${problemPaths.join(', ')} เข้า Exclude
|
|
285
|
+
notice(`เพิ่ม ${problemPaths.join(', ')} เข้า Exclude แล้ว · ตรวจสถานะสำเนาใหม่ด้านบน`);
|
|
282
286
|
await refresh();
|
|
283
287
|
},'btn primary'));
|
|
284
|
-
quickActions.append(button('อนุญาตไฟล์ต้นเหตุในสิทธิ์ไฟล์ (Secret Allow)',async()=>{
|
|
285
|
-
const cfg=await api('admin/config');
|
|
286
|
-
const nextAllow=[...new Set([...(cfg.secretAllow||[]),...problemPaths])];
|
|
287
|
-
await api('admin/config',{secretAllow:nextAllow});
|
|
288
|
-
await act('recovery.configure',{confirm:true,policy:{...data.policy,strictEnforcement:false,skipSecretContentFiles:true}});
|
|
289
|
-
await act('recovery.reset');
|
|
290
|
-
notice(`อนุญาต ${problemPaths.join(', ')} ในสิทธิ์ไฟล์และปลดบล็อกเรียบร้อยแล้ว`);
|
|
291
|
-
await refresh();
|
|
292
|
-
},'btn'));
|
|
293
288
|
}
|
|
294
|
-
if(data.errorCode==='SECRET_PATH_DENIED'||
|
|
295
|
-
quickActions.append(button('
|
|
296
|
-
|
|
297
|
-
await
|
|
298
|
-
await act('recovery.configure',{confirm:true,policy:{...data.policy,strictEnforcement:false,scanContentSecrets:false,skipSecretContentFiles:true}});
|
|
299
|
-
await act('recovery.reset');
|
|
300
|
-
notice('เปิดโหมดอนุญาตทุกไฟล์และปลดบล็อกเรียบร้อยแล้ว');
|
|
301
|
-
await refresh();
|
|
289
|
+
if(data.errorCode==='SECRET_PATH_DENIED'||(Array.isArray(data.skippedSecretFiles)&&data.skippedSecretFiles.length)){
|
|
290
|
+
quickActions.append(button('ข้ามไฟล์ที่มีเนื้อหาคล้าย Secret ในการสำรอง',async()=>{
|
|
291
|
+
await act('recovery.configure',{confirm:true,policy:{...data.policy,strictEnforcement:false,skipSecretContentFiles:true}});
|
|
292
|
+
await retryBackup();
|
|
302
293
|
},'btn'));
|
|
303
294
|
}
|
|
304
295
|
if(data.hasGitRepo&&data.policy.mode!=='git'){
|
|
@@ -309,11 +300,7 @@ window.DodoRecovery=({el,section,button,check,field,choice,notice,confirmDanger,
|
|
|
309
300
|
await refresh();
|
|
310
301
|
},'btn'));
|
|
311
302
|
}
|
|
312
|
-
quickActions.append(button('
|
|
313
|
-
await act('recovery.reset');
|
|
314
|
-
notice('ล้างสถานะบล็อกและสแกนใหม่เรียบร้อยแล้ว');
|
|
315
|
-
await refresh();
|
|
316
|
-
},'btn'));
|
|
303
|
+
quickActions.append(button('ลองสำรองใหม่ทันที',retryBackup,'btn'));
|
|
317
304
|
alertBox.append(quickActions);
|
|
318
305
|
card.append(alertBox);
|
|
319
306
|
}
|
|
@@ -327,8 +314,8 @@ window.DodoRecovery=({el,section,button,check,field,choice,notice,confirmDanger,
|
|
|
327
314
|
const settingsGrid=el('div',undefined,'rec-settings-grid');
|
|
328
315
|
card.append(settingsGrid);
|
|
329
316
|
|
|
330
|
-
// Group 1:
|
|
331
|
-
const g1=groupCard(1,'
|
|
317
|
+
// Group 1: Backup mode and automatic best-effort behavior.
|
|
318
|
+
const g1=groupCard(1,'โหมดการสำรอง','เลือก Git หรือ Snapshot โดยปัญหาการสำรองอัตโนมัติไม่บล็อกงานปกติ');
|
|
332
319
|
const modeSelect=choice(g1,'โหมดการสำรองและกู้คืน (Recovery Mode)','recoveryMode',[
|
|
333
320
|
['auto','Auto (แนะนำ — ใช้ Git อัตโนมัติถ้าโปรเจกต์มี .git)'],
|
|
334
321
|
['git','Git เท่านั้น (ใช้ Git ล้วน ไม่สแกนไฟล์ CAS ของ DODO)'],
|
|
@@ -336,16 +323,14 @@ window.DodoRecovery=({el,section,button,check,field,choice,notice,confirmDanger,
|
|
|
336
323
|
['off','ปิดการใช้งาน Recovery'],
|
|
337
324
|
],data.policy.mode||'auto');
|
|
338
325
|
const enabled=check(g1,'เปิดการสำรองอัตโนมัติ','recoveryEnabled',data.enabled);enabled.setAttribute('role','switch');
|
|
339
|
-
|
|
340
|
-
strictEnforcement.setAttribute('role','switch');
|
|
341
|
-
g1.append(el('p','เมื่อปิด Strict Mode: ต่อให้ไฟล์ติด SECRET_PATH_DENIED หรือเกิดข้อผิดพลาดระหว่างสำรอง คุณยังสามารถแก้ไฟล์และรันคำสั่งได้ตามปกติ','muted'));
|
|
326
|
+
g1.append(el('p','สำรองอัตโนมัติแบบ best effort: หากไฟล์ถูกข้าม คลังสำรองไม่พร้อม หรือสแกนไม่สำเร็จ จะแสดงคำเตือนและให้งานปกติทำต่อได้ การสร้างจุดกู้คืนที่ร้องขอและการกู้คืนตามแผนยังต้องตรวจสำเนาสำเร็จ','muted'));
|
|
342
327
|
settingsGrid.append(g1);
|
|
343
328
|
|
|
344
329
|
// Group 2: Secret Content Screening & Drift Policy
|
|
345
330
|
const g2=groupCard(2,'การตรวจไฟล์ความลับและไฟล์เปลี่ยนภายนอก','จัดการการตรวจจับคีย์ตัวอย่างในโค้ด (เช่น env.example) และการแก้ไฟล์จากภายนอก');
|
|
346
331
|
const scanContentSecrets=check(g2,'สแกนหาคีย์ความลับในเนื้อหาไฟล์ระหว่างสำรอง Snapshot','recoveryScanSecrets',data.policy.scanContentSecrets!==false);
|
|
347
332
|
scanContentSecrets.setAttribute('role','switch');
|
|
348
|
-
const skipSecretContentFiles=check(g2,'ข้ามไฟล์ที่พบเนื้อหาคล้าย Secret อัตโนมัติ
|
|
333
|
+
const skipSecretContentFiles=check(g2,'ข้ามไฟล์ที่พบเนื้อหาคล้าย Secret อัตโนมัติ และแสดงพาธที่ข้าม','recoverySkipSecrets',data.policy.skipSecretContentFiles!==false);
|
|
349
334
|
skipSecretContentFiles.setAttribute('role','switch');
|
|
350
335
|
const checkDrift=check(g2,'ตรวจจับการแก้ไฟล์จากภายนอก DODO (Drift Detection)','recoveryCheckDrift',data.policy.checkDrift!==false);
|
|
351
336
|
checkDrift.setAttribute('role','switch');
|
|
@@ -391,9 +376,10 @@ window.DodoRecovery=({el,section,button,check,field,choice,notice,confirmDanger,
|
|
|
391
376
|
g4.append(quotaCols);
|
|
392
377
|
|
|
393
378
|
const advanced=el('details',undefined,'details');advanced.append(el('summary','ขอบเขตและพื้นที่สำรอง (Git Copy แยกโฟลเดอร์ขั้นสูง)'));
|
|
394
|
-
const gitRequired=check(advanced,'
|
|
379
|
+
const gitRequired=check(advanced,'กำหนดให้จุดกู้คืนที่ร้องขอมี Git recovery copy','recoveryGitRequired',data.policy.gitRequired);
|
|
395
380
|
const gitDirectory=field(advanced,'ที่เก็บ Git สำรอง (absolute path; เว้นว่างใช้ private state)','recoveryGitDirectory',data.policy.gitDirectory||'');
|
|
396
381
|
advanced.append(el('p','โฟลเดอร์สำรองต้องมีอยู่แล้ว เป็น private ของเจ้าของ และอยู่นอกโปรเจกต์','muted'));
|
|
382
|
+
advanced.append(el('p','เมื่อ Git copy หรือโฟลเดอร์สำรองไม่พร้อม งานแก้ไฟล์และคำสั่งปกติยังทำต่อได้ พร้อมคำเตือนเรื่องสำเนาที่ขาดไป','muted'));
|
|
397
383
|
g4.append(advanced);
|
|
398
384
|
settingsGrid.append(g4);
|
|
399
385
|
|
|
@@ -415,7 +401,7 @@ window.DodoRecovery=({el,section,button,check,field,choice,notice,confirmDanger,
|
|
|
415
401
|
...data.policy,
|
|
416
402
|
enabled:isEnabled,
|
|
417
403
|
mode:isEnabled?(modeSelect.value==='off'?'auto':modeSelect.value):'off',
|
|
418
|
-
strictEnforcement:
|
|
404
|
+
strictEnforcement:false,
|
|
419
405
|
scanContentSecrets:scanContentSecrets.checked,
|
|
420
406
|
skipSecretContentFiles:skipSecretContentFiles.checked,
|
|
421
407
|
checkDrift:checkDrift.checked,
|
|
@@ -438,7 +424,7 @@ window.DodoRecovery=({el,section,button,check,field,choice,notice,confirmDanger,
|
|
|
438
424
|
await refresh();
|
|
439
425
|
},'btn primary'),
|
|
440
426
|
button('สร้างจุดกู้คืนตอนนี้',async()=>{await act('recovery.checkpoint');notice('สร้างจุดกู้คืนเรียบร้อยแล้ว');await refresh();}),
|
|
441
|
-
button('
|
|
427
|
+
button('ลองสำรองใหม่',retryBackup),
|
|
442
428
|
button('ตรวจสถานะใหม่',async()=>refresh())
|
|
443
429
|
);
|
|
444
430
|
card.append(mainActions);
|
|
@@ -4,10 +4,23 @@ import { MediaStorage, actorKey } from './storage.js';
|
|
|
4
4
|
import { ScreenFrame } from './contracts.js';
|
|
5
5
|
import { loadSharpBackend } from './sharpBackend.js';
|
|
6
6
|
const OPTIONS = { limitInputPixels: 40_000_000, failOn: 'warning' };
|
|
7
|
+
export function hasSupportedRasterHeader(buf) {
|
|
8
|
+
if (buf.length >= 8 && buf[0] === 0x89 && buf[1] === 0x50 && buf[2] === 0x4e && buf[3] === 0x47 && buf[4] === 0x0d && buf[5] === 0x0a && buf[6] === 0x1a && buf[7] === 0x0a)
|
|
9
|
+
return true;
|
|
10
|
+
if (buf.length >= 3 && buf[0] === 0xff && buf[1] === 0xd8 && buf[2] === 0xff)
|
|
11
|
+
return true;
|
|
12
|
+
if (buf.length >= 6 && buf[0] === 0x47 && buf[1] === 0x49 && buf[2] === 0x46 && buf[3] === 0x38 && (buf[4] === 0x37 || buf[4] === 0x39) && buf[5] === 0x61)
|
|
13
|
+
return true;
|
|
14
|
+
if (buf.length >= 12 && buf[0] === 0x52 && buf[1] === 0x49 && buf[2] === 0x46 && buf[3] === 0x46 && buf[8] === 0x57 && buf[9] === 0x45 && buf[10] === 0x42 && buf[11] === 0x50)
|
|
15
|
+
return true;
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
7
18
|
export async function imageView(bytes, maxEdge, crop) {
|
|
8
19
|
if (bytes.length > 16 * 1024 * 1024)
|
|
9
20
|
throw new DodoError('FILE_TOO_LARGE', 'image input exceeds 16 MiB');
|
|
10
21
|
const sharp = await loadSharpBackend();
|
|
22
|
+
if (!hasSupportedRasterHeader(bytes))
|
|
23
|
+
throw new DodoError('UNSUPPORTED_ENCODING', 'use PNG/JPEG/WebP/GIF; animated files use the first frame');
|
|
11
24
|
const image = sharp(bytes, OPTIONS);
|
|
12
25
|
const metadata = await image.metadata();
|
|
13
26
|
if (!['jpeg', 'png', 'webp', 'gif'].includes(metadata.format ?? '') || !metadata.width || !metadata.height)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"images.js","sourceRoot":"","sources":["../../../src/services/multimodal/images.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAc,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,WAAW,EAAqC,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,OAAO,GAAG,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"images.js","sourceRoot":"","sources":["../../../src/services/multimodal/images.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ export const RecoveryPolicySchema = z.object({
|
|
|
5
5
|
version: z.literal(1).default(1),
|
|
6
6
|
enabled: z.boolean().default(true),
|
|
7
7
|
mode: RecoveryModeSchema.default('auto'),
|
|
8
|
+
// Kept for stored-policy compatibility and strict checkpoint diagnostics.
|
|
9
|
+
// Automatic source backup never prevents ordinary writes or commands.
|
|
8
10
|
strictEnforcement: z.boolean().default(false),
|
|
9
11
|
scanContentSecrets: z.boolean().default(true),
|
|
10
12
|
skipSecretContentFiles: z.boolean().default(true),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/services/recovery/contracts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/services/recovery/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,15 @@ export class RecoveryDrift {
|
|
|
42
42
|
}
|
|
43
43
|
trackedPaths() { return this.load()?.entries.filter(e => e.kind !== 'absent').map(e => e.path) ?? []; }
|
|
44
44
|
status(limit = 50, cursor = 0) {
|
|
45
|
-
|
|
45
|
+
let initialized = false;
|
|
46
|
+
try {
|
|
47
|
+
initialized = Boolean(this.load());
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
this.lastError = error instanceof DodoError ? error.code : 'BACKUP_IO_ERROR';
|
|
51
|
+
this.recovery.reportBookkeepingFailure(error);
|
|
52
|
+
}
|
|
53
|
+
return { state: this.lastError ? 'unavailable' : !initialized ? 'pending' : !this.observation ? 'not_scanned' : this.observation.changes.length ? 'external_changes' : 'unchanged',
|
|
46
54
|
attribution: 'unknown', checkedAt: this.observation?.checkedAt ?? null, digest: this.observation?.digest ?? null,
|
|
47
55
|
changedCount: this.observation?.changes.length ?? 0, critical: this.observation?.critical ?? false, emergencyCheckpointId: this.observation?.snapshotId ?? null,
|
|
48
56
|
changes: (this.observation?.changes ?? []).filter(c => { try {
|
|
@@ -179,10 +187,12 @@ export class RecoveryDrift {
|
|
|
179
187
|
state.revision++;
|
|
180
188
|
this.save(state);
|
|
181
189
|
this.observation = undefined;
|
|
190
|
+
this.lastError = null;
|
|
182
191
|
}
|
|
183
192
|
catch (e) {
|
|
184
|
-
|
|
185
|
-
|
|
193
|
+
this.lastError = e instanceof DodoError ? e.code : 'BACKUP_IO_ERROR';
|
|
194
|
+
this.observation = undefined;
|
|
195
|
+
this.recovery.reportBookkeepingFailure(e);
|
|
186
196
|
}
|
|
187
197
|
}
|
|
188
198
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../../src/services/recovery/drift.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../../src/services/recovery/drift.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,13 +53,21 @@ export class RecoveryHistory {
|
|
|
53
53
|
throw new DodoError('CONFLICT', 'session is not open in this epoch; begin a new session');
|
|
54
54
|
}
|
|
55
55
|
const op = { actor, implicit: !sessionId, ...(sessionId ? { sessionId } : {}) };
|
|
56
|
-
return this.context.run(op, async () => {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
return this.context.run(op, async () => {
|
|
57
|
+
try {
|
|
58
|
+
return await fn();
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
if (op.implicit && op.sessionId) {
|
|
62
|
+
try {
|
|
63
|
+
this.end(op.sessionId, { id: actor });
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
this.recovery.reportBookkeepingFailure(error);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
});
|
|
63
71
|
}
|
|
64
72
|
sessionForCapture(actor) {
|
|
65
73
|
const op = this.context.getStore();
|
|
@@ -88,8 +96,13 @@ export class RecoveryHistory {
|
|
|
88
96
|
const op = this.context.getStore();
|
|
89
97
|
if (!op?.sessionId)
|
|
90
98
|
return;
|
|
91
|
-
|
|
92
|
-
.
|
|
99
|
+
try {
|
|
100
|
+
this.db.prepare('INSERT INTO recovery_events (session_id,snapshot_id,kind,ref,created_at) VALUES (?,?,?,?,?)')
|
|
101
|
+
.run(op.sessionId, op.snapshotId ?? null, kind, ref, Date.now());
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
this.recovery.reportBookkeepingFailure(error);
|
|
105
|
+
}
|
|
93
106
|
}
|
|
94
107
|
async begin(actor, title) {
|
|
95
108
|
return this.s.mutations.run(async () => {
|
|
@@ -361,23 +374,35 @@ export class RecoveryHistory {
|
|
|
361
374
|
}) };
|
|
362
375
|
}
|
|
363
376
|
finishAgent(runId, actor) {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
377
|
+
try {
|
|
378
|
+
const key = 'recovery-agent:' + digestOf({ runId, actor, workspace: this.s.workspaceId, epoch: this.s.epoch });
|
|
379
|
+
const id = this.s.store.getMeta(key);
|
|
380
|
+
if (id)
|
|
381
|
+
this.end(id, { id: actor });
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
this.recovery.reportBookkeepingFailure(error);
|
|
385
|
+
}
|
|
368
386
|
}
|
|
369
387
|
async forAgent(runId, actor) {
|
|
370
|
-
|
|
388
|
+
// Agent attribution is optional; explicit begin() still requires its checkpoint.
|
|
389
|
+
try {
|
|
390
|
+
if (!this.recovery.status().registered || !this.recovery.policy().enabled)
|
|
391
|
+
return undefined;
|
|
392
|
+
return await this.s.mutations.run(async () => {
|
|
393
|
+
const key = 'recovery-agent:' + digestOf({ runId, actor, workspace: this.s.workspaceId, epoch: this.s.epoch });
|
|
394
|
+
const saved = this.s.store.getMeta(key);
|
|
395
|
+
if (saved && this.session(saved, { id: actor }).state === 'open')
|
|
396
|
+
return saved;
|
|
397
|
+
const result = await this.begin({ id: actor }, `Agent run ${runId}`);
|
|
398
|
+
this.s.store.setMeta(key, result.sessionId);
|
|
399
|
+
return result.sessionId;
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
catch (error) {
|
|
403
|
+
this.recovery.reportAutomaticFailure(error);
|
|
371
404
|
return undefined;
|
|
372
|
-
|
|
373
|
-
const key = 'recovery-agent:' + digestOf({ runId, actor, workspace: this.s.workspaceId, epoch: this.s.epoch });
|
|
374
|
-
const saved = this.s.store.getMeta(key);
|
|
375
|
-
if (saved && this.session(saved, { id: actor }).state === 'open')
|
|
376
|
-
return saved;
|
|
377
|
-
const result = await this.begin({ id: actor }, `Agent run ${runId}`);
|
|
378
|
-
this.s.store.setMeta(key, result.sessionId);
|
|
379
|
-
return result.sessionId;
|
|
380
|
-
});
|
|
405
|
+
}
|
|
381
406
|
}
|
|
382
407
|
async apply(a, planId, planHash) {
|
|
383
408
|
return this.s.mutations.run(async () => {
|