dominds 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dialog.js +15 -4
- package/dist/llm/gen/anthropic.js +45 -26
- package/dist/llm/gen/openai-compatible.js +10 -1
- package/dist/llm/kernel-driver/drive.js +19 -6
- package/dist/minds/system-prompt-parts.js +2 -2
- package/dist/persistence.js +9 -4
- package/dist/server/websocket-handler.js +33 -0
- package/dist/static/assets/_basePickBy-BxEtbvFu.js +196 -0
- package/dist/static/assets/_basePickBy-BxEtbvFu.js.map +1 -0
- package/dist/static/assets/{_baseUniq-CXaP1DRN.js → _baseUniq-DIU8uS8B.js} +214 -39
- package/dist/static/assets/_baseUniq-DIU8uS8B.js.map +1 -0
- package/dist/static/assets/{arc-B-paEmmQ.js → arc-Duaod9ey.js} +2 -2
- package/dist/static/assets/{arc-B-paEmmQ.js.map → arc-Duaod9ey.js.map} +1 -1
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-DQ-LRMci.js → architectureDiagram-VXUJARFQ-mBlnYbSZ.js} +7 -6
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-DQ-LRMci.js.map → architectureDiagram-VXUJARFQ-mBlnYbSZ.js.map} +1 -1
- package/dist/static/assets/{blockDiagram-VD42YOAC-yXDlmAg6.js → blockDiagram-VD42YOAC-BKHh2u19.js} +7 -7
- package/dist/static/assets/{blockDiagram-VD42YOAC-yXDlmAg6.js.map → blockDiagram-VD42YOAC-BKHh2u19.js.map} +1 -1
- package/dist/static/assets/{c4Diagram-YG6GDRKO-CKlXooRf.js → c4Diagram-YG6GDRKO-CiYpQV_c.js} +3 -3
- package/dist/static/assets/{c4Diagram-YG6GDRKO-CKlXooRf.js.map → c4Diagram-YG6GDRKO-CiYpQV_c.js.map} +1 -1
- package/dist/static/assets/{channel-DH1DW5ZR.js → channel-CjrZKdx5.js} +2 -2
- package/dist/static/assets/{channel-DH1DW5ZR.js.map → channel-CjrZKdx5.js.map} +1 -1
- package/dist/static/assets/{chunk-4BX2VUAB-BGUV26nZ.js → chunk-4BX2VUAB-ZH3B-Q54.js} +2 -2
- package/dist/static/assets/{chunk-4BX2VUAB-BGUV26nZ.js.map → chunk-4BX2VUAB-ZH3B-Q54.js.map} +1 -1
- package/dist/static/assets/{chunk-55IACEB6-D-UDxpaE.js → chunk-55IACEB6--I8IjoFG.js} +2 -2
- package/dist/static/assets/{chunk-55IACEB6-D-UDxpaE.js.map → chunk-55IACEB6--I8IjoFG.js.map} +1 -1
- package/dist/static/assets/{chunk-B4BG7PRW-BmAiwyX-.js → chunk-B4BG7PRW-CcuH8R_j.js} +5 -5
- package/dist/static/assets/{chunk-B4BG7PRW-BmAiwyX-.js.map → chunk-B4BG7PRW-CcuH8R_j.js.map} +1 -1
- package/dist/static/assets/{chunk-DI55MBZ5-Pg62hDG3.js → chunk-DI55MBZ5-fP1WNdZ5.js} +4 -4
- package/dist/static/assets/{chunk-DI55MBZ5-Pg62hDG3.js.map → chunk-DI55MBZ5-fP1WNdZ5.js.map} +1 -1
- package/dist/static/assets/{chunk-FMBD7UC4-DypgScXi.js → chunk-FMBD7UC4-Ckv-KuM0.js} +2 -2
- package/dist/static/assets/{chunk-FMBD7UC4-DypgScXi.js.map → chunk-FMBD7UC4-Ckv-KuM0.js.map} +1 -1
- package/dist/static/assets/{chunk-QN33PNHL-D099B2Lh.js → chunk-QN33PNHL-BMtoi7vC.js} +2 -2
- package/dist/static/assets/{chunk-QN33PNHL-D099B2Lh.js.map → chunk-QN33PNHL-BMtoi7vC.js.map} +1 -1
- package/dist/static/assets/{chunk-QZHKN3VN-BRGnk3yw.js → chunk-QZHKN3VN-8QGa0fuH.js} +2 -2
- package/dist/static/assets/{chunk-QZHKN3VN-BRGnk3yw.js.map → chunk-QZHKN3VN-8QGa0fuH.js.map} +1 -1
- package/dist/static/assets/{chunk-TZMSLE5B-J4UFKyHl.js → chunk-TZMSLE5B-Br8JxLgD.js} +2 -2
- package/dist/static/assets/{chunk-TZMSLE5B-J4UFKyHl.js.map → chunk-TZMSLE5B-Br8JxLgD.js.map} +1 -1
- package/dist/static/assets/{classDiagram-2ON5EDUG-DbSBhjnI.js → classDiagram-2ON5EDUG-DOZ4DHXZ.js} +6 -6
- package/dist/static/assets/{classDiagram-2ON5EDUG-DbSBhjnI.js.map → classDiagram-2ON5EDUG-DOZ4DHXZ.js.map} +1 -1
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-DbSBhjnI.js → classDiagram-v2-WZHVMYZB-DOZ4DHXZ.js} +6 -6
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-DbSBhjnI.js.map → classDiagram-v2-WZHVMYZB-DOZ4DHXZ.js.map} +1 -1
- package/dist/static/assets/{clone-CMt2CVWH.js → clone-CiK7YYeV.js} +2 -2
- package/dist/static/assets/{clone-CMt2CVWH.js.map → clone-CiK7YYeV.js.map} +1 -1
- package/dist/static/assets/{cose-bilkent-S5V4N54A-DgpOcJSM.js → cose-bilkent-S5V4N54A-CI_69_81.js} +2 -2
- package/dist/static/assets/{cose-bilkent-S5V4N54A-DgpOcJSM.js.map → cose-bilkent-S5V4N54A-CI_69_81.js.map} +1 -1
- package/dist/static/assets/{dagre-6UL2VRFP-Sfkohrpt.js → dagre-6UL2VRFP-DLFxBr22.js} +7 -7
- package/dist/static/assets/{dagre-6UL2VRFP-Sfkohrpt.js.map → dagre-6UL2VRFP-DLFxBr22.js.map} +1 -1
- package/dist/static/assets/{defaultLocale-DVr69WTU.js → defaultLocale-B2RvLBDe.js} +9 -9
- package/dist/static/assets/defaultLocale-B2RvLBDe.js.map +1 -0
- package/dist/static/assets/{diagram-PSM6KHXK-sqQ1DZXq.js → diagram-PSM6KHXK-XgmnF_Su.js} +9 -8
- package/dist/static/assets/{diagram-PSM6KHXK-sqQ1DZXq.js.map → diagram-PSM6KHXK-XgmnF_Su.js.map} +1 -1
- package/dist/static/assets/{diagram-QEK2KX5R-Bvygmx1Z.js → diagram-QEK2KX5R-81etd_-I.js} +7 -6
- package/dist/static/assets/{diagram-QEK2KX5R-Bvygmx1Z.js.map → diagram-QEK2KX5R-81etd_-I.js.map} +1 -1
- package/dist/static/assets/{diagram-S2PKOQOG-C1G_lxWW.js → diagram-S2PKOQOG-Di2aaebs.js} +7 -6
- package/dist/static/assets/{diagram-S2PKOQOG-C1G_lxWW.js.map → diagram-S2PKOQOG-Di2aaebs.js.map} +1 -1
- package/dist/static/assets/{erDiagram-Q2GNP2WA-DLDetWzs.js → erDiagram-Q2GNP2WA-BLgwJI3R.js} +5 -5
- package/dist/static/assets/{erDiagram-Q2GNP2WA-DLDetWzs.js.map → erDiagram-Q2GNP2WA-BLgwJI3R.js.map} +1 -1
- package/dist/static/assets/{flowDiagram-NV44I4VS-Co5LYFvC.js → flowDiagram-NV44I4VS-DBVAG7aG.js} +6 -6
- package/dist/static/assets/{flowDiagram-NV44I4VS-Co5LYFvC.js.map → flowDiagram-NV44I4VS-DBVAG7aG.js.map} +1 -1
- package/dist/static/assets/{ganttDiagram-JELNMOA3-ypMwB2Et.js → ganttDiagram-JELNMOA3-bpOVoysO.js} +4 -4
- package/dist/static/assets/{ganttDiagram-JELNMOA3-ypMwB2Et.js.map → ganttDiagram-JELNMOA3-bpOVoysO.js.map} +1 -1
- package/dist/static/assets/{gitGraphDiagram-NY62KEGX-BvpFeNi-.js → gitGraphDiagram-V2S2FVAM-CzQ8OdL5.js} +8 -7
- package/dist/static/assets/gitGraphDiagram-V2S2FVAM-CzQ8OdL5.js.map +1 -0
- package/dist/static/assets/{graph-pB4WAL9S.js → graph-B6q3ziPA.js} +4 -176
- package/dist/static/assets/graph-B6q3ziPA.js.map +1 -0
- package/dist/static/assets/{index-JpBjWftL.css → index-CTkAdCTv.css} +1 -1
- package/dist/static/assets/{index-B53Fp26r.js → index-xfSa-dGk.js} +860 -701
- package/dist/static/assets/index-xfSa-dGk.js.map +1 -0
- package/dist/static/assets/{infoDiagram-WHAUD3N6-DrDDAMEE.js → infoDiagram-HS3SLOUP-CwwiXsfW.js} +6 -5
- package/dist/static/assets/{infoDiagram-WHAUD3N6-DrDDAMEE.js.map → infoDiagram-HS3SLOUP-CwwiXsfW.js.map} +1 -1
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-DxdCX6xw.js → journeyDiagram-XKPGCS4Q-DhsoJm7o.js} +5 -5
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-DxdCX6xw.js.map → journeyDiagram-XKPGCS4Q-DhsoJm7o.js.map} +1 -1
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-9zHUhw43.js → kanban-definition-3W4ZIXB7-CwFWdj1b.js} +3 -3
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-9zHUhw43.js.map → kanban-definition-3W4ZIXB7-CwFWdj1b.js.map} +1 -1
- package/dist/static/assets/{layout-dfqRYhym.js → layout-C-_Z00fO.js} +5 -152
- package/dist/static/assets/layout-C-_Z00fO.js.map +1 -0
- package/dist/static/assets/{linear-0yPuHNCD.js → linear-C9VHSiNf.js} +3 -3
- package/dist/static/assets/{linear-0yPuHNCD.js.map → linear-C9VHSiNf.js.map} +1 -1
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-CIFBkhco.js → mindmap-definition-VGOIOE7T-Br9K1PWa.js} +4 -4
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-CIFBkhco.js.map → mindmap-definition-VGOIOE7T-Br9K1PWa.js.map} +1 -1
- package/dist/static/assets/{pieDiagram-ADFJNKIX-B-ZSbZbg.js → pieDiagram-ADFJNKIX-Cz0vhYiT.js} +8 -7
- package/dist/static/assets/{pieDiagram-ADFJNKIX-B-ZSbZbg.js.map → pieDiagram-ADFJNKIX-Cz0vhYiT.js.map} +1 -1
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-C2idOr0t.js → quadrantDiagram-AYHSOK5B-DNX-lpWl.js} +4 -4
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-C2idOr0t.js.map → quadrantDiagram-AYHSOK5B-DNX-lpWl.js.map} +1 -1
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-ZEZEoVlF.js → requirementDiagram-UZGBJVZJ-BO5Gaqz2.js} +4 -4
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-ZEZEoVlF.js.map → requirementDiagram-UZGBJVZJ-BO5Gaqz2.js.map} +1 -1
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-CK8iW527.js → sankeyDiagram-TZEHDZUN-Q6byWNck.js} +2 -2
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-CK8iW527.js.map → sankeyDiagram-TZEHDZUN-Q6byWNck.js.map} +1 -1
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-DZiRKs1m.js → sequenceDiagram-WL72ISMW-D-GNcicV.js} +4 -4
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-DZiRKs1m.js.map → sequenceDiagram-WL72ISMW-D-GNcicV.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-CudtHfJm.js → stateDiagram-FKZM4ZOC-CCDeP8lg.js} +9 -9
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-CudtHfJm.js.map → stateDiagram-FKZM4ZOC-CCDeP8lg.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-BNlnt1-z.js → stateDiagram-v2-4FDKWEC3-Di2FoqSR.js} +5 -5
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-BNlnt1-z.js.map → stateDiagram-v2-4FDKWEC3-Di2FoqSR.js.map} +1 -1
- package/dist/static/assets/{timeline-definition-IT6M3QCI-ByNiGsN2.js → timeline-definition-IT6M3QCI-CPNSVQvS.js} +3 -3
- package/dist/static/assets/{timeline-definition-IT6M3QCI-ByNiGsN2.js.map → timeline-definition-IT6M3QCI-CPNSVQvS.js.map} +1 -1
- package/dist/static/assets/{treemap-KMMF4GRG-BO_Bm7x_.js → treemap-GDKQZRPO-Cjdh04uk.js} +15788 -10901
- package/dist/static/assets/treemap-GDKQZRPO-Cjdh04uk.js.map +1 -0
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-DcP2SWz8.js → xychartDiagram-PRI3JC2R-DyA0kn1G.js} +4 -4
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-DcP2SWz8.js.map → xychartDiagram-PRI3JC2R-DyA0kn1G.js.map} +1 -1
- package/dist/static/index.html +2 -2
- package/dist/tool.js +26 -0
- package/dist/tools/builtins.js +2 -2
- package/dist/tools/ctrl.js +83 -13
- package/dist/tools/fs.js +2 -2
- package/dist/tools/plan.js +16 -5
- package/dist/tools/prompts/control/en/errors.md +1 -1
- package/dist/tools/prompts/control/zh/errors.md +1 -1
- package/package.json +11 -11
- package/dist/agent-priming.js +0 -2051
- package/dist/docs/dominds-agent-priming.md +0 -218
- package/dist/docs/dominds-agent-priming.zh.md +0 -196
- package/dist/docs/drive-logic-context-refactor-plan.zh.md +0 -338
- package/dist/docs/keep-going.md +0 -176
- package/dist/docs/keep-going.zh.md +0 -162
- package/dist/docs/showing-by-doing.md +0 -208
- package/dist/docs/showing-by-doing.zh.md +0 -177
- package/dist/docs/team-mgmt-toolset.md +0 -482
- package/dist/docs/team-mgmt-toolset.zh.md +0 -426
- package/dist/llm/driver.js +0 -4093
- package/dist/minds/promptdocs.js +0 -263
- package/dist/server/prompts-routes.js +0 -545
- package/dist/shared/team-mgmt-manual.js +0 -120
- package/dist/shared/types/prompts.js +0 -2
- package/dist/shared/types/tellask.js +0 -8
- package/dist/showing-by-doing.js +0 -1091
- package/dist/snippets/README.en.md +0 -3
- package/dist/snippets/README.md +0 -4
- package/dist/static/assets/_baseUniq-CXaP1DRN.js.map +0 -1
- package/dist/static/assets/defaultLocale-DVr69WTU.js.map +0 -1
- package/dist/static/assets/gitGraphDiagram-NY62KEGX-BvpFeNi-.js.map +0 -1
- package/dist/static/assets/graph-pB4WAL9S.js.map +0 -1
- package/dist/static/assets/index-B53Fp26r.js.map +0 -1
- package/dist/static/assets/layout-dfqRYhym.js.map +0 -1
- package/dist/static/assets/min-IX83iO4F.js +0 -42
- package/dist/static/assets/min-IX83iO4F.js.map +0 -1
- package/dist/static/assets/treemap-KMMF4GRG-BO_Bm7x_.js.map +0 -1
- package/dist/tellask.js +0 -439
- package/dist/tools/context-health.js +0 -177
- package/dist/tools/diag.js +0 -583
- package/dist/tools/team-mgmt.js +0 -3487
- package/dist/utils/task-doc.js +0 -236
package/dist/dialog.js
CHANGED
|
@@ -23,6 +23,7 @@ const runtime_language_1 = require("./shared/runtime-language");
|
|
|
23
23
|
const id_1 = require("./shared/utils/id");
|
|
24
24
|
const inter_dialog_format_1 = require("./shared/utils/inter-dialog-format");
|
|
25
25
|
const time_1 = require("./shared/utils/time");
|
|
26
|
+
const tool_1 = require("./tool");
|
|
26
27
|
const id_2 = require("./utils/id");
|
|
27
28
|
class DialogID {
|
|
28
29
|
constructor(selfId, rootId) {
|
|
@@ -313,8 +314,13 @@ class Dialog {
|
|
|
313
314
|
// should continue generating next llm messages immediately;
|
|
314
315
|
//
|
|
315
316
|
// Reminder management methods
|
|
316
|
-
addReminder(content, owner, meta, position) {
|
|
317
|
-
const reminder = {
|
|
317
|
+
addReminder(content, owner, meta, position, options) {
|
|
318
|
+
const reminder = {
|
|
319
|
+
content,
|
|
320
|
+
owner,
|
|
321
|
+
meta,
|
|
322
|
+
echoback: options?.echoback,
|
|
323
|
+
};
|
|
318
324
|
const insertIndex = position !== undefined ? position : this.reminders.length;
|
|
319
325
|
if (insertIndex < 0 || insertIndex > this.reminders.length) {
|
|
320
326
|
throw new Error(`Invalid reminder position ${insertIndex}. Valid range: 0-${this.reminders.length}`);
|
|
@@ -334,7 +340,7 @@ class Dialog {
|
|
|
334
340
|
this._remindersVer++;
|
|
335
341
|
return deleted;
|
|
336
342
|
}
|
|
337
|
-
updateReminder(index, content, meta) {
|
|
343
|
+
updateReminder(index, content, meta, options) {
|
|
338
344
|
if (index < 0 || index >= this.reminders.length) {
|
|
339
345
|
throw new Error(`Reminder index ${index} does not exist. Available reminders: 0-${this.reminders.length - 1}`);
|
|
340
346
|
}
|
|
@@ -343,6 +349,7 @@ class Dialog {
|
|
|
343
349
|
content,
|
|
344
350
|
owner: oldReminder.owner,
|
|
345
351
|
meta: meta !== undefined ? meta : oldReminder.meta,
|
|
352
|
+
echoback: options?.echoback ?? oldReminder.echoback,
|
|
346
353
|
};
|
|
347
354
|
this.reminders[index] = updatedReminder;
|
|
348
355
|
this._updatedAt = (0, time_1.formatUnifiedTimestamp)(new Date());
|
|
@@ -381,6 +388,7 @@ class Dialog {
|
|
|
381
388
|
content: result.updatedContent,
|
|
382
389
|
owner: reminder.owner,
|
|
383
390
|
meta: result.updatedMeta !== undefined ? result.updatedMeta : reminder.meta,
|
|
391
|
+
echoback: reminder.echoback,
|
|
384
392
|
};
|
|
385
393
|
this.reminders[i] = updatedReminder;
|
|
386
394
|
}
|
|
@@ -410,9 +418,12 @@ class Dialog {
|
|
|
410
418
|
catch (err) {
|
|
411
419
|
log_1.log.warn('Failed to persist reminders', err, { dialogId: this.id.valueOf() });
|
|
412
420
|
}
|
|
413
|
-
const
|
|
421
|
+
const reminderNoByIndex = (0, tool_1.computeReminderNoByIndex)(this.reminders);
|
|
422
|
+
const reminders = this.reminders.map((r, index) => ({
|
|
414
423
|
content: r.content,
|
|
415
424
|
meta: r.meta,
|
|
425
|
+
reminder_no: reminderNoByIndex.get(index),
|
|
426
|
+
echoback: (0, tool_1.reminderEchoBackEnabled)(r),
|
|
416
427
|
}));
|
|
417
428
|
// Emit full_reminders_update event with complete reminder list including metadata
|
|
418
429
|
const fullRemindersEvt = {
|
|
@@ -576,8 +576,8 @@ function validateReconstructedContext(messages) {
|
|
|
576
576
|
}
|
|
577
577
|
async function consumeAnthropicStream(stream, receiver, abortSignal, forcedJsonToolName) {
|
|
578
578
|
// Stream lifecycle management using SDK start/stop events
|
|
579
|
-
|
|
580
|
-
|
|
579
|
+
const activeContentBlocks = new Map();
|
|
580
|
+
const activeToolUses = new Map();
|
|
581
581
|
let sayingStarted = false;
|
|
582
582
|
let thinkingStarted = false;
|
|
583
583
|
let usage = { kind: 'unavailable' };
|
|
@@ -588,23 +588,35 @@ async function consumeAnthropicStream(stream, receiver, abortSignal, forcedJsonT
|
|
|
588
588
|
}
|
|
589
589
|
switch (event.type) {
|
|
590
590
|
case 'content_block_start': {
|
|
591
|
+
const blockIndex = event.index;
|
|
591
592
|
const contentBlock = event.content_block;
|
|
593
|
+
const existingBlock = activeContentBlocks.get(blockIndex);
|
|
594
|
+
if (existingBlock) {
|
|
595
|
+
log.warn('ANTH content_block_start replacing active content block at index', new Error('content_block_start_without_stop'), {
|
|
596
|
+
index: blockIndex,
|
|
597
|
+
prevType: existingBlock.type,
|
|
598
|
+
nextType: contentBlock.type,
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
activeContentBlocks.set(blockIndex, contentBlock);
|
|
592
602
|
// Track tool use so we can emit function calls once JSON is complete
|
|
593
603
|
if (contentBlock.type === 'tool_use') {
|
|
594
|
-
|
|
604
|
+
activeToolUses.set(blockIndex, {
|
|
595
605
|
id: contentBlock.id,
|
|
596
606
|
name: contentBlock.name,
|
|
597
607
|
inputJson: '',
|
|
598
608
|
initialInput: contentBlock.input,
|
|
599
|
-
};
|
|
609
|
+
});
|
|
600
610
|
}
|
|
601
|
-
currentContentBlock = contentBlock;
|
|
602
611
|
break;
|
|
603
612
|
}
|
|
604
613
|
case 'content_block_delta': {
|
|
614
|
+
const blockIndex = event.index;
|
|
615
|
+
const activeContentBlock = activeContentBlocks.get(blockIndex);
|
|
605
616
|
// Only process deltas for known content blocks
|
|
606
|
-
if (!
|
|
617
|
+
if (!activeContentBlock) {
|
|
607
618
|
log.warn('ANTH unexpected content_block_delta without active content block', new Error('Delta received before content_block_start'), {
|
|
619
|
+
index: blockIndex,
|
|
608
620
|
deltaType: event.delta.type,
|
|
609
621
|
});
|
|
610
622
|
break;
|
|
@@ -657,37 +669,44 @@ async function consumeAnthropicStream(stream, receiver, abortSignal, forcedJsonT
|
|
|
657
669
|
}
|
|
658
670
|
else if (delta.type === 'input_json_delta') {
|
|
659
671
|
const partialJson = delta.partial_json;
|
|
660
|
-
|
|
661
|
-
|
|
672
|
+
const activeToolUse = activeToolUses.get(blockIndex);
|
|
673
|
+
if (activeToolUse) {
|
|
674
|
+
applyInputJsonDelta(activeToolUse, partialJson);
|
|
662
675
|
}
|
|
663
676
|
else if (partialJson.length > 0) {
|
|
664
677
|
log.warn('ANTH input_json_delta without active tool_use', new Error('Input JSON delta received without active tool_use block'), {
|
|
665
|
-
hasCurrentBlock:
|
|
666
|
-
|
|
678
|
+
hasCurrentBlock: true,
|
|
679
|
+
blockIndex,
|
|
680
|
+
blockType: activeContentBlock.type,
|
|
667
681
|
});
|
|
668
682
|
}
|
|
669
683
|
}
|
|
670
684
|
break;
|
|
671
685
|
}
|
|
672
686
|
case 'content_block_stop': {
|
|
673
|
-
|
|
687
|
+
const blockIndex = event.index;
|
|
688
|
+
const activeContentBlock = activeContentBlocks.get(blockIndex);
|
|
689
|
+
if (!activeContentBlock) {
|
|
674
690
|
break;
|
|
675
691
|
}
|
|
676
692
|
// Close thinking as soon as the thinking block ends so downstream UI/persistence reflects
|
|
677
693
|
// strict generation order (thinking first, then saying). This also avoids emitting
|
|
678
694
|
// thinking_finish after the main message has already completed.
|
|
679
|
-
if (
|
|
695
|
+
if (activeContentBlock.type === 'thinking' && thinkingStarted) {
|
|
680
696
|
await receiver.thinkingFinish();
|
|
681
697
|
thinkingStarted = false;
|
|
682
698
|
}
|
|
683
|
-
if (
|
|
684
|
-
|
|
685
|
-
|
|
699
|
+
if (activeContentBlock.type === 'tool_use') {
|
|
700
|
+
const activeToolUse = activeToolUses.get(blockIndex);
|
|
701
|
+
if (!activeToolUse) {
|
|
702
|
+
log.warn('ANTH tool_use stop without active tool_use', new Error('Tool_use block stopped without active tool tracking'), {
|
|
703
|
+
blockIndex,
|
|
704
|
+
});
|
|
686
705
|
}
|
|
687
706
|
else {
|
|
688
|
-
if (forcedJsonToolName &&
|
|
689
|
-
const forcedInput = parseForcedJsonToolInput(
|
|
690
|
-
const jsonText = serializeAnthropicForcedJsonObject(forcedInput, `tool_use:${
|
|
707
|
+
if (forcedJsonToolName && activeToolUse.name === forcedJsonToolName) {
|
|
708
|
+
const forcedInput = parseForcedJsonToolInput(activeToolUse.inputJson, activeToolUse.initialInput, `tool_use:${activeToolUse.id}:${activeToolUse.name}`);
|
|
709
|
+
const jsonText = serializeAnthropicForcedJsonObject(forcedInput, `tool_use:${activeToolUse.id}:${activeToolUse.name}`);
|
|
691
710
|
if (!sayingStarted) {
|
|
692
711
|
sayingStarted = true;
|
|
693
712
|
await receiver.sayingStart();
|
|
@@ -698,20 +717,20 @@ async function consumeAnthropicStream(stream, receiver, abortSignal, forcedJsonT
|
|
|
698
717
|
}
|
|
699
718
|
else {
|
|
700
719
|
let argsJson = '';
|
|
701
|
-
if (
|
|
702
|
-
argsJson =
|
|
720
|
+
if (activeToolUse.inputJson.trim().length > 0) {
|
|
721
|
+
argsJson = activeToolUse.inputJson;
|
|
703
722
|
}
|
|
704
723
|
else {
|
|
705
|
-
const stringified = JSON.stringify(
|
|
724
|
+
const stringified = JSON.stringify(activeToolUse.initialInput);
|
|
706
725
|
argsJson =
|
|
707
726
|
typeof stringified === 'string' && stringified.length > 0 ? stringified : '{}';
|
|
708
727
|
}
|
|
709
|
-
await receiver.funcCall(
|
|
728
|
+
await receiver.funcCall(activeToolUse.id, activeToolUse.name, argsJson);
|
|
710
729
|
}
|
|
711
730
|
}
|
|
712
|
-
|
|
731
|
+
activeToolUses.delete(blockIndex);
|
|
713
732
|
}
|
|
714
|
-
|
|
733
|
+
activeContentBlocks.delete(blockIndex);
|
|
715
734
|
break;
|
|
716
735
|
}
|
|
717
736
|
case 'message_start': {
|
|
@@ -767,8 +786,8 @@ async function consumeAnthropicStream(stream, receiver, abortSignal, forcedJsonT
|
|
|
767
786
|
break;
|
|
768
787
|
}
|
|
769
788
|
case 'message_stop': {
|
|
770
|
-
|
|
771
|
-
|
|
789
|
+
activeContentBlocks.clear();
|
|
790
|
+
activeToolUses.clear();
|
|
772
791
|
if (thinkingStarted) {
|
|
773
792
|
await receiver.thinkingFinish();
|
|
774
793
|
thinkingStarted = false;
|
|
@@ -627,7 +627,16 @@ class OpenAiCompatibleGen {
|
|
|
627
627
|
const toolCalls = delta.tool_calls;
|
|
628
628
|
if (Array.isArray(toolCalls)) {
|
|
629
629
|
for (const call of toolCalls) {
|
|
630
|
-
const
|
|
630
|
+
const rawIndex = call.index;
|
|
631
|
+
if (typeof rawIndex !== 'number' || !Number.isInteger(rawIndex) || rawIndex < 0) {
|
|
632
|
+
const detail = `OPENAI-COMPATIBLE invalid tool call index: ${JSON.stringify(rawIndex)}`;
|
|
633
|
+
log.error(detail, new Error('openai_compatible_invalid_tool_call_index'));
|
|
634
|
+
if (receiver.streamError) {
|
|
635
|
+
await receiver.streamError(detail);
|
|
636
|
+
}
|
|
637
|
+
throw new Error(detail);
|
|
638
|
+
}
|
|
639
|
+
const index = rawIndex;
|
|
631
640
|
const existing = activeCallsByIndex.get(index);
|
|
632
641
|
const state = existing ??
|
|
633
642
|
{
|
|
@@ -12,6 +12,7 @@ const driver_messages_1 = require("../../shared/i18n/driver-messages");
|
|
|
12
12
|
const runtime_language_1 = require("../../shared/runtime-language");
|
|
13
13
|
const id_1 = require("../../shared/utils/id");
|
|
14
14
|
const time_1 = require("../../shared/utils/time");
|
|
15
|
+
const tool_1 = require("../../tool");
|
|
15
16
|
const taskdoc_1 = require("../../utils/taskdoc");
|
|
16
17
|
const client_1 = require("../client");
|
|
17
18
|
const registry_1 = require("../gen/registry");
|
|
@@ -405,18 +406,30 @@ async function renderRemindersForContext(dlg) {
|
|
|
405
406
|
if (dlg.reminders.length === 0)
|
|
406
407
|
return [];
|
|
407
408
|
const language = (0, runtime_language_1.getWorkLanguage)();
|
|
408
|
-
|
|
409
|
+
const reminderNoByIndex = (0, tool_1.computeReminderNoByIndex)(dlg.reminders);
|
|
410
|
+
const rendered = [];
|
|
411
|
+
for (let index = 0; index < dlg.reminders.length; index += 1) {
|
|
412
|
+
const reminder = dlg.reminders[index];
|
|
413
|
+
if (!reminder || !(0, tool_1.reminderEchoBackEnabled)(reminder)) {
|
|
414
|
+
continue;
|
|
415
|
+
}
|
|
416
|
+
const reminderNo = reminderNoByIndex.get(index);
|
|
417
|
+
if (reminderNo === undefined) {
|
|
418
|
+
continue;
|
|
419
|
+
}
|
|
409
420
|
if (reminder.owner) {
|
|
410
|
-
|
|
421
|
+
rendered.push(await reminder.owner.renderReminder(dlg, reminder, reminderNo - 1));
|
|
422
|
+
continue;
|
|
411
423
|
}
|
|
412
|
-
|
|
424
|
+
rendered.push({
|
|
413
425
|
type: 'environment_msg',
|
|
414
426
|
role: 'user',
|
|
415
|
-
content: (0, driver_messages_1.formatReminderItemGuide)(language,
|
|
427
|
+
content: (0, driver_messages_1.formatReminderItemGuide)(language, reminderNo, reminder.content, {
|
|
416
428
|
meta: reminder.meta,
|
|
417
429
|
}),
|
|
418
|
-
};
|
|
419
|
-
}
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
return rendered;
|
|
420
433
|
}
|
|
421
434
|
function parseUnifiedTimestampMs(ts) {
|
|
422
435
|
const normalized = ts.trim();
|
|
@@ -144,7 +144,7 @@ function getMemoryPromptCopy(ctx) {
|
|
|
144
144
|
progressLine: '- 其中 `progress` 是全队共享公告牌:用于“阶段性进度快照”(关键决策/当前状态/下一步),不是流水账。',
|
|
145
145
|
injectedTaskdocLine: '- 重要:差遣牒内容会被系统以内联形式注入到上下文中(本轮生成视角下即为最新;注入内容不包括全局约束)。需要回顾时请直接基于上下文里的差遣牒内容回顾与决策,不要试图用通用文件工具读取 `*.tsk/` 下的文件(会被拒绝)。',
|
|
146
146
|
constraintsLine: '- 约定:`constraints` 只写任务特有的硬要求,不得写入系统提示/工具文档里已明确且由系统强制执行的通用规则(例如 `*.tsk/` 封装禁止通用文件工具)。一经发现重复,必须删除并告知用户。',
|
|
147
|
-
remindersLine: '-
|
|
147
|
+
remindersLine: '- 提醒项(即编号提醒,工作集):当前对话的高频工作记录/关键细节(偏私有,不作为全队公告);保持少量(常见 1–3 条),优先 `update_reminder` 压缩/合并,不再需要就 `delete_reminder`。',
|
|
148
148
|
teamMemoryLine: '- 团队记忆:稳定的团队约定/工程规约(跨任务共享)。',
|
|
149
149
|
personalMemoryLine: '- 个人记忆:稳定的个人习惯/偏好与职责域知识;可维护你职责范围内的“rtws 索引”(关键文档/代码的准确路径 + 必要要点),以减少重复读文件;不要记录具体任务状态。',
|
|
150
150
|
subdialogDutyLine: `你当前处于支线对话:此处不允许 \`change_mind\`。当你判断需要更新差遣牒(尤其是 progress 公告牌)时,请在合适时机直接诉请差遣牒维护人 \`@${ctx.taskdocMaintainerId}\` 执行更新,并给出你已合并好的“新全文/替换稿”(用于替换对应章节全文)。不要声称已更新,除非看到回执。`,
|
|
@@ -166,7 +166,7 @@ function getMemoryPromptCopy(ctx) {
|
|
|
166
166
|
progressLine: '- Taskdoc `progress` is the team’s shared bulletin board: distilled milestone snapshots (key decisions/current status/next steps), not raw logs.',
|
|
167
167
|
injectedTaskdocLine: '- Important: the Taskdoc content is injected inline into the context (the latest as of this generation; injected content excludes global constraints). Review the injected Taskdoc instead of trying to read files under `*.tsk/` via general file tools (they will be rejected).',
|
|
168
168
|
constraintsLine: '- Convention: Taskdoc `constraints` must contain task-specific requirements only; do not include global, system-enforced rules already stated in system prompt/tool docs (e.g. `.tsk/` encapsulation bans general file tools). If duplication is found, you MUST remove it and notify the user.',
|
|
169
|
-
remindersLine: '- Reminders (working set): your high-frequency per-dialog worklog + critical details (not a team bulletin board); keep it small (often 1–3 items), prefer `update_reminder` to compress/merge; delete when obsolete.',
|
|
169
|
+
remindersLine: '- Reminders (i.e. numbered reminders, working set): your high-frequency per-dialog worklog + critical details (not a team bulletin board); keep it small (often 1–3 items), prefer `update_reminder` to compress/merge; delete when obsolete.',
|
|
170
170
|
teamMemoryLine: '- Team memory: stable shared conventions (cross-task).',
|
|
171
171
|
personalMemoryLine: '- Personal memory: stable personal habits/preferences and responsibility-scope knowledge. Maintain a compact responsibility-area rtws index (exact key doc/code paths + minimal key facts) to reduce repeat file reads; do not store per-task state.',
|
|
172
172
|
subdialogDutyLine: `You are currently in a subdialog: \`change_mind\` is not allowed here. When Taskdoc should be updated (especially the shared progress bulletin board), tellask the Taskdoc maintainer \`@${ctx.taskdocMaintainerId}\` with a fully merged replacement draft (full-section replacement). Do not claim it is updated until you see a receipt.`,
|
package/dist/persistence.js
CHANGED
|
@@ -1460,11 +1460,14 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
1460
1460
|
}
|
|
1461
1461
|
// Rehydrate reminders from dialog state
|
|
1462
1462
|
const dialogState = await DialogPersistence.restoreDialog(dialog.id, status);
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
}
|
|
1463
|
+
if (!dialogState) {
|
|
1464
|
+
throw new Error(`Dialog state missing during direct event replay: ${dialog.id.valueOf()} (${status})`);
|
|
1465
|
+
}
|
|
1466
|
+
// Keep typed reminder objects as-is instead of field-picking rehydrate.
|
|
1467
|
+
// This prevents accidental field loss (e.g. echoback) when Reminder shape evolves.
|
|
1468
|
+
const restoredReminders = dialogState.reminders;
|
|
1466
1469
|
dialog.reminders.length = 0;
|
|
1467
|
-
dialog.reminders.push(...
|
|
1470
|
+
dialog.reminders.push(...restoredReminders);
|
|
1468
1471
|
}
|
|
1469
1472
|
catch (error) {
|
|
1470
1473
|
log_1.log.error(`Failed to send dialog events directly for ${dialog.id.selfId}:`, error);
|
|
@@ -2641,6 +2644,7 @@ class DialogPersistence {
|
|
|
2641
2644
|
content: r.content,
|
|
2642
2645
|
ownerName: r.owner ? r.owner.name : undefined,
|
|
2643
2646
|
meta: r.meta,
|
|
2647
|
+
echoback: r.echoback,
|
|
2644
2648
|
createdAt: (0, time_1.formatUnifiedTimestamp)(new Date()),
|
|
2645
2649
|
priority: 'medium',
|
|
2646
2650
|
})),
|
|
@@ -2675,6 +2679,7 @@ class DialogPersistence {
|
|
|
2675
2679
|
content: r.content,
|
|
2676
2680
|
owner,
|
|
2677
2681
|
meta: r.meta,
|
|
2682
|
+
echoback: r.echoback,
|
|
2678
2683
|
createdAt: r.createdAt,
|
|
2679
2684
|
priority: r.priority,
|
|
2680
2685
|
};
|
|
@@ -82,6 +82,31 @@ function resolveUserLanguageCode(ws, raw, fallbackDialog) {
|
|
|
82
82
|
return fallbackDialog.getLastUserLanguageCode();
|
|
83
83
|
return (0, runtime_language_1.getWorkLanguage)();
|
|
84
84
|
}
|
|
85
|
+
async function queueUserSupplementAtGenerationBoundary(dialog, prompt) {
|
|
86
|
+
const latest = await persistence_1.DialogPersistence.loadDialogLatest(dialog.id, 'running');
|
|
87
|
+
const runStateKind = latest?.runState?.kind;
|
|
88
|
+
if (runStateKind !== 'proceeding') {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
if (!dialog.isLocked()) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
if (dialog.hasUpNext()) {
|
|
95
|
+
throw new Error(`Dialog already has pending upNext prompt; cannot queue supplement now (dialog=${dialog.id.valueOf()} incomingMsgId=${prompt.msgId})`);
|
|
96
|
+
}
|
|
97
|
+
dialog.queueUpNextPrompt({
|
|
98
|
+
prompt: prompt.content,
|
|
99
|
+
msgId: prompt.msgId,
|
|
100
|
+
grammar: prompt.grammar,
|
|
101
|
+
userLanguageCode: prompt.userLanguageCode,
|
|
102
|
+
});
|
|
103
|
+
log.debug('Queued user supplement for next generation boundary', undefined, {
|
|
104
|
+
rootId: dialog.id.rootId,
|
|
105
|
+
selfId: dialog.id.selfId,
|
|
106
|
+
msgId: prompt.msgId,
|
|
107
|
+
});
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
85
110
|
/**
|
|
86
111
|
* Get error code from unknown error
|
|
87
112
|
*/
|
|
@@ -948,6 +973,10 @@ async function handleUserMsg2Dlg(ws, packet) {
|
|
|
948
973
|
existingDialog.status === 'running' &&
|
|
949
974
|
existingSub &&
|
|
950
975
|
existingSub.dialogKey === existingDialog.id.valueOf()) {
|
|
976
|
+
const queuedAtBoundary = await queueUserSupplementAtGenerationBoundary(existingDialog, effectivePrompt);
|
|
977
|
+
if (queuedAtBoundary) {
|
|
978
|
+
return;
|
|
979
|
+
}
|
|
951
980
|
await (0, kernel_driver_1.driveDialogStream)(existingDialog, {
|
|
952
981
|
content: effectivePrompt.content,
|
|
953
982
|
msgId: effectivePrompt.msgId,
|
|
@@ -974,6 +1003,10 @@ async function handleUserMsg2Dlg(ws, packet) {
|
|
|
974
1003
|
return;
|
|
975
1004
|
}
|
|
976
1005
|
await setupWebSocketSubscription(ws, dialog);
|
|
1006
|
+
const queuedAtBoundary = await queueUserSupplementAtGenerationBoundary(dialog, effectivePrompt);
|
|
1007
|
+
if (queuedAtBoundary) {
|
|
1008
|
+
return;
|
|
1009
|
+
}
|
|
977
1010
|
await (0, kernel_driver_1.driveDialogStream)(dialog, {
|
|
978
1011
|
content: effectivePrompt.content,
|
|
979
1012
|
msgId: effectivePrompt.msgId,
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { e as isSymbol, c as baseFlatten, g as baseIteratee, k as keys, h as baseFindIndex, j as baseEach, l as arrayMap, m as hasPath, n as castPath, t as toKey, o as baseGet } from "./_baseUniq-DIU8uS8B.js";
|
|
2
|
+
import { aR as isObject, aA as baseRest, aS as isIterateeCall, aT as keysIn, aU as eq, aV as isArrayLike, aW as isArray, aX as identity, aY as isIndex, aZ as assignValue } from "./index-xfSa-dGk.js";
|
|
3
|
+
var reWhitespace = /\s/;
|
|
4
|
+
function trimmedEndIndex(string) {
|
|
5
|
+
var index = string.length;
|
|
6
|
+
while (index-- && reWhitespace.test(string.charAt(index))) {
|
|
7
|
+
}
|
|
8
|
+
return index;
|
|
9
|
+
}
|
|
10
|
+
var reTrimStart = /^\s+/;
|
|
11
|
+
function baseTrim(string) {
|
|
12
|
+
return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string;
|
|
13
|
+
}
|
|
14
|
+
var NAN = 0 / 0;
|
|
15
|
+
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
|
|
16
|
+
var reIsBinary = /^0b[01]+$/i;
|
|
17
|
+
var reIsOctal = /^0o[0-7]+$/i;
|
|
18
|
+
var freeParseInt = parseInt;
|
|
19
|
+
function toNumber(value) {
|
|
20
|
+
if (typeof value == "number") {
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
if (isSymbol(value)) {
|
|
24
|
+
return NAN;
|
|
25
|
+
}
|
|
26
|
+
if (isObject(value)) {
|
|
27
|
+
var other = typeof value.valueOf == "function" ? value.valueOf() : value;
|
|
28
|
+
value = isObject(other) ? other + "" : other;
|
|
29
|
+
}
|
|
30
|
+
if (typeof value != "string") {
|
|
31
|
+
return value === 0 ? value : +value;
|
|
32
|
+
}
|
|
33
|
+
value = baseTrim(value);
|
|
34
|
+
var isBinary = reIsBinary.test(value);
|
|
35
|
+
return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
|
|
36
|
+
}
|
|
37
|
+
var INFINITY = 1 / 0, MAX_INTEGER = 17976931348623157e292;
|
|
38
|
+
function toFinite(value) {
|
|
39
|
+
if (!value) {
|
|
40
|
+
return value === 0 ? value : 0;
|
|
41
|
+
}
|
|
42
|
+
value = toNumber(value);
|
|
43
|
+
if (value === INFINITY || value === -INFINITY) {
|
|
44
|
+
var sign = value < 0 ? -1 : 1;
|
|
45
|
+
return sign * MAX_INTEGER;
|
|
46
|
+
}
|
|
47
|
+
return value === value ? value : 0;
|
|
48
|
+
}
|
|
49
|
+
function toInteger(value) {
|
|
50
|
+
var result = toFinite(value), remainder = result % 1;
|
|
51
|
+
return result === result ? remainder ? result - remainder : result : 0;
|
|
52
|
+
}
|
|
53
|
+
function flatten(array) {
|
|
54
|
+
var length = array == null ? 0 : array.length;
|
|
55
|
+
return length ? baseFlatten(array) : [];
|
|
56
|
+
}
|
|
57
|
+
var objectProto$1 = Object.prototype;
|
|
58
|
+
var hasOwnProperty$1 = objectProto$1.hasOwnProperty;
|
|
59
|
+
var defaults = baseRest(function(object, sources) {
|
|
60
|
+
object = Object(object);
|
|
61
|
+
var index = -1;
|
|
62
|
+
var length = sources.length;
|
|
63
|
+
var guard = length > 2 ? sources[2] : void 0;
|
|
64
|
+
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
|
|
65
|
+
length = 1;
|
|
66
|
+
}
|
|
67
|
+
while (++index < length) {
|
|
68
|
+
var source = sources[index];
|
|
69
|
+
var props = keysIn(source);
|
|
70
|
+
var propsIndex = -1;
|
|
71
|
+
var propsLength = props.length;
|
|
72
|
+
while (++propsIndex < propsLength) {
|
|
73
|
+
var key = props[propsIndex];
|
|
74
|
+
var value = object[key];
|
|
75
|
+
if (value === void 0 || eq(value, objectProto$1[key]) && !hasOwnProperty$1.call(object, key)) {
|
|
76
|
+
object[key] = source[key];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return object;
|
|
81
|
+
});
|
|
82
|
+
function last(array) {
|
|
83
|
+
var length = array == null ? 0 : array.length;
|
|
84
|
+
return length ? array[length - 1] : void 0;
|
|
85
|
+
}
|
|
86
|
+
function createFind(findIndexFunc) {
|
|
87
|
+
return function(collection, predicate, fromIndex) {
|
|
88
|
+
var iterable = Object(collection);
|
|
89
|
+
if (!isArrayLike(collection)) {
|
|
90
|
+
var iteratee = baseIteratee(predicate);
|
|
91
|
+
collection = keys(collection);
|
|
92
|
+
predicate = function(key) {
|
|
93
|
+
return iteratee(iterable[key], key, iterable);
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
var index = findIndexFunc(collection, predicate, fromIndex);
|
|
97
|
+
return index > -1 ? iterable[iteratee ? collection[index] : index] : void 0;
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
var nativeMax = Math.max;
|
|
101
|
+
function findIndex(array, predicate, fromIndex) {
|
|
102
|
+
var length = array == null ? 0 : array.length;
|
|
103
|
+
if (!length) {
|
|
104
|
+
return -1;
|
|
105
|
+
}
|
|
106
|
+
var index = fromIndex == null ? 0 : toInteger(fromIndex);
|
|
107
|
+
if (index < 0) {
|
|
108
|
+
index = nativeMax(length + index, 0);
|
|
109
|
+
}
|
|
110
|
+
return baseFindIndex(array, baseIteratee(predicate), index);
|
|
111
|
+
}
|
|
112
|
+
var find = createFind(findIndex);
|
|
113
|
+
function baseMap(collection, iteratee) {
|
|
114
|
+
var index = -1, result = isArrayLike(collection) ? Array(collection.length) : [];
|
|
115
|
+
baseEach(collection, function(value, key, collection2) {
|
|
116
|
+
result[++index] = iteratee(value, key, collection2);
|
|
117
|
+
});
|
|
118
|
+
return result;
|
|
119
|
+
}
|
|
120
|
+
function map(collection, iteratee) {
|
|
121
|
+
var func = isArray(collection) ? arrayMap : baseMap;
|
|
122
|
+
return func(collection, baseIteratee(iteratee));
|
|
123
|
+
}
|
|
124
|
+
var objectProto = Object.prototype;
|
|
125
|
+
var hasOwnProperty = objectProto.hasOwnProperty;
|
|
126
|
+
function baseHas(object, key) {
|
|
127
|
+
return object != null && hasOwnProperty.call(object, key);
|
|
128
|
+
}
|
|
129
|
+
function has(object, path) {
|
|
130
|
+
return object != null && hasPath(object, path, baseHas);
|
|
131
|
+
}
|
|
132
|
+
function baseLt(value, other) {
|
|
133
|
+
return value < other;
|
|
134
|
+
}
|
|
135
|
+
function baseExtremum(array, iteratee, comparator) {
|
|
136
|
+
var index = -1, length = array.length;
|
|
137
|
+
while (++index < length) {
|
|
138
|
+
var value = array[index], current = iteratee(value);
|
|
139
|
+
if (current != null && (computed === void 0 ? current === current && !isSymbol(current) : comparator(current, computed))) {
|
|
140
|
+
var computed = current, result = value;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
function min(array) {
|
|
146
|
+
return array && array.length ? baseExtremum(array, identity, baseLt) : void 0;
|
|
147
|
+
}
|
|
148
|
+
function baseSet(object, path, value, customizer) {
|
|
149
|
+
if (!isObject(object)) {
|
|
150
|
+
return object;
|
|
151
|
+
}
|
|
152
|
+
path = castPath(path, object);
|
|
153
|
+
var index = -1, length = path.length, lastIndex = length - 1, nested = object;
|
|
154
|
+
while (nested != null && ++index < length) {
|
|
155
|
+
var key = toKey(path[index]), newValue = value;
|
|
156
|
+
if (key === "__proto__" || key === "constructor" || key === "prototype") {
|
|
157
|
+
return object;
|
|
158
|
+
}
|
|
159
|
+
if (index != lastIndex) {
|
|
160
|
+
var objValue = nested[key];
|
|
161
|
+
newValue = void 0;
|
|
162
|
+
if (newValue === void 0) {
|
|
163
|
+
newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
assignValue(nested, key, newValue);
|
|
167
|
+
nested = nested[key];
|
|
168
|
+
}
|
|
169
|
+
return object;
|
|
170
|
+
}
|
|
171
|
+
function basePickBy(object, paths, predicate) {
|
|
172
|
+
var index = -1, length = paths.length, result = {};
|
|
173
|
+
while (++index < length) {
|
|
174
|
+
var path = paths[index], value = baseGet(object, path);
|
|
175
|
+
if (predicate(value, path)) {
|
|
176
|
+
baseSet(result, castPath(path, object), value);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return result;
|
|
180
|
+
}
|
|
181
|
+
export {
|
|
182
|
+
baseLt as a,
|
|
183
|
+
baseExtremum as b,
|
|
184
|
+
baseMap as c,
|
|
185
|
+
basePickBy as d,
|
|
186
|
+
min as e,
|
|
187
|
+
flatten as f,
|
|
188
|
+
find as g,
|
|
189
|
+
has as h,
|
|
190
|
+
defaults as i,
|
|
191
|
+
toInteger as j,
|
|
192
|
+
last as l,
|
|
193
|
+
map as m,
|
|
194
|
+
toFinite as t
|
|
195
|
+
};
|
|
196
|
+
//# sourceMappingURL=_basePickBy-BxEtbvFu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_basePickBy-BxEtbvFu.js","sources":["../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_trimmedEndIndex.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseTrim.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toNumber.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toFinite.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toInteger.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/flatten.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/defaults.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/last.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createFind.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/findIndex.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/find.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMap.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/map.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseHas.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/has.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseLt.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseExtremum.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/min.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePickBy.js"],"sourcesContent":["/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","import baseRest from './_baseRest.js';\nimport eq from './eq.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport keysIn from './keysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nexport default defaults;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","import baseIteratee from './_baseIteratee.js';\nimport isArrayLike from './isArrayLike.js';\nimport keys from './keys.js';\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nexport default createFind;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nexport default findIndex;\n","import createFind from './_createFind.js';\nimport findIndex from './findIndex.js';\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nexport default find;\n","import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;\n","import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nexport default baseLt;\n","import isSymbol from './isSymbol.js';\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nexport default baseExtremum;\n","import baseExtremum from './_baseExtremum.js';\nimport baseLt from './_baseLt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nexport default min;\n","import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n","import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nexport default basePickBy;\n"],"names":["objectProto","hasOwnProperty","collection"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]}
|