dominds 1.17.0 → 1.17.2
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 +2 -2
- package/README.zh.md +1 -1
- package/dist/docs/app-constitution.md +10 -10
- package/dist/docs/app-constitution.zh.md +10 -10
- package/dist/docs/dialog-persistence.md +10 -10
- package/dist/docs/dialog-persistence.zh.md +10 -10
- package/dist/docs/dominds-agent-collaboration.zh.md +3 -3
- package/dist/docs/i18n.md +8 -1
- package/dist/docs/i18n.zh.md +7 -1
- package/dist/docs/memory-system.md +5 -5
- package/dist/docs/memory-system.zh.md +5 -5
- package/dist/docs/team_mgmt-toolset.md +12 -11
- package/dist/docs/team_mgmt-toolset.zh.md +12 -11
- package/dist/minds/load.js +34 -34
- package/dist/minds/system-prompt.d.ts +2 -2
- package/dist/minds/system-prompt.js +8 -8
- package/dist/tools/team_mgmt.js +50 -36
- package/package.json +3 -3
- package/webapp/dist/assets/{_basePickBy-DCLDUO6G.js → _basePickBy-EK9iGcOl.js} +3 -3
- package/webapp/dist/assets/{_basePickBy-DCLDUO6G.js.map → _basePickBy-EK9iGcOl.js.map} +1 -1
- package/webapp/dist/assets/{_baseUniq-V58PJT8b.js → _baseUniq-BHtz-XvO.js} +2 -2
- package/webapp/dist/assets/{_baseUniq-V58PJT8b.js.map → _baseUniq-BHtz-XvO.js.map} +1 -1
- package/webapp/dist/assets/{arc-6cLC3ft0.js → arc-NqUmMwkS.js} +2 -2
- package/webapp/dist/assets/{arc-6cLC3ft0.js.map → arc-NqUmMwkS.js.map} +1 -1
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DZCDnc5k.js → architectureDiagram-2XIMDMQ5-CJ7Jb15a.js} +7 -7
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DZCDnc5k.js.map → architectureDiagram-2XIMDMQ5-CJ7Jb15a.js.map} +1 -1
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-B3x8CjfT.js → blockDiagram-WCTKOSBZ-RNM7ujN4.js} +7 -7
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-B3x8CjfT.js.map → blockDiagram-WCTKOSBZ-RNM7ujN4.js.map} +1 -1
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-BG5ES2pq.js → c4Diagram-IC4MRINW-DKra5-za.js} +3 -3
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-BG5ES2pq.js.map → c4Diagram-IC4MRINW-DKra5-za.js.map} +1 -1
- package/webapp/dist/assets/{channel-CKCjdwdQ.js → channel-CxE9sL_E.js} +2 -2
- package/webapp/dist/assets/{channel-CKCjdwdQ.js.map → channel-CxE9sL_E.js.map} +1 -1
- package/webapp/dist/assets/{chunk-4BX2VUAB-BMUaxm65.js → chunk-4BX2VUAB-BlyIt9uv.js} +2 -2
- package/webapp/dist/assets/{chunk-4BX2VUAB-BMUaxm65.js.map → chunk-4BX2VUAB-BlyIt9uv.js.map} +1 -1
- package/webapp/dist/assets/{chunk-55IACEB6-CZLjFLTA.js → chunk-55IACEB6-DsPShmjL.js} +2 -2
- package/webapp/dist/assets/{chunk-55IACEB6-CZLjFLTA.js.map → chunk-55IACEB6-DsPShmjL.js.map} +1 -1
- package/webapp/dist/assets/{chunk-FMBD7UC4-C6OhtkjK.js → chunk-FMBD7UC4-C2i0rEFF.js} +2 -2
- package/webapp/dist/assets/{chunk-FMBD7UC4-C6OhtkjK.js.map → chunk-FMBD7UC4-C2i0rEFF.js.map} +1 -1
- package/webapp/dist/assets/{chunk-JSJVCQXG-BL3lMwkX.js → chunk-JSJVCQXG-CK8inzJx.js} +2 -2
- package/webapp/dist/assets/{chunk-JSJVCQXG-BL3lMwkX.js.map → chunk-JSJVCQXG-CK8inzJx.js.map} +1 -1
- package/webapp/dist/assets/{chunk-KX2RTZJC-SieIRb1A.js → chunk-KX2RTZJC-BjEK5_oI.js} +2 -2
- package/webapp/dist/assets/{chunk-KX2RTZJC-SieIRb1A.js.map → chunk-KX2RTZJC-BjEK5_oI.js.map} +1 -1
- package/webapp/dist/assets/{chunk-NQ4KR5QH-Dj9V3OHv.js → chunk-NQ4KR5QH-Clf489xc.js} +4 -4
- package/webapp/dist/assets/{chunk-NQ4KR5QH-Dj9V3OHv.js.map → chunk-NQ4KR5QH-Clf489xc.js.map} +1 -1
- package/webapp/dist/assets/{chunk-QZHKN3VN-DPuk0WWI.js → chunk-QZHKN3VN-CMikir3s.js} +2 -2
- package/webapp/dist/assets/{chunk-QZHKN3VN-DPuk0WWI.js.map → chunk-QZHKN3VN-CMikir3s.js.map} +1 -1
- package/webapp/dist/assets/{chunk-WL4C6EOR-COmZsUPA.js → chunk-WL4C6EOR-1gtCLicd.js} +6 -6
- package/webapp/dist/assets/{chunk-WL4C6EOR-COmZsUPA.js.map → chunk-WL4C6EOR-1gtCLicd.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-D0LskUiI.js → classDiagram-VBA2DB6C-kzzlkQ_D.js} +7 -7
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-D0LskUiI.js.map → classDiagram-VBA2DB6C-kzzlkQ_D.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-D0LskUiI.js → classDiagram-v2-RAHNMMFH-kzzlkQ_D.js} +7 -7
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-D0LskUiI.js.map → classDiagram-v2-RAHNMMFH-kzzlkQ_D.js.map} +1 -1
- package/webapp/dist/assets/{clone-DF4VAArJ.js → clone-XglJh1R0.js} +2 -2
- package/webapp/dist/assets/{clone-DF4VAArJ.js.map → clone-XglJh1R0.js.map} +1 -1
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BLS39Y5M.js → cose-bilkent-S5V4N54A--gZrh2tG.js} +2 -2
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BLS39Y5M.js.map → cose-bilkent-S5V4N54A--gZrh2tG.js.map} +1 -1
- package/webapp/dist/assets/{dagre-KLK3FWXG-BNcB5hir.js → dagre-KLK3FWXG-D_JMhNNL.js} +7 -7
- package/webapp/dist/assets/{dagre-KLK3FWXG-BNcB5hir.js.map → dagre-KLK3FWXG-D_JMhNNL.js.map} +1 -1
- package/webapp/dist/assets/{diagram-E7M64L7V-C1k_RR0F.js → diagram-E7M64L7V-HkYhqJDL.js} +8 -8
- package/webapp/dist/assets/{diagram-E7M64L7V-C1k_RR0F.js.map → diagram-E7M64L7V-HkYhqJDL.js.map} +1 -1
- package/webapp/dist/assets/{diagram-IFDJBPK2-IbfvdUeO.js → diagram-IFDJBPK2-BFv5iU5U.js} +7 -7
- package/webapp/dist/assets/{diagram-IFDJBPK2-IbfvdUeO.js.map → diagram-IFDJBPK2-BFv5iU5U.js.map} +1 -1
- package/webapp/dist/assets/{diagram-P4PSJMXO-DMHGiNIM.js → diagram-P4PSJMXO-Dg46tTnk.js} +7 -7
- package/webapp/dist/assets/{diagram-P4PSJMXO-DMHGiNIM.js.map → diagram-P4PSJMXO-Dg46tTnk.js.map} +1 -1
- package/webapp/dist/assets/{erDiagram-INFDFZHY-DdHLX_b6.js → erDiagram-INFDFZHY-BzJClUtq.js} +5 -5
- package/webapp/dist/assets/{erDiagram-INFDFZHY-DdHLX_b6.js.map → erDiagram-INFDFZHY-BzJClUtq.js.map} +1 -1
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-BfFizksz.js → flowDiagram-PKNHOUZH-IBGgxeki.js} +7 -7
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-BfFizksz.js.map → flowDiagram-PKNHOUZH-IBGgxeki.js.map} +1 -1
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-CqevCVU5.js → ganttDiagram-A5KZAMGK-DdxgzFKe.js} +3 -3
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-CqevCVU5.js.map → ganttDiagram-A5KZAMGK-DdxgzFKe.js.map} +1 -1
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-BOOwupHL.js → gitGraphDiagram-K3NZZRJ6-C14OpSSI.js} +8 -8
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-BOOwupHL.js.map → gitGraphDiagram-K3NZZRJ6-C14OpSSI.js.map} +1 -1
- package/webapp/dist/assets/{graph-nrSDteEc.js → graph-BrKKvSVx.js} +3 -3
- package/webapp/dist/assets/{graph-nrSDteEc.js.map → graph-BrKKvSVx.js.map} +1 -1
- package/webapp/dist/assets/{index-Cakki4rP.js → index-BV_dDe3L.js} +236 -93
- package/webapp/dist/assets/{index-Cakki4rP.js.map → index-BV_dDe3L.js.map} +1 -1
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-D9wzGbBd.js → infoDiagram-LFFYTUFH-k0Yv94VI.js} +6 -6
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-D9wzGbBd.js.map → infoDiagram-LFFYTUFH-k0Yv94VI.js.map} +1 -1
- package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-Cw505dkV.js → ishikawaDiagram-PHBUUO56-C3EYBxjN.js} +2 -2
- package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-Cw505dkV.js.map → ishikawaDiagram-PHBUUO56-C3EYBxjN.js.map} +1 -1
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-DB9-Kk7L.js → journeyDiagram-4ABVD52K-BnSlOrbq.js} +5 -5
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-DB9-Kk7L.js.map → journeyDiagram-4ABVD52K-BnSlOrbq.js.map} +1 -1
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-D6f5d594.js → kanban-definition-K7BYSVSG-CNYH0HDF.js} +3 -3
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-D6f5d594.js.map → kanban-definition-K7BYSVSG-CNYH0HDF.js.map} +1 -1
- package/webapp/dist/assets/{layout-C66Gu-9j.js → layout-NtmBC9CZ.js} +5 -5
- package/webapp/dist/assets/{layout-C66Gu-9j.js.map → layout-NtmBC9CZ.js.map} +1 -1
- package/webapp/dist/assets/{linear-WEG-0mNF.js → linear-BrqwApt9.js} +2 -2
- package/webapp/dist/assets/{linear-WEG-0mNF.js.map → linear-BrqwApt9.js.map} +1 -1
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH-C5o4PZoW.js → mindmap-definition-YRQLILUH-DcknQb8H.js} +4 -4
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH-C5o4PZoW.js.map → mindmap-definition-YRQLILUH-DcknQb8H.js.map} +1 -1
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-CvE77iES.js → pieDiagram-SKSYHLDU-wydKHXzN.js} +8 -8
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-CvE77iES.js.map → pieDiagram-SKSYHLDU-wydKHXzN.js.map} +1 -1
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-0WD_Zxhv.js → quadrantDiagram-337W2JSQ-D6i3VaFO.js} +3 -3
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-0WD_Zxhv.js.map → quadrantDiagram-337W2JSQ-D6i3VaFO.js.map} +1 -1
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-VSa_hUdb.js → requirementDiagram-Z7DCOOCP-C0sBwH6H.js} +4 -4
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-VSa_hUdb.js.map → requirementDiagram-Z7DCOOCP-C0sBwH6H.js.map} +1 -1
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-vPNok4nN.js → sankeyDiagram-WA2Y5GQK-33jPg4PK.js} +2 -2
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-vPNok4nN.js.map → sankeyDiagram-WA2Y5GQK-33jPg4PK.js.map} +1 -1
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DX4cZf9x.js → sequenceDiagram-2WXFIKYE-CJsKHnh5.js} +4 -4
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DX4cZf9x.js.map → sequenceDiagram-2WXFIKYE-CJsKHnh5.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-nqNJSdDU.js → stateDiagram-RAJIS63D-B6A5jTdU.js} +9 -9
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-nqNJSdDU.js.map → stateDiagram-RAJIS63D-B6A5jTdU.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-BuZBSDCT.js → stateDiagram-v2-FVOUBMTO-6YIjpVKr.js} +5 -5
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-BuZBSDCT.js.map → stateDiagram-v2-FVOUBMTO-6YIjpVKr.js.map} +1 -1
- package/webapp/dist/assets/{timeline-definition-YZTLITO2--gWaXe_R.js → timeline-definition-YZTLITO2-BQS5KHfj.js} +3 -3
- package/webapp/dist/assets/{timeline-definition-YZTLITO2--gWaXe_R.js.map → timeline-definition-YZTLITO2-BQS5KHfj.js.map} +1 -1
- package/webapp/dist/assets/{treemap-KZPCXAKY-CAx-L6KX.js → treemap-KZPCXAKY-DB1uUX8l.js} +5 -5
- package/webapp/dist/assets/{treemap-KZPCXAKY-CAx-L6KX.js.map → treemap-KZPCXAKY-DB1uUX8l.js.map} +1 -1
- package/webapp/dist/assets/{vennDiagram-LZ73GAT5-BQD4mief.js → vennDiagram-LZ73GAT5-BtcfWZJx.js} +2 -2
- package/webapp/dist/assets/{vennDiagram-LZ73GAT5-BQD4mief.js.map → vennDiagram-LZ73GAT5-BtcfWZJx.js.map} +1 -1
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-D-wcj8Yx.js → xychartDiagram-JWTSCODW-CfIdcI74.js} +3 -3
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-D-wcj8Yx.js.map → xychartDiagram-JWTSCODW-CfIdcI74.js.map} +1 -1
- package/webapp/dist/index.html +1 -1
package/dist/minds/load.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.loadAgentMinds = loadAgentMinds;
|
|
|
7
7
|
/**
|
|
8
8
|
* Module: minds/load
|
|
9
9
|
*
|
|
10
|
-
* Loads agent minds/persona/
|
|
10
|
+
* Loads agent minds/persona/knowhow/pitfalls and memory files from `.minds`.
|
|
11
11
|
* Composes the system prompt and aggregates memories with optional hints.
|
|
12
12
|
*/
|
|
13
13
|
const time_1 = require("@longrun-ai/kernel/utils/time");
|
|
@@ -26,30 +26,12 @@ const toolset_manual_1 = require("../tools/toolset-manual");
|
|
|
26
26
|
const minds_i18n_1 = require("./minds-i18n");
|
|
27
27
|
const system_prompt_1 = require("./system-prompt");
|
|
28
28
|
const system_prompt_parts_1 = require("./system-prompt-parts");
|
|
29
|
-
async function readAgentMindResult(id, fn) {
|
|
30
|
-
const mindFn =
|
|
29
|
+
async function readAgentMindResult(id, fn, source) {
|
|
30
|
+
const mindFn = source === 'rtws'
|
|
31
|
+
? path_1.default.join('.minds', 'team', id, fn)
|
|
32
|
+
: path_1.default.join(__dirname, 'builtin', id, fn);
|
|
31
33
|
try {
|
|
32
34
|
await (0, promises_1.access)(mindFn);
|
|
33
|
-
}
|
|
34
|
-
catch {
|
|
35
|
-
// no rtws mindset file, attempt builtin minds
|
|
36
|
-
const builtinMindFn = path_1.default.join(__dirname, 'builtin', id, fn);
|
|
37
|
-
try {
|
|
38
|
-
const text = await (0, promises_1.readFile)(builtinMindFn, 'utf-8');
|
|
39
|
-
return { kind: 'found', text };
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
if (typeof error === 'object' &&
|
|
43
|
-
error !== null &&
|
|
44
|
-
'code' in error &&
|
|
45
|
-
error.code === 'ENOENT') {
|
|
46
|
-
return { kind: 'missing' };
|
|
47
|
-
}
|
|
48
|
-
log_1.log.warn(`Failed reading file '${builtinMindFn}':`, error);
|
|
49
|
-
return { kind: 'missing' };
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
try {
|
|
53
35
|
const text = await (0, promises_1.readFile)(mindFn, 'utf-8');
|
|
54
36
|
return { kind: 'found', text };
|
|
55
37
|
}
|
|
@@ -65,8 +47,14 @@ async function readAgentMindResult(id, fn) {
|
|
|
65
47
|
}
|
|
66
48
|
}
|
|
67
49
|
async function readAgentMindPreferred(options) {
|
|
68
|
-
for (const fn of options.
|
|
69
|
-
const result = await readAgentMindResult(options.id, fn);
|
|
50
|
+
for (const fn of options.rtwsPreferredFilenames) {
|
|
51
|
+
const result = await readAgentMindResult(options.id, fn, 'rtws');
|
|
52
|
+
if (result.kind === 'found')
|
|
53
|
+
return result.text;
|
|
54
|
+
}
|
|
55
|
+
const builtinPreferredFilenames = options.builtinPreferredFilenames ?? options.rtwsPreferredFilenames;
|
|
56
|
+
for (const fn of builtinPreferredFilenames) {
|
|
57
|
+
const result = await readAgentMindResult(options.id, fn, 'builtin');
|
|
70
58
|
if (result.kind === 'found')
|
|
71
59
|
return result.text;
|
|
72
60
|
}
|
|
@@ -152,17 +140,29 @@ async function loadAgentMinds(agentId, dialog, options) {
|
|
|
152
140
|
// read disk file afresh, in case the contents have changed by human or ai meanwhile
|
|
153
141
|
const personaRaw = await readAgentMindPreferred({
|
|
154
142
|
id: agent.id,
|
|
155
|
-
|
|
143
|
+
rtwsPreferredFilenames: [`persona.${workingLanguage}.md`, 'persona.md'],
|
|
156
144
|
noFileDefault: (0, minds_i18n_1.defaultPersonaText)(workingLanguage),
|
|
157
145
|
});
|
|
158
|
-
const
|
|
146
|
+
const knowhowRaw = await readAgentMindPreferred({
|
|
159
147
|
id: agent.id,
|
|
160
|
-
|
|
148
|
+
rtwsPreferredFilenames: [
|
|
149
|
+
`knowhow.${workingLanguage}.md`,
|
|
150
|
+
'knowhow.md',
|
|
151
|
+
`knowledge.${workingLanguage}.md`,
|
|
152
|
+
'knowledge.md',
|
|
153
|
+
],
|
|
154
|
+
builtinPreferredFilenames: [`knowhow.${workingLanguage}.md`, 'knowhow.md'],
|
|
161
155
|
noFileDefault: '',
|
|
162
156
|
});
|
|
163
|
-
const
|
|
157
|
+
const pitfallsRaw = await readAgentMindPreferred({
|
|
164
158
|
id: agent.id,
|
|
165
|
-
|
|
159
|
+
rtwsPreferredFilenames: [
|
|
160
|
+
`pitfalls.${workingLanguage}.md`,
|
|
161
|
+
'pitfalls.md',
|
|
162
|
+
`lessons.${workingLanguage}.md`,
|
|
163
|
+
'lessons.md',
|
|
164
|
+
],
|
|
165
|
+
builtinPreferredFilenames: [`pitfalls.${workingLanguage}.md`, 'pitfalls.md'],
|
|
166
166
|
noFileDefault: '',
|
|
167
167
|
});
|
|
168
168
|
const envIntroRaw = await readMindsTextPreferred({
|
|
@@ -171,8 +171,8 @@ async function loadAgentMinds(agentId, dialog, options) {
|
|
|
171
171
|
});
|
|
172
172
|
const none = (0, minds_i18n_1.noneText)(workingLanguage);
|
|
173
173
|
const persona = personaRaw && personaRaw.trim() !== '' ? personaRaw : none;
|
|
174
|
-
const
|
|
175
|
-
const
|
|
174
|
+
const knowhow = knowhowRaw && knowhowRaw.trim() !== '' ? knowhowRaw : none;
|
|
175
|
+
const pitfalls = pitfallsRaw && pitfallsRaw.trim() !== '' ? pitfallsRaw : none;
|
|
176
176
|
const envIntro = envIntroRaw && envIntroRaw.trim() !== '' ? envIntroRaw : '';
|
|
177
177
|
const workspaceSkills = await (0, load_1.loadWorkspaceSkills)({
|
|
178
178
|
rtwsRootAbs: process.cwd(),
|
|
@@ -316,8 +316,8 @@ async function loadAgentMinds(agentId, dialog, options) {
|
|
|
316
316
|
contextHealthPromptMode,
|
|
317
317
|
agent,
|
|
318
318
|
persona,
|
|
319
|
-
|
|
320
|
-
|
|
319
|
+
knowhow,
|
|
320
|
+
pitfalls,
|
|
321
321
|
skillsText,
|
|
322
322
|
envIntro,
|
|
323
323
|
teamIntro,
|
|
@@ -8,8 +8,8 @@ export type BuildSystemPromptInput = {
|
|
|
8
8
|
contextHealthPromptMode: ContextHealthPromptMode;
|
|
9
9
|
agent: Team.Member;
|
|
10
10
|
persona: string;
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
knowhow: string;
|
|
12
|
+
pitfalls: string;
|
|
13
13
|
skillsText: string;
|
|
14
14
|
envIntro: string;
|
|
15
15
|
teamIntro: string;
|
|
@@ -382,13 +382,13 @@ function buildSystemPrompt(input) {
|
|
|
382
382
|
|
|
383
383
|
${input.persona}
|
|
384
384
|
|
|
385
|
-
##
|
|
385
|
+
## 经验知识
|
|
386
386
|
|
|
387
|
-
${input.
|
|
387
|
+
${input.knowhow}
|
|
388
388
|
|
|
389
|
-
##
|
|
389
|
+
## 避坑指南
|
|
390
390
|
|
|
391
|
-
${input.
|
|
391
|
+
${input.pitfalls}
|
|
392
392
|
|
|
393
393
|
${input.skillsText}
|
|
394
394
|
|
|
@@ -480,13 +480,13 @@ System notices convey important state changes (e.g., context caution/critical, D
|
|
|
480
480
|
|
|
481
481
|
${input.persona}
|
|
482
482
|
|
|
483
|
-
##
|
|
483
|
+
## Know-How
|
|
484
484
|
|
|
485
|
-
${input.
|
|
485
|
+
${input.knowhow}
|
|
486
486
|
|
|
487
|
-
##
|
|
487
|
+
## Pitfalls
|
|
488
488
|
|
|
489
|
-
${input.
|
|
489
|
+
${input.pitfalls}
|
|
490
490
|
|
|
491
491
|
${input.skillsText}
|
|
492
492
|
|
package/dist/tools/team_mgmt.js
CHANGED
|
@@ -3093,10 +3093,10 @@ function renderTeamManual(language) {
|
|
|
3093
3093
|
'强烈建议显式设置 `member_defaults.provider` 与 `member_defaults.model`:如果省略,可能会使用实现内置的默认值(以当前实现为准),但可移植性/可复现性会变差,也更容易在环境变量未配置时把系统刷成板砖。',
|
|
3094
3094
|
'`default_responder` 虽然不是技术必填项,但实践上强烈建议显式设置:否则会退回到实现内置的响应者选择逻辑(例如按可见成员/内置成员兜底),容易造成跨环境或跨轮次行为漂移。',
|
|
3095
3095
|
'每次修改 `.minds/team.yaml` 必须运行 `team_mgmt_validate_team_cfg({})`;若输出里还有“已解决但未清理的问题”,继续前可用 `team_mgmt_clear_problems({ source: "team", path: "team.yaml" })` 收尾,避免运行时状态与 Problems 历史脱节。',
|
|
3096
|
-
'强烈建议为每个成员配置 `.minds/team/<id>/{persona,
|
|
3096
|
+
'强烈建议为每个成员配置 `.minds/team/<id>/{persona,knowhow,pitfalls}.*.md` 三类资产,用来明确角色职责、工作边界、正向知识沉淀与负向避坑教训;同一个 `<id>` 必须在 `team.yaml` 的 `members` 里出现,且在 `.minds/team/<id>/` 下存在对应的 mind 文件。',
|
|
3097
3097
|
'如果某成员承担团队管理职责(尤其获得 `team_mgmt`),其 `persona.*.md` 必须明确要求:执行任何团队管理操作前先查看 `man({ "toolsetId": "team_mgmt" })` 的相关章节,并按手册标准做法维护 `.minds/**` 下的团队心智资产(如 `team.yaml`、成员 mind 文件、skills、priming 等)。',
|
|
3098
|
-
'典型内容示例(可直接作为起点,按团队语境改写):\n- `.minds/team/coder/persona.zh.md`\n```markdown\n### 核心身份\n- 专业程序员,负责按规格完成代码开发。\n### 工作边界\n- 不负责需求分析或产品策略决策。\n- 只根据已确认的开发规格进行实现与重构。\n### 交付标准\n- 输出可运行代码,并附关键验证步骤。\n```\n- `.minds/team/coder/
|
|
3099
|
-
'团队机制默认范式是“长期 agent”(long-lived teammates):`members` 列表表示稳定存在、可随时被诉请的队友,并非“按需子角色/临时 sub-role”。这是产品机制,而非部署/运行偏好。\n如需切换当前由谁执行/扮演,用 CLI/TUI 的 `-m/--member <id>` 显式选择。\n`members.<id>.gofor` 是给其他队友/人类看的“正向诉请路由卡”(建议 5 行内):写什么时候应该找这个队友、适合把什么问题交给 TA、以及可以期待什么帮助/产出。\n`members.<id>.nogo` 是可选的“反向路由卡”:写哪些事项不要找这个队友、应改找哪类队友/路径。两者都只服务外部路由;不要把该成员自己的执行守则、工作模式、验收标准或完整职责文档堆在这里;这些应写入 `.minds/team/<id>/*` 或 `.minds/team/domains/*.md`。它们都支持三种形态:string(单句)、YAML list(普通 bullet)、YAML object(带标签的结构化摘要,object key 完全 freeform,value 必须是 string)。\n示例(gofor / nogo):\n```yaml\nmembers:\n qa_guard:\n name: QA Guard\n gofor:\n - 适合在发布前需要回归把关时找 TA\n - 适合让 TA 梳理高风险改动与手工核验点\n - 可以期待 TA 返回回归结论、风险清单与建议动作\n nogo:\n - 不要找 TA 做主实现或新功能开发\n - 若是产品文案/信息架构问题,应改找对应实现或设计角色\n```\n示例(gofor, object;按 YAML key 顺序渲染,key freeform):\n```yaml\nmembers:\n coordinator:\n name: 协调者\n gofor:\n When: 当你需要协调跨成员推进、拆分任务或收口结果时\n Ask: 让 TA 负责诉请路由、任务拆分与结果集成\n Returns: 可期待计划主线、委派方案与验收结论\n nogo:\n Avoid: 不要把具体实现、测试细节或文档落地直接塞给 TA\n RouteTo: 这些应改找对应专职队友\n Note: 若要写该成员自己的执行守则,请改写进 persona/
|
|
3098
|
+
'典型内容示例(可直接作为起点,按团队语境改写):\n- `.minds/team/coder/persona.zh.md`\n```markdown\n### 核心身份\n- 专业程序员,负责按规格完成代码开发。\n### 工作边界\n- 不负责需求分析或产品策略决策。\n- 只根据已确认的开发规格进行实现与重构。\n### 交付标准\n- 输出可运行代码,并附关键验证步骤。\n```\n- `.minds/team/coder/knowhow.zh.md`\n```markdown\n- 熟悉本仓库主要模块边界、构建命令与常用验证入口。\n- 优先沿调用链和数据流定位根因,再决定修改点。\n- 遇到接口、配置或契约变更时,要同步检查文档、类型和回归影响。\n```\n- `.minds/team/coder/pitfalls.zh.md`\n```markdown\n- 不要只在症状层打补丁;修改前先定位调用链与数据流。\n- 涉及权限/配置时,不要跳过对应校验工具;若只剩“已解决但未清理的问题”,再用 `team_mgmt_clear_problems(...)` 收尾。\n- 涉及高风险改动时,不要一口气铺开大改;先给最小可审查方案,再逐步扩展。\n- 涉及 agentic 能力规划或开发时,不要不自觉套用传统软件工程里“程序化完善 unhappy path 兜底”的思路。对有智能体在环的业务流程步骤,继续程序化追加 unhappy path 判断,默认应视为负面行为和设计退步,而不是加分项;它不同于仅软件在环的业务流程环节,很容易引入巨量技术债务,而且业务效果往往不理想。此时应优先安排截图视觉确认、语义把关等保留智能体在环特性的兜底路径。\n```\n迁移说明:rtws 成员文件现已优先读取 `knowhow/pitfalls`;只有在新文件名不存在时,才回退接受旧的 `knowledge/lessons`。一旦存在新文件名,就只注入新文件内容,旧文件内容会被忽略。builtin mind 只认 canonical 文件名,不读取旧别名。请尽快完成改名迁移;过渡期之后,未来版本将不再识别 `knowledge/lessons`。\n写法约束:`persona/knowhow/pitfalls` 文件里不要再写与系统提示模板重复的总标题。系统提示模板会自动添加:`## 角色设定` / `## 经验知识` / `## 避坑指南`(英文模板对应 `## Persona` / `## Know-How` / `## Pitfalls`)。',
|
|
3099
|
+
'团队机制默认范式是“长期 agent”(long-lived teammates):`members` 列表表示稳定存在、可随时被诉请的队友,并非“按需子角色/临时 sub-role”。这是产品机制,而非部署/运行偏好。\n如需切换当前由谁执行/扮演,用 CLI/TUI 的 `-m/--member <id>` 显式选择。\n`members.<id>.gofor` 是给其他队友/人类看的“正向诉请路由卡”(建议 5 行内):写什么时候应该找这个队友、适合把什么问题交给 TA、以及可以期待什么帮助/产出。\n`members.<id>.nogo` 是可选的“反向路由卡”:写哪些事项不要找这个队友、应改找哪类队友/路径。两者都只服务外部路由;不要把该成员自己的执行守则、工作模式、验收标准或完整职责文档堆在这里;这些应写入 `.minds/team/<id>/*` 或 `.minds/team/domains/*.md`。它们都支持三种形态:string(单句)、YAML list(普通 bullet)、YAML object(带标签的结构化摘要,object key 完全 freeform,value 必须是 string)。\n示例(gofor / nogo):\n```yaml\nmembers:\n qa_guard:\n name: QA Guard\n gofor:\n - 适合在发布前需要回归把关时找 TA\n - 适合让 TA 梳理高风险改动与手工核验点\n - 可以期待 TA 返回回归结论、风险清单与建议动作\n nogo:\n - 不要找 TA 做主实现或新功能开发\n - 若是产品文案/信息架构问题,应改找对应实现或设计角色\n```\n示例(gofor, object;按 YAML key 顺序渲染,key freeform):\n```yaml\nmembers:\n coordinator:\n name: 协调者\n gofor:\n When: 当你需要协调跨成员推进、拆分任务或收口结果时\n Ask: 让 TA 负责诉请路由、任务拆分与结果集成\n Returns: 可期待计划主线、委派方案与验收结论\n nogo:\n Avoid: 不要把具体实现、测试细节或文档落地直接塞给 TA\n RouteTo: 这些应改找对应专职队友\n Note: 若要写该成员自己的执行守则,请改写进 persona/knowhow/pitfalls\n```\n如果你把这类结构化内容写成 `- When: ...` / `- Ask: ...` 或 `- Avoid: ...` / `- RouteTo: ...` 的 YAML list,也仍然允许;但 `team_mgmt_validate_team_cfg({})` 会给 warning,建议改用 object,因为可读性更好。',
|
|
3100
3100
|
'如何为不同角色指定默认模型:用 `member_defaults.provider/model` 设全局默认;对特定成员在 `members.<id>.provider/model` 里覆盖即可。例如:默认用 `gpt-5.2`,代码编写域成员用 `gpt-5.2-codex`。',
|
|
3101
3101
|
'模型参数(例如 `reasoning_effort` / `verbosity` / `temperature`)应写在 `member_defaults.model_params.codex.*` 或 `members.<id>.model_params.codex.*` 下(对内置 `codex` provider)。不要把这些参数直接写在 `member_defaults`/`members.<id>` 根上。',
|
|
3102
3102
|
'若团队需要一个行为接近 stock Codex 的显在队友,可新增如 `members.codex` 这样的成员,保持 `provider: codex`,默认授予 `ws_read` / `ws_mod` / `codex_inspect_and_patch_tools`(除非人类明确要求其他组合),并把该成员 persona 直接写成清晰的角色边界、交付要求与团队规则。即使不是 `provider: codex`,只要目标模型属于 `gpt-5.x` 家族,也默认推荐把 `codex_inspect_and_patch_tools` 叠加在 `ws_read` / `ws_mod` 之上。',
|
|
@@ -3163,9 +3163,9 @@ function renderTeamManual(language) {
|
|
|
3163
3163
|
fmtList(common.concat([
|
|
3164
3164
|
'The team definition entrypoint is `.minds/team.yaml` (no `.minds/team.yml` alias today).',
|
|
3165
3165
|
'`default_responder` is not technically required, but strongly recommended in practice: without it, runtime falls back to implementation-defined responder selection (for example visible-member/built-in fallback), which can drift across environments/runs.',
|
|
3166
|
-
'Strongly recommended: for each member, configure `.minds/team/<id>/{persona,
|
|
3167
|
-
'Typical content examples (use as a starting point, then adapt to your team context):\n- `.minds/team/coder/persona.en.md`\n```markdown\n### Core Identity\n- Professional programmer responsible for implementing approved development specs.\n### Work Boundaries\n- Not responsible for requirement discovery or product strategy.\n- Implements/refactors only against confirmed specs.\n### Delivery Standard\n- Deliver runnable code plus key verification steps.\n```\n- `.minds/team/coder/
|
|
3168
|
-
'The team mechanism default is long-lived agents (long-lived teammates): `members` is a stable roster of callable teammates, not “on-demand sub-roles”. This is a product mechanism, not a deployment preference.\nTo pick who acts, use `-m/--member <id>` in CLI/TUI.\n`members.<id>.gofor` is a positive routing card for other teammates/humans (≤ 5 lines): write when someone should ask this teammate, what kinds of asks fit, and what help/output to expect.\n`members.<id>.nogo` is an optional negative routing card: write what should not be routed to this teammate and what kind of teammate/path should take it instead. Both fields are external routing metadata; do not dump the member’s own operating rules, work mode, acceptance bar, or full role spec here. Those belong in `.minds/team/<id>/*` or `.minds/team/domains/*.md`.\nBoth fields support three shapes: string (single sentence), YAML list (plain bullets), and YAML object (structured labeled summary; object keys are fully freeform and values must be strings).\nExample (`gofor` / `nogo`):\n```yaml\nmembers:\n qa_guard:\n name: QA Guard\n gofor:\n - Go to this teammate for pre-release regression gating\n - Ask this teammate to map high-risk changes and manual checks\n - Expect a regression verdict, risk list, and recommended next actions\n nogo:\n - Do not route net-new feature implementation here\n - For product copy or information architecture, ask the relevant implementer/designer instead\n```\nExample (object form; rendered in YAML key order, freeform keys):\n```yaml\nmembers:\n coordinator:\n name: Coordinator\n gofor:\n When: when you need cross-member coordination, task breakdown, or result convergence\n Ask: route requests, split work, and integrate outcomes\n Returns: an execution plan, delegation decisions, and acceptance conclusions\n nogo:\n Avoid: do not route concrete implementation, test-authoring, or doc-writing directly here\n RouteTo: send those asks to the relevant specialist teammate instead\n Note: put the member’s own operating rules in persona/
|
|
3166
|
+
'Strongly recommended: for each member, configure `.minds/team/<id>/{persona,knowhow,pitfalls}.*.md` assets to define role ownership, work boundaries, positive knowledge accumulation, and negative lessons/traps. The same `<id>` must exist in `members.<id>` in `team.yaml`.',
|
|
3167
|
+
'Typical content examples (use as a starting point, then adapt to your team context):\n- `.minds/team/coder/persona.en.md`\n```markdown\n### Core Identity\n- Professional programmer responsible for implementing approved development specs.\n### Work Boundaries\n- Not responsible for requirement discovery or product strategy.\n- Implements/refactors only against confirmed specs.\n### Delivery Standard\n- Deliver runnable code plus key verification steps.\n```\n- `.minds/team/coder/knowhow.en.md`\n```markdown\n- Knows the repo\'s main module boundaries, build commands, and common validation entry points.\n- Prefers tracing call chains and data flow to root cause before choosing an edit point.\n- When interfaces, config, or contracts change, also checks docs, types, and regression impact.\n```\n- `.minds/team/coder/pitfalls.en.md`\n```markdown\n- Do not patch only the symptom layer; trace the call chain and data flow first.\n- After changing permissions/config, do not skip the corresponding validators; if only "Resolved But Not Yet Cleared" remains, finish with `team_mgmt_clear_problems(...)`.\n- For high-risk changes, do not fan out into a big rewrite immediately; start with a minimal reviewable plan before expansion.\n- When planning or building agentic functionality, do not unconsciously import the traditional software-engineering instinct to \"complete\" unhappy paths with more programmatic fallback logic. For agent-in-the-loop business-process steps, adding more procedural unhappy-path branches should be treated as a negative behavior and a design regression by default, not as extra credit; unlike software-only-in-the-loop business-process steps, it often creates large technical debt while still producing weak business outcomes. Prefer screenshot-based visual confirmation, semantic review, or similar fallback paths that preserve the agent-in-the-loop nature of the step instead.\n```\nMigration note: rtws member files now prefer `knowhow/pitfalls`; they only fall back to legacy `knowledge/lessons` when the new filenames do not exist. Once a new filename exists, only the new file content is injected and the legacy file is ignored. Builtin minds only recognize canonical filenames and do not read legacy aliases. Please rename promptly; after the transition period, a future release will stop recognizing `knowledge/lessons`.\nAuthoring rule: do not add top-level titles that duplicate the system prompt wrapper. The system prompt already adds: `## Persona` / `## Know-How` / `## Pitfalls` (zh template: `## 角色设定` / `## 经验知识` / `## 避坑指南`).',
|
|
3168
|
+
'The team mechanism default is long-lived agents (long-lived teammates): `members` is a stable roster of callable teammates, not “on-demand sub-roles”. This is a product mechanism, not a deployment preference.\nTo pick who acts, use `-m/--member <id>` in CLI/TUI.\n`members.<id>.gofor` is a positive routing card for other teammates/humans (≤ 5 lines): write when someone should ask this teammate, what kinds of asks fit, and what help/output to expect.\n`members.<id>.nogo` is an optional negative routing card: write what should not be routed to this teammate and what kind of teammate/path should take it instead. Both fields are external routing metadata; do not dump the member’s own operating rules, work mode, acceptance bar, or full role spec here. Those belong in `.minds/team/<id>/*` or `.minds/team/domains/*.md`.\nBoth fields support three shapes: string (single sentence), YAML list (plain bullets), and YAML object (structured labeled summary; object keys are fully freeform and values must be strings).\nExample (`gofor` / `nogo`):\n```yaml\nmembers:\n qa_guard:\n name: QA Guard\n gofor:\n - Go to this teammate for pre-release regression gating\n - Ask this teammate to map high-risk changes and manual checks\n - Expect a regression verdict, risk list, and recommended next actions\n nogo:\n - Do not route net-new feature implementation here\n - For product copy or information architecture, ask the relevant implementer/designer instead\n```\nExample (object form; rendered in YAML key order, freeform keys):\n```yaml\nmembers:\n coordinator:\n name: Coordinator\n gofor:\n When: when you need cross-member coordination, task breakdown, or result convergence\n Ask: route requests, split work, and integrate outcomes\n Returns: an execution plan, delegation decisions, and acceptance conclusions\n nogo:\n Avoid: do not route concrete implementation, test-authoring, or doc-writing directly here\n RouteTo: send those asks to the relevant specialist teammate instead\n Note: put the member’s own operating rules in persona/knowhow/pitfalls instead\n```\nIf you write the same structured content as a YAML list like `- When: ...` / `- Ask: ...` or `- Avoid: ...` / `- RouteTo: ...`, it is still accepted, but `team_mgmt_validate_team_cfg({})` will warn and suggest YAML object form for readability.',
|
|
3169
3169
|
'Per-role default models: set global defaults via `member_defaults.provider/model`, then override `members.<id>.provider/model` per member (e.g. use `gpt-5.2` by default, and `gpt-5.2-codex` for code-writing members).',
|
|
3170
3170
|
'Model params (e.g. `reasoning_effort` / `verbosity` / `temperature`) must be nested under `member_defaults.model_params.codex.*` or `members.<id>.model_params.codex.*` (for the built-in `codex` provider). Do not put them directly under `member_defaults`/`members.<id>` root.',
|
|
3171
3171
|
'If you want a visible teammate that behaves close to stock Codex, a practical pattern is to add a member such as `members.codex`, keep `provider: codex`, grant the normal coding toolsets (`ws_read` / `ws_mod` / `codex_inspect_and_patch_tools` unless the human explicitly asks otherwise), and write that teammate persona as clear Dominds-native role boundaries, delivery rules, and team guidance. Even when the teammate does not use `provider: codex`, you should still recommend `codex_inspect_and_patch_tools` for `gpt-5.x` models as an extra inspect-and-patch layer on top of `ws_read` / `ws_mod`.',
|
|
@@ -3426,23 +3426,24 @@ function renderMindsManual(language) {
|
|
|
3426
3426
|
if (language === 'zh') {
|
|
3427
3427
|
return (fmtHeader('.minds/team/<id>/*') +
|
|
3428
3428
|
fmtList([
|
|
3429
|
-
'推荐实践(建议默认采用):每个 `members.<id>` 同时维护 `persona.*.md` / `
|
|
3430
|
-
'共同去向(按当前实现):这三类文件会在每次对话开始时按工作语言读取,并分别拼进 system prompt 的 `## 角色设定` / `##
|
|
3431
|
-
'最小要求:每个 `members.<id>` 建议至少提供 `persona.*.md`。当前实现中,缺失 persona 时会回退到内置默认 persona 文案;缺失或空白的
|
|
3429
|
+
'推荐实践(建议默认采用):每个 `members.<id>` 同时维护 `persona.*.md` / `knowhow.*.md` / `pitfalls.*.md`,把角色设定、正向知识/经验沉淀、负向教训/避坑规则分层管理。',
|
|
3430
|
+
'共同去向(按当前实现):这三类文件会在每次对话开始时按工作语言读取,并分别拼进 system prompt 的 `## 角色设定` / `## 经验知识` / `## 避坑指南` 章节;它们是写给“当前成员智能体自己”看的长期提示,不是给团队管理者/人类旁观者读的人物简介。',
|
|
3431
|
+
'最小要求:每个 `members.<id>` 建议至少提供 `persona.*.md`。当前实现中,缺失 persona 时会回退到内置默认 persona 文案;缺失或空白的 knowhow/pitfalls 会在系统提示中以本地化的“无”占位显示。',
|
|
3432
3432
|
'persona.*.md:角色设定(稳定的工作方式与职责)。它会进入该成员的 `role=system` 提示,因此默认应直接写给该智能体本人,使用第二人称“你”来规定职责、边界与工作方式;不要把它写成第三人称人物简介,更不要使用“祂”这类旁白口吻。',
|
|
3433
|
-
'
|
|
3434
|
-
'
|
|
3433
|
+
'knowhow.*.md:正向知识/经验沉淀。它会进入 `## 经验知识`,适合写“当前成员在该职责下反复要用到的稳定事实 / 索引 / 约定 / 判断依据 / 已验证有效的方法”;更偏向帮助该成员复用做对过的知识和 know-how,而不是罗列踩坑史。',
|
|
3434
|
+
'pitfalls.*.md:负向经验教训。它会进入 `## 避坑指南`,适合写“哪些坑不要再踩 / 哪些信号意味着风险 / 出现什么情况时先做什么、不要做什么”;更偏向避坑、防复发和失败模式约束,不要写成任务流水账、会议纪要或第三人称成长故事。',
|
|
3435
|
+
'迁移约束(当前实现):rtws 成员文件读取顺序为 `persona.zh.md -> persona.md`,`knowhow.zh.md -> knowhow.md -> knowledge.zh.md -> knowledge.md`,`pitfalls.zh.md -> pitfalls.md -> lessons.zh.md -> lessons.md`。也就是说,旧名 `knowledge/lessons` 只在新名不存在时才作为 fallback 接受;一旦新文件名存在,就只注入新文件内容。builtin mind 只认 canonical 文件名,不读取旧别名。请尽快迁移改名;过渡期之后,未来版本将不再识别 `knowledge/lessons`。',
|
|
3435
3436
|
'若该成员承担团队管理职责(尤其获得 `team_mgmt`),其 `persona.*.md` 必须明确写出:执行任何团队管理操作前先查看 `man({ "toolsetId": "team_mgmt" })` 的相关章节,并按手册标准做法维护 `.minds/**` 团队心智资产。',
|
|
3436
|
-
'语言选择(按当前实现):优先读取 `persona.zh.md` / `
|
|
3437
|
-
'标题层级约束:`persona/
|
|
3437
|
+
'语言选择(按当前实现):优先读取 `persona.zh.md` / `knowhow.zh.md` / `pitfalls.zh.md` 这类工作语言文件,再按各自 fallback 顺序回退到无语言后缀与旧名兼容文件;不会跨语言回退到另一种语言文件。',
|
|
3438
|
+
'标题层级约束:`persona/knowhow/pitfalls` 文件里不要再写重复的总标题。系统提示模板会自动添加:`## 角色设定` / `## 经验知识` / `## 避坑指南`(英文模板对应 `## Persona` / `## Know-How` / `## Pitfalls`)。因此正文通常应从 `###` 小节或普通 bullet 开始,而不是再写 `#` / `##`,也不要再把文件名或这些章节名重复当标题写一遍。',
|
|
3438
3439
|
]) +
|
|
3439
3440
|
fmtCodeBlock('text', [
|
|
3440
3441
|
'.minds/',
|
|
3441
3442
|
' team/',
|
|
3442
3443
|
' qa_guard/',
|
|
3443
3444
|
' persona.zh.md',
|
|
3444
|
-
'
|
|
3445
|
-
'
|
|
3445
|
+
' knowhow.zh.md',
|
|
3446
|
+
' pitfalls.zh.md',
|
|
3446
3447
|
]) +
|
|
3447
3448
|
fmtCodeBlock('markdown', [
|
|
3448
3449
|
'### 核心身份',
|
|
@@ -3454,30 +3455,37 @@ function renderMindsManual(language) {
|
|
|
3454
3455
|
'- 你要输出可运行代码,并附关键验证步骤。',
|
|
3455
3456
|
]) +
|
|
3456
3457
|
fmtCodeBlock('markdown', [
|
|
3457
|
-
'-
|
|
3458
|
-
'-
|
|
3459
|
-
'-
|
|
3458
|
+
'- 熟悉本仓库主要模块边界、构建命令与常用验证入口。',
|
|
3459
|
+
'- 优先沿调用链和数据流定位根因,再决定修改点。',
|
|
3460
|
+
'- 遇到接口、配置或契约变更时,要同步检查文档、类型和回归影响。',
|
|
3461
|
+
]) +
|
|
3462
|
+
fmtCodeBlock('markdown', [
|
|
3463
|
+
'- 不要只在症状层打补丁;修改前先定位调用链与数据流。',
|
|
3464
|
+
'- 涉及权限/配置时,不要跳过对应校验工具;若只剩“已解决但未清理的问题”,再用 `team_mgmt_clear_problems(...)` 收尾。',
|
|
3465
|
+
'- 涉及高风险改动时,不要一口气铺开大改;先给最小可审查方案,再逐步扩展。',
|
|
3466
|
+
'- 涉及 agentic 能力规划或开发时,不要不自觉套用传统软件工程里“程序化完善 unhappy path 兜底”的思路。对有智能体在环的业务流程步骤,继续程序化追加 unhappy path 判断,默认应视为负面行为和设计退步,而不是加分项;它不同于仅软件在环的业务流程环节,很容易引入巨量技术债务,而且业务效果往往不理想。此时应优先安排截图视觉确认、语义把关等保留智能体在环特性的兜底路径。',
|
|
3460
3467
|
]));
|
|
3461
3468
|
}
|
|
3462
3469
|
return (fmtHeader('.minds/team/<id>/*') +
|
|
3463
3470
|
fmtList([
|
|
3464
|
-
'Recommended default practice: for each `members.<id>`, maintain `persona.*.md` / `
|
|
3465
|
-
'Shared destination (current implementation): these three files are read at every dialog start and are spliced into the system prompt as `## Persona` / `##
|
|
3466
|
-
'Minimum: for each `members.<id>`, provide at least `persona.*.md`. In the current implementation, a missing persona falls back to built-in default persona text, while missing/blank
|
|
3471
|
+
'Recommended default practice: for each `members.<id>`, maintain `persona.*.md` / `knowhow.*.md` / `pitfalls.*.md` together so persona, positive knowledge accumulation, and negative lessons/traps stay layered and maintainable.',
|
|
3472
|
+
'Shared destination (current implementation): these three files are read at every dialog start and are spliced into the system prompt as `## Persona` / `## Know-How` / `## Pitfalls`. They are long-lived prompt assets written for the current member agent itself, not operator-facing biographies for a team manager or human observer.',
|
|
3473
|
+
'Minimum: for each `members.<id>`, provide at least `persona.*.md`. In the current implementation, a missing persona falls back to built-in default persona text, while missing/blank knowhow and pitfalls render as the localized “none” placeholder.',
|
|
3467
3474
|
'persona.*.md: persona and operating style. It is injected into that member\'s `role=system` prompt, so write it directly to the agent in second person ("you") when specifying responsibilities, boundaries, and working style; do not turn it into a third-person biography.',
|
|
3468
|
-
'
|
|
3469
|
-
'
|
|
3475
|
+
'knowhow.*.md: positive knowledge / proven know-how. It lands in `## Know-How`, so use it for stable facts, indexes, conventions, decision cues, and validated methods that the member repeatedly reuses in this responsibility. Second-person guidance or neutral reference bullets are both fine, as long as the text helps the member act now rather than describing the member from the outside.',
|
|
3476
|
+
'pitfalls.*.md: negative lessons / anti-traps. It lands in `## Pitfalls`, so prefer “what not to repeat” guidance such as risk signals, failure modes, and heuristics like “if signal X appears -> do / avoid Y -> because Z”. Do not treat it as a task log, meeting minutes, or a third-person growth narrative.',
|
|
3477
|
+
'Migration rule (current implementation): rtws member files read `persona.en.md -> persona.md`, `knowhow.en.md -> knowhow.md -> knowledge.en.md -> knowledge.md`, and `pitfalls.en.md -> pitfalls.md -> lessons.en.md -> lessons.md`. Legacy `knowledge/lessons` are fallback-only: once a new filename exists, only the new file content is injected. Builtin minds only recognize canonical filenames and do not read legacy aliases. Please rename promptly; after the transition period, a future release will stop recognizing `knowledge/lessons`.',
|
|
3470
3478
|
'If the member carries team-management responsibility (especially with `team_mgmt`), `persona.*.md` must explicitly require reading the relevant `man({ "toolsetId": "team_mgmt" })` chapters before any team-management action, and maintaining `.minds/**` team mind assets by handbook-standard workflow.',
|
|
3471
|
-
|
|
3472
|
-
'Heading rule: do not add top-level titles that duplicate the system prompt wrapper. The system prompt already adds: `## Persona` / `##
|
|
3479
|
+
"Language selection (current implementation): prefer work-language variants such as `persona.en.md` / `knowhow.en.md` / `pitfalls.en.md`, then follow each file kind's fallback order through default-name and legacy-name variants. There is no cross-language fallback to another language-specific file.",
|
|
3480
|
+
'Heading rule: do not add top-level titles that duplicate the system prompt wrapper. The system prompt already adds: `## Persona` / `## Know-How` / `## Pitfalls` (zh template: `## 角色设定` / `## 经验知识` / `## 避坑指南`). In practice, bodies should usually start at `###` subsections or plain bullets rather than another `#` / `##`, and should not restate the filename or wrapper title as a heading.',
|
|
3473
3481
|
]) +
|
|
3474
3482
|
fmtCodeBlock('text', [
|
|
3475
3483
|
'.minds/',
|
|
3476
3484
|
' team/',
|
|
3477
3485
|
' qa_guard/',
|
|
3478
3486
|
' persona.en.md',
|
|
3479
|
-
'
|
|
3480
|
-
'
|
|
3487
|
+
' knowhow.en.md',
|
|
3488
|
+
' pitfalls.en.md',
|
|
3481
3489
|
]) +
|
|
3482
3490
|
fmtCodeBlock('markdown', [
|
|
3483
3491
|
'### Core Identity',
|
|
@@ -3489,9 +3497,15 @@ function renderMindsManual(language) {
|
|
|
3489
3497
|
'- You deliver runnable code plus key verification steps.',
|
|
3490
3498
|
]) +
|
|
3491
3499
|
fmtCodeBlock('markdown', [
|
|
3492
|
-
|
|
3493
|
-
'-
|
|
3494
|
-
'-
|
|
3500
|
+
"- Know the repo's main module boundaries, build commands, and common validation entry points.",
|
|
3501
|
+
'- Prefer tracing call chains and data flow to root cause before choosing an edit point.',
|
|
3502
|
+
'- When interfaces, config, or contracts change, also check docs, types, and regression impact.',
|
|
3503
|
+
]) +
|
|
3504
|
+
fmtCodeBlock('markdown', [
|
|
3505
|
+
'- Do not patch only the symptom layer; trace the call chain and data flow first.',
|
|
3506
|
+
'- After changing permissions/config, do not skip the corresponding validators; if only "Resolved But Not Yet Cleared" remains, finish with `team_mgmt_clear_problems(...)`.',
|
|
3507
|
+
'- For high-risk changes, do not fan out into a big rewrite immediately; start with a minimal reviewable plan before expansion.',
|
|
3508
|
+
'- When planning or building agentic functionality, do not unconsciously import the traditional software-engineering instinct to "complete" unhappy paths with more programmatic fallback logic. For agent-in-the-loop business-process steps, adding more procedural unhappy-path branches should be treated as a negative behavior and a design regression by default, not as extra credit; unlike software-only-in-the-loop business-process steps, it often creates large technical debt while still producing weak business outcomes. Prefer screenshot-based visual confirmation, semantic review, or similar fallback paths that preserve the agent-in-the-loop nature of the step instead.',
|
|
3495
3509
|
]));
|
|
3496
3510
|
}
|
|
3497
3511
|
function renderSkillsManual(language) {
|
|
@@ -3539,7 +3553,7 @@ function renderSkillsManual(language) {
|
|
|
3539
3553
|
'`allowed-tools` → 仅保留为迁移提示。然后把真正需要的能力映射到 Dominds app/toolset 或 `.minds/team.yaml members.<id>.toolsets|tools`。不要把它当运行时授权。',
|
|
3540
3554
|
'`user-invocable` / `disable-model-invocation` → 目前仅保留为兼容元数据,Dominds 尚未把这两个字段做成调度开关。',
|
|
3541
3555
|
'Anthropic subagent 的 `tools` / `model` / 子代理身份字段 → 不应直接塞进 Dominds skill。可复用的“指导正文”抽出来做 skill;工具能力改走 Dominds app / toolset / 工具集手册;人设与职责边界改写到 `.minds/team/<id>/persona.*.md`。',
|
|
3542
|
-
'GitHub `copilot-instructions.md` / `*.instructions.md` / `AGENTS.md` / `.prompt.md` 这类“纯 markdown 指令文件” → 通常没有完整 skill frontmatter。迁移时要补写 `name` 与 `description`,再把正文整理成真正可复用的操作说明;如果它本质是仓库全局约束而不是技能,应优先放回 persona/
|
|
3556
|
+
'GitHub `copilot-instructions.md` / `*.instructions.md` / `AGENTS.md` / `.prompt.md` 这类“纯 markdown 指令文件” → 通常没有完整 skill frontmatter。迁移时要补写 `name` 与 `description`,再把正文整理成真正可复用的操作说明;如果它本质是仓库全局约束而不是技能,应优先放回 persona/knowhow/pitfalls/env/AGENTS,而不是硬转 skill。',
|
|
3543
3557
|
]) +
|
|
3544
3558
|
fmtHeader('团队管理智能体的落地操作步骤') +
|
|
3545
3559
|
fmtList([
|
|
@@ -3557,7 +3571,7 @@ function renderSkillsManual(language) {
|
|
|
3557
3571
|
'“只有 `name/description/body` 的标准 SKILL” → 最容易迁移,优先原样改写后落盘。',
|
|
3558
3572
|
'“带 `allowed-tools` 但无脚本” → 可先作为纯提示 skill 引入,再人工配置 Dominds toolsets。',
|
|
3559
3573
|
'“带脚本 / Bash allowlist / MCP / 动态注入命令” → 默认走 Dominds app 封装路径,不要只复制 markdown。',
|
|
3560
|
-
'“其实是全局仓库约束” → 更可能属于 persona /
|
|
3574
|
+
'“其实是全局仓库约束” → 更可能属于 persona / knowhow / pitfalls / env / AGENTS,不一定应该做成 skill。',
|
|
3561
3575
|
]));
|
|
3562
3576
|
}
|
|
3563
3577
|
return (fmtHeader('.minds/skills/* (skills)') +
|
|
@@ -3604,7 +3618,7 @@ function renderSkillsManual(language) {
|
|
|
3604
3618
|
'`allowed-tools` -> informational only in Dominds. Map actual capability needs into a Dominds app/toolset and/or `.minds/team.yaml members.<id>.toolsets|tools`.',
|
|
3605
3619
|
'`user-invocable` / `disable-model-invocation` -> preserved only as compatibility metadata for now; Dominds does not yet use them as dispatch switches.',
|
|
3606
3620
|
'Anthropic subagent fields such as `tools`, `model`, or subagent identity -> do not import directly into a Dominds skill. Extract the reusable guidance body into a skill; move tool capability into a Dominds app/toolset/toolset manual; move persona/responsibility boundaries into `.minds/team/<id>/persona.*.md`.',
|
|
3607
|
-
'GitHub `copilot-instructions.md`, `*.instructions.md`, `AGENTS.md`, and `.prompt.md` files are usually plain Markdown instructions, not complete skills. When converting them, add `name` and `description`, then turn the body into reusable operating guidance. If the content is actually repo-wide policy rather than a skill, keep it in persona/
|
|
3621
|
+
'GitHub `copilot-instructions.md`, `*.instructions.md`, `AGENTS.md`, and `.prompt.md` files are usually plain Markdown instructions, not complete skills. When converting them, add `name` and `description`, then turn the body into reusable operating guidance. If the content is actually repo-wide policy rather than a skill, keep it in persona/knowhow/pitfalls/env/AGENTS instead of forcing it into `skills`.',
|
|
3608
3622
|
]) +
|
|
3609
3623
|
fmtHeader('Operational Steps for a Team-Management Agent') +
|
|
3610
3624
|
fmtList([
|
|
@@ -3622,7 +3636,7 @@ function renderSkillsManual(language) {
|
|
|
3622
3636
|
'“Standard SKILL with `name/description/body` only” -> easiest path; usually port directly with light rewriting.',
|
|
3623
3637
|
'“Has `allowed-tools` but no scripts” -> may enter as a pure prompt skill first, then map real Dominds toolsets manually.',
|
|
3624
3638
|
'“Has scripts / Bash allowlists / MCP / dynamic command injection” -> default to the Dominds app packaging path; do not just copy the Markdown.',
|
|
3625
|
-
'“Actually repo-global policy” -> more likely belongs in persona /
|
|
3639
|
+
'“Actually repo-global policy” -> more likely belongs in persona / knowhow / pitfalls / env / AGENTS than in a skill.',
|
|
3626
3640
|
]));
|
|
3627
3641
|
}
|
|
3628
3642
|
function renderPrimingManual(language) {
|
|
@@ -5269,7 +5283,7 @@ async function renderTeamMgmtGuideContent(language, topicsRaw = []) {
|
|
|
5269
5283
|
'新手最常见流程:先 `team_mgmt_list_providers({})` / `team_mgmt_list_models({ provider_pattern: "*", model_pattern: "*" })` 确认 provider/model keys → 再写 `.minds/team.yaml` → 再写 `.minds/team/<id>/persona.*.md` → 再跑 `team_mgmt_check_provider({ provider_key: "<providerKey>", model: "", all_models: false, live: false })`。',
|
|
5270
5284
|
'',
|
|
5271
5285
|
`\`man({ "toolsetId": "team_mgmt", "topics": ["team"] })\`:${topicTitle('team')} — .minds/team.yaml(团队花名册、工具集、目录权限入口)`,
|
|
5272
|
-
`\`man({ "toolsetId": "team_mgmt", "topics": ["minds"] })\`:${topicTitle('minds')} — .minds/team/<id>/*(persona/
|
|
5286
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["minds"] })\`:${topicTitle('minds')} — .minds/team/<id>/*(persona/knowhow/pitfalls 资产怎么写)`,
|
|
5273
5287
|
`\`man({ "toolsetId": "team_mgmt", "topics": ["skills"] })\`:${topicTitle('skills')} — .minds/skills/*(公开 skill 格式迁移、字段映射、app 化边界)`,
|
|
5274
5288
|
`\`man({ "toolsetId": "team_mgmt", "topics": ["priming"] })\`:${topicTitle('priming')} — .minds/priming/*(启动脚本如何编写、维护与复用)`,
|
|
5275
5289
|
'`启动脚本修改后建议立即运行:`team_mgmt_validate_priming_scripts({})`',
|
|
@@ -5292,7 +5306,7 @@ async function renderTeamMgmtGuideContent(language, topicsRaw = []) {
|
|
|
5292
5306
|
'Common starter flow: run `team_mgmt_list_providers({})` / `team_mgmt_list_models({ provider_pattern: \"*\", model_pattern: \"*\" })` to confirm provider/model keys → write `.minds/team.yaml` → write `.minds/team/<id>/persona.*.md` → run `team_mgmt_check_provider({ provider_key: "<providerKey>", model: "", all_models: false, live: false })`. ',
|
|
5293
5307
|
'',
|
|
5294
5308
|
`\`man({ "toolsetId": "team_mgmt", "topics": ["team"] })\`: ${topicTitle('team')} — .minds/team.yaml (roster/toolsets/permissions entrypoint)`,
|
|
5295
|
-
`\`man({ "toolsetId": "team_mgmt", "topics": ["minds"] })\`: ${topicTitle('minds')} — .minds/team/<id>/* (persona/
|
|
5309
|
+
`\`man({ "toolsetId": "team_mgmt", "topics": ["minds"] })\`: ${topicTitle('minds')} — .minds/team/<id>/* (persona/knowhow/pitfalls assets)`,
|
|
5296
5310
|
`\`man({ "toolsetId": "team_mgmt", "topics": ["skills"] })\`: ${topicTitle('skills')} — .minds/skills/* (public skill migration, field mapping, app boundary)`,
|
|
5297
5311
|
`\`man({ "toolsetId": "team_mgmt", "topics": ["priming"] })\`: ${topicTitle('priming')} — .minds/priming/* (how to author, maintain, and reuse startup scripts)`,
|
|
5298
5312
|
'After editing startup scripts, run: `team_mgmt_validate_priming_scripts({})`.',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dominds",
|
|
3
|
-
"version": "1.17.
|
|
3
|
+
"version": "1.17.2",
|
|
4
4
|
"description": "Dominds CLI and aggregation shell for the LongRun AI kernel/runtime packages.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"publishConfig": {
|
|
@@ -52,9 +52,9 @@
|
|
|
52
52
|
"ws": "^8.19.0",
|
|
53
53
|
"yaml": "^2.8.2",
|
|
54
54
|
"zod": "^4.3.6",
|
|
55
|
+
"@longrun-ai/kernel": "1.8.15",
|
|
55
56
|
"@longrun-ai/shell": "1.8.15",
|
|
56
|
-
"@longrun-ai/codex-auth": "0.12.1"
|
|
57
|
-
"@longrun-ai/kernel": "1.8.15"
|
|
57
|
+
"@longrun-ai/codex-auth": "0.12.1"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@types/node": "^25.3.5",
|
|
@@ -1,5 +1,5 @@
|
|
|
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-
|
|
2
|
-
import { aU as isObject, aC as baseRest, aV as isIterateeCall, aW as keysIn, aX as eq, aY as isArrayLike, aZ as isArray, a_ as identity, a$ as isIndex, b0 as assignValue } from "./index-
|
|
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-BHtz-XvO.js";
|
|
2
|
+
import { aU as isObject, aC as baseRest, aV as isIterateeCall, aW as keysIn, aX as eq, aY as isArrayLike, aZ as isArray, a_ as identity, a$ as isIndex, b0 as assignValue } from "./index-BV_dDe3L.js";
|
|
3
3
|
var reWhitespace = /\s/;
|
|
4
4
|
function trimmedEndIndex(string) {
|
|
5
5
|
var index = string.length;
|
|
@@ -193,4 +193,4 @@ export {
|
|
|
193
193
|
map as m,
|
|
194
194
|
toFinite as t
|
|
195
195
|
};
|
|
196
|
-
//# sourceMappingURL=_basePickBy-
|
|
196
|
+
//# sourceMappingURL=_basePickBy-EK9iGcOl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_basePickBy-DCLDUO6G.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]}
|
|
1
|
+
{"version":3,"file":"_basePickBy-EK9iGcOl.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]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { bh as isObjectLike, bi as baseGetTag, aZ as isArray, bj as Symbol$1, aY as isArrayLike, bk as arrayLikeKeys, bl as baseKeys, bm as memoize, bn as isArguments, bo as copyObject, aW as keysIn, bp as getPrototype, bq as cloneArrayBuffer, br as cloneTypedArray, bs as getTag, bf as baseUnary, bt as nodeUtil, aU as isObject, bu as copyArray, bv as isBuffer, bw as cloneBuffer, bx as initCloneObject, by as Stack, b0 as assignValue, bz as MapCache, aX as eq, bA as Uint8Array, bB as isTypedArray, bC as isLength, a$ as isIndex, a_ as identity, bd as baseFor, bD as Set } from "./index-
|
|
1
|
+
import { bh as isObjectLike, bi as baseGetTag, aZ as isArray, bj as Symbol$1, aY as isArrayLike, bk as arrayLikeKeys, bl as baseKeys, bm as memoize, bn as isArguments, bo as copyObject, aW as keysIn, bp as getPrototype, bq as cloneArrayBuffer, br as cloneTypedArray, bs as getTag, bf as baseUnary, bt as nodeUtil, aU as isObject, bu as copyArray, bv as isBuffer, bw as cloneBuffer, bx as initCloneObject, by as Stack, b0 as assignValue, bz as MapCache, aX as eq, bA as Uint8Array, bB as isTypedArray, bC as isLength, a$ as isIndex, a_ as identity, bd as baseFor, bD as Set } from "./index-BV_dDe3L.js";
|
|
2
2
|
var symbolTag$3 = "[object Symbol]";
|
|
3
3
|
function isSymbol(value) {
|
|
4
4
|
return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag$3;
|
|
@@ -833,4 +833,4 @@ export {
|
|
|
833
833
|
baseIndexOf as y,
|
|
834
834
|
getAllKeysIn as z
|
|
835
835
|
};
|
|
836
|
-
//# sourceMappingURL=_baseUniq-
|
|
836
|
+
//# sourceMappingURL=_baseUniq-BHtz-XvO.js.map
|