@wirecat/cli-memo 0.131.70 → 0.131.71
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 +3 -3
- package/THIRD_PARTY_NOTICES +2 -0
- package/dist/actions/actions.d.ts +2 -1
- package/dist/actions/actions.d.ts.map +1 -1
- package/dist/actions/actions.js +5 -3
- package/dist/actions/actions.js.map +1 -1
- package/dist/actions/command.d.ts.map +1 -1
- package/dist/actions/command.js +15 -6
- package/dist/actions/command.js.map +1 -1
- package/dist/answer.d.ts +1 -0
- package/dist/answer.d.ts.map +1 -1
- package/dist/answer.js +2 -1
- package/dist/answer.js.map +1 -1
- package/dist/bin/memo.js +2 -2
- package/dist/bin/memo.js.map +1 -1
- package/dist/bundle/{all-profiles-6JKSPBBO.js → all-profiles-G6S5HOBT.js} +5 -5
- package/dist/bundle/{anthropic-YA2N6EJ4.js → anthropic-LA6PXTPQ.js} +2 -2
- package/dist/bundle/{app-server-UP3AL2XQ.js → app-server-W622CBPF.js} +35 -35
- package/dist/bundle/auto-WUU2MYGS.js +85 -0
- package/dist/bundle/{bun-OUFOAYV4.js → bun-PZNVNH4G.js} +2 -2
- package/dist/bundle/{bun-sqlite-5RZTFU2Q.js → bun-sqlite-VICDK5FS.js} +2 -2
- package/dist/bundle/{chunk-3TFK7RBA.js → chunk-2LTQ6ZBS.js} +23908 -22107
- package/dist/bundle/{chunk-IHHXGTMX.js → chunk-3LS76TFB.js} +1 -1
- package/dist/bundle/{chunk-IJAILIZR.js → chunk-3PIKTX3U.js} +18 -18
- package/dist/bundle/{chunk-N73YBQ42.js → chunk-3ZSPTUG3.js} +9 -7
- package/dist/bundle/{chunk-RHW3DDWI.js → chunk-6B3GQMR6.js} +1 -1
- package/dist/bundle/{chunk-LYAJUZM4.js → chunk-6EIWRE6E.js} +30 -30
- package/dist/bundle/{chunk-EDPA54WQ.js → chunk-6Z62U7NY.js} +3 -3
- package/dist/bundle/{chunk-JMGQATR6.js → chunk-ASDOPGKC.js} +2 -2
- package/dist/bundle/{chunk-3OEV7GNU.js → chunk-BE22RDTR.js} +4 -4
- package/dist/bundle/{chunk-FZHYGJQ2.js → chunk-CLQXHFKG.js} +5 -5
- package/dist/bundle/{chunk-VPKJZKXV.js → chunk-CPUQC7UF.js} +1 -1
- package/dist/bundle/{chunk-GGFL64HF.js → chunk-CZUAGRL7.js} +13168 -11987
- package/dist/bundle/{chunk-GVP6CAPH.js → chunk-DW6CDBXA.js} +33 -586
- package/dist/bundle/{chunk-7OXLZZ27.js → chunk-DXWDHC2K.js} +14 -2
- package/dist/bundle/{chunk-5OMM4CDT.js → chunk-ESYCZ575.js} +2 -2
- package/dist/bundle/{chunk-OBQ7TSUB.js → chunk-FHIGY5K6.js} +1 -1
- package/dist/bundle/{chunk-MK6SQ32Q.js → chunk-FPWF2XLH.js} +12 -12
- package/dist/bundle/{chunk-MYLNRBDF.js → chunk-FVJSDDSV.js} +46 -13
- package/dist/bundle/{chunk-TV75OHKJ.js → chunk-G3FQTKHT.js} +7 -7
- package/dist/bundle/{chunk-WNA2WNDK.js → chunk-G7XOBQB5.js} +3 -3
- package/dist/bundle/{chunk-PSYQPO6D.js → chunk-H3LAORYX.js} +2 -2
- package/dist/bundle/{chunk-2DQYP2K3.js → chunk-HIHZNBR7.js} +1 -1
- package/dist/bundle/{chunk-QAXIZHK7.js → chunk-HNQGX4AG.js} +33 -33
- package/dist/bundle/{chunk-22CDLXSR.js → chunk-I4HWKPQR.js} +4 -4
- package/dist/bundle/{chunk-2NFI7SDW.js → chunk-INQAQ55X.js} +2304 -1111
- package/dist/bundle/{chunk-XTEJXJJ3.js → chunk-IP5CA3CW.js} +10 -10
- package/dist/bundle/{chunk-EO4JMJFZ.js → chunk-IXZWUHSG.js} +7 -7
- package/dist/bundle/{chunk-MWQI6FSU.js → chunk-K55WZ67L.js} +3 -3
- package/dist/bundle/{chunk-YTJWIJIG.js → chunk-KH43CUE2.js} +5 -5
- package/dist/bundle/{chunk-2C7Z7CKD.js → chunk-LIF2HXIQ.js} +1 -1
- package/dist/bundle/{chunk-GVEY6743.js → chunk-LRS5X7G3.js} +9 -9
- package/dist/bundle/{chunk-3LGLKLBA.js → chunk-M2DAITNE.js} +2 -2
- package/dist/bundle/{chunk-OAO5UCPJ.js → chunk-MAGAWAPG.js} +1366 -1574
- package/dist/bundle/{chunk-7JFLHRQL.js → chunk-MKOQDN3I.js} +1 -1
- package/dist/bundle/{chunk-67VEVKMJ.js → chunk-MSTWHRLN.js} +1 -1
- package/dist/bundle/{chunk-YXXAPVAZ.js → chunk-NLRPCKUS.js} +8 -8
- package/dist/bundle/{chunk-EQKS6M52.js → chunk-NNUS57F4.js} +5 -5
- package/dist/bundle/{chunk-52F4LHCH.js → chunk-OHBP2KPQ.js} +4 -4
- package/dist/bundle/{chunk-YBTUFOQG.js → chunk-OWFC6BAF.js} +5 -5
- package/dist/bundle/{chunk-267N22E4.js → chunk-PGOMGFXA.js} +1 -1
- package/dist/bundle/{chunk-4HSWIXYE.js → chunk-PHL53ERQ.js} +4 -4
- package/dist/bundle/{chunk-5EHUHZU5.js → chunk-QNJ4EKKW.js} +80 -68
- package/dist/bundle/{chunk-53EAI4VZ.js → chunk-QUPPO7DB.js} +1 -1
- package/dist/bundle/{chunk-276KPJI5.js → chunk-RF6KPQWV.js} +2 -2
- package/dist/bundle/{chunk-TXOXPQN2.js → chunk-SL2LXOCN.js} +2 -2
- package/dist/bundle/{chunk-QZU5IM5E.js → chunk-SR7C53CS.js} +2 -2
- package/dist/bundle/{chunk-ECHN36DC.js → chunk-STJWETNW.js} +4 -4
- package/dist/bundle/{chunk-BGWPKEKK.js → chunk-SVVSGUMU.js} +4 -4
- package/dist/bundle/{chunk-FQ54GW57.js → chunk-TG3XWDFI.js} +8360 -8360
- package/dist/bundle/{chunk-V2YS63Z5.js → chunk-U3P5F57B.js} +1 -1
- package/dist/bundle/{chunk-PHSYMVYX.js → chunk-UCRR7R6Q.js} +2 -2
- package/dist/bundle/{chunk-2F35N6BI.js → chunk-UX52EWLQ.js} +1 -1
- package/dist/bundle/{chunk-OHA7HDPX.js → chunk-V6BJM3XW.js} +1024 -676
- package/dist/bundle/{chunk-57SQU2YO.js → chunk-X337K4BD.js} +10 -6
- package/dist/bundle/{chunk-UEMI6FXR.js → chunk-XNX3U6GD.js} +6 -6
- package/dist/bundle/{chunk-7L4PBN5S.js → chunk-ZM6J47GY.js} +2 -2
- package/dist/bundle/{command-contract-OGW2DX4C.js → command-contract-7QECBB6M.js} +11 -11
- package/dist/bundle/{decode-IJMDTGTW.js → decode-WRWXOJML.js} +2 -2
- package/dist/bundle/{echarts-EHYUXOKP.js → echarts-MTCNTCST.js} +2 -2
- package/dist/bundle/{embed-RUY3UIVC.js → embed-PPPCHSTE.js} +3 -3
- package/dist/bundle/{embedder-P6WBMEGP.js → embedder-UJBIX6A2.js} +6 -6
- package/dist/bundle/{entry-7S2ONYSF.js → entry-4P5556KI.js} +4 -4
- package/dist/bundle/failure-3F3YHF7G.js +65 -0
- package/dist/bundle/{first-run-MLIFZSVH.js → first-run-EKRDZLLY.js} +5 -5
- package/dist/bundle/{first-screen-DGTTK6VK.js → first-screen-FRRTKWFB.js} +12 -12
- package/dist/bundle/{instructions-ZMG4FLGO.js → instructions-JKIO4JF7.js} +1 -1
- package/dist/bundle/{mcp-CFIL7WZU.js → mcp-FQPK2KAF.js} +35 -35
- package/dist/bundle/memo.js +14 -11
- package/dist/bundle/{node-QYL4B7JS.js → node-3AIXDDDR.js} +2 -2
- package/dist/bundle/{node-sqlite-ESTT2OCF.js → node-sqlite-NX722DXD.js} +3 -3
- package/dist/bundle/{oauth-CFQFSIRQ.js → oauth-2NPSI7Q3.js} +4 -4
- package/dist/bundle/{open-3XO2HMIT.js → open-AFRN6Q36.js} +2 -2
- package/dist/bundle/{openai-STUNDBD6.js → openai-U5CQFLRU.js} +7 -7
- package/dist/bundle/{process-P4UAJCZX.js → process-J2IBN6X7.js} +1 -1
- package/dist/bundle/{program-RSUVU6HA.js → program-L5IM35PO.js} +1231 -449
- package/dist/bundle/{prompt-ZCYMFMIG.js → prompt-6XNKR4VQ.js} +2 -2
- package/dist/bundle/{recognize-V3BY33FK.js → recognize-G3GI32QS.js} +1 -1
- package/dist/bundle/{remote-IP4QR7SP.js → remote-DJO255PT.js} +4 -4
- package/dist/bundle/{rerank-VKUSF3DM.js → rerank-5SBZRIHF.js} +4 -4
- package/dist/bundle/{serve-VBIUARHJ.js → serve-BZVBKGU3.js} +6 -6
- package/dist/bundle/server-GCESLOOF.js +48 -0
- package/dist/bundle/server-JUSMYLIQ.js +61 -0
- package/dist/bundle/{server-BVRPQPGY.js → server-LWQAHDBH.js} +55 -52
- package/dist/bundle/{state-UBAIZ2WP.js → state-A57F7T5D.js} +3 -3
- package/dist/bundle/{store-VQQVUA4W.js → store-WG2GYWTG.js} +9 -9
- package/dist/bundle/store-maintenance-command-GTY6VU76.js +47 -0
- package/dist/bundle/update-LICMP7UR.js +68 -0
- package/dist/context/command.d.ts +2 -1
- package/dist/context/command.d.ts.map +1 -1
- package/dist/context/command.js +34 -12
- package/dist/context/command.js.map +1 -1
- package/dist/context/context.d.ts +20 -8
- package/dist/context/context.d.ts.map +1 -1
- package/dist/context/context.js +65 -40
- package/dist/context/context.js.map +1 -1
- package/dist/contract-overrides/search.js +1 -1
- package/dist/contract-overrides/search.js.map +1 -1
- package/dist/digest/digest.d.ts.map +1 -1
- package/dist/digest/digest.js +2 -1
- package/dist/digest/digest.js.map +1 -1
- package/dist/discovery/command.d.ts.map +1 -1
- package/dist/discovery/command.js +2 -0
- package/dist/discovery/command.js.map +1 -1
- package/dist/doctor/command.d.ts +22 -2
- package/dist/doctor/command.d.ts.map +1 -1
- package/dist/examples.d.ts.map +1 -1
- package/dist/examples.js +44 -10
- package/dist/examples.js.map +1 -1
- package/dist/facts/command.d.ts.map +1 -1
- package/dist/facts/command.js +7 -6
- package/dist/facts/command.js.map +1 -1
- package/dist/finance/deal-text.d.ts +4 -0
- package/dist/finance/deal-text.d.ts.map +1 -0
- package/dist/finance/deal-text.js +34 -0
- package/dist/finance/deal-text.js.map +1 -0
- package/dist/finance/deals-command.d.ts +1 -1
- package/dist/finance/deals-command.d.ts.map +1 -1
- package/dist/finance/deals-command.js +113 -13
- package/dist/finance/deals-command.js.map +1 -1
- package/dist/knowledge/business-text.d.ts +7 -0
- package/dist/knowledge/business-text.d.ts.map +1 -0
- package/dist/knowledge/business-text.js +19 -0
- package/dist/knowledge/business-text.js.map +1 -0
- package/dist/knowledge/command.d.ts +1 -1
- package/dist/knowledge/command.d.ts.map +1 -1
- package/dist/knowledge/command.js +131 -42
- package/dist/knowledge/command.js.map +1 -1
- package/dist/knowledge/money-text.d.ts +4 -0
- package/dist/knowledge/money-text.d.ts.map +1 -0
- package/dist/knowledge/money-text.js +16 -0
- package/dist/knowledge/money-text.js.map +1 -0
- package/dist/knowledge/organization-text.d.ts +7 -0
- package/dist/knowledge/organization-text.d.ts.map +1 -0
- package/dist/knowledge/organization-text.js +24 -0
- package/dist/knowledge/organization-text.js.map +1 -0
- package/dist/knowledge/project-actions-command.js +1 -1
- package/dist/knowledge/project-actions-command.js.map +1 -1
- package/dist/knowledge/project-actions.d.ts +1 -1
- package/dist/knowledge/project-actions.d.ts.map +1 -1
- package/dist/knowledge/project-actions.js +2 -2
- package/dist/knowledge/project-actions.js.map +1 -1
- package/dist/knowledge/project-context.d.ts +27 -1
- package/dist/knowledge/project-context.d.ts.map +1 -1
- package/dist/knowledge/project-context.js +9 -5
- package/dist/knowledge/project-context.js.map +1 -1
- package/dist/knowledge/project-status-command.d.ts.map +1 -1
- package/dist/knowledge/project-status-command.js +21 -5
- package/dist/knowledge/project-status-command.js.map +1 -1
- package/dist/knowledge/relationships.d.ts +27 -23
- package/dist/knowledge/relationships.d.ts.map +1 -1
- package/dist/knowledge/relationships.js +65 -52
- package/dist/knowledge/relationships.js.map +1 -1
- package/dist/knowledge/roles-command.d.ts +8 -0
- package/dist/knowledge/roles-command.d.ts.map +1 -0
- package/dist/knowledge/roles-command.js +65 -0
- package/dist/knowledge/roles-command.js.map +1 -0
- package/dist/mcp/catalogue.d.ts +1 -1
- package/dist/mcp/catalogue.d.ts.map +1 -1
- package/dist/mcp/catalogue.js +3 -1
- package/dist/mcp/catalogue.js.map +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/memories/command.d.ts.map +1 -1
- package/dist/memories/command.js +6 -5
- package/dist/memories/command.js.map +1 -1
- package/dist/memories/sources.js +2 -2
- package/dist/memories/sources.js.map +1 -1
- package/dist/models/command.d.ts +1 -1
- package/dist/models/command.d.ts.map +1 -1
- package/dist/models/command.js +2 -1
- package/dist/models/command.js.map +1 -1
- package/dist/notes/command.d.ts.map +1 -1
- package/dist/notes/command.js +13 -8
- package/dist/notes/command.js.map +1 -1
- package/dist/notes/embed.d.ts +6 -1
- package/dist/notes/embed.d.ts.map +1 -1
- package/dist/notes/embed.js +17 -8
- package/dist/notes/embed.js.map +1 -1
- package/dist/people/command.d.ts.map +1 -1
- package/dist/people/command.js +2 -1
- package/dist/people/command.js.map +1 -1
- package/dist/program.d.ts +13 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +158 -4
- package/dist/program.js.map +1 -1
- package/dist/reasons.d.ts.map +1 -1
- package/dist/reasons.js +12 -0
- package/dist/reasons.js.map +1 -1
- package/dist/review/command.js +2 -2
- package/dist/review/command.js.map +1 -1
- package/dist/review/review.d.ts +3 -3
- package/dist/review/review.d.ts.map +1 -1
- package/dist/review/review.js +6 -6
- package/dist/review/review.js.map +1 -1
- package/dist/review/status.d.ts.map +1 -1
- package/dist/review/status.js +5 -4
- package/dist/review/status.js.map +1 -1
- package/dist/run/import.d.ts +2 -2
- package/dist/run/import.d.ts.map +1 -1
- package/dist/run/import.js +9 -3
- package/dist/run/import.js.map +1 -1
- package/dist/search/command.d.ts.map +1 -1
- package/dist/search/command.js +21 -3
- package/dist/search/command.js.map +1 -1
- package/dist/search/denied.d.ts +10 -0
- package/dist/search/denied.d.ts.map +1 -0
- package/dist/search/denied.js +10 -0
- package/dist/search/denied.js.map +1 -0
- package/dist/search/people.d.ts.map +1 -1
- package/dist/search/people.js +11 -1
- package/dist/search/people.js.map +1 -1
- package/dist/search/search.d.ts +2 -0
- package/dist/search/search.d.ts.map +1 -1
- package/dist/search/search.js +37 -12
- package/dist/search/search.js.map +1 -1
- package/dist/store/group.d.ts +38 -0
- package/dist/store/group.d.ts.map +1 -0
- package/dist/store/group.js +112 -0
- package/dist/store/group.js.map +1 -0
- package/dist/store/groups-command.d.ts +10 -0
- package/dist/store/groups-command.d.ts.map +1 -0
- package/dist/store/groups-command.js +88 -0
- package/dist/store/groups-command.js.map +1 -0
- package/dist/store/guard.d.ts +29 -0
- package/dist/store/guard.d.ts.map +1 -0
- package/dist/store/guard.js +94 -0
- package/dist/store/guard.js.map +1 -0
- package/dist/store/scope.d.ts +3 -3
- package/dist/store/scope.d.ts.map +1 -1
- package/dist/store/scope.js +7 -6
- package/dist/store/scope.js.map +1 -1
- package/dist/store/source-list.d.ts +5 -1
- package/dist/store/source-list.d.ts.map +1 -1
- package/dist/store/source-list.js +30 -15
- package/dist/store/source-list.js.map +1 -1
- package/dist/tags/command.d.ts.map +1 -1
- package/dist/tags/command.js +3 -2
- package/dist/tags/command.js.map +1 -1
- package/dist/tasks/shared.d.ts.map +1 -1
- package/dist/tasks/shared.js +2 -1
- package/dist/tasks/shared.js.map +1 -1
- package/dist/tasks/tasks.js +3 -3
- package/dist/tasks/tasks.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -3
- package/skills/cli-memo/SKILL.md +7 -7
- package/skills/cli-memo/topics/mcp.md +9 -0
- package/skills/cli-memo/topics/money.md +14 -1
- package/skills/cli-memo/topics/projects.md +2 -1
- package/skills/cli-memo/topics/search.md +12 -4
- package/dist/bundle/auto-CVILDIC6.js +0 -85
- package/dist/bundle/failure-HM55W3NH.js +0 -65
- package/dist/bundle/server-AASCSGCI.js +0 -61
- package/dist/bundle/server-YQLPZK4Z.js +0 -48
- package/dist/bundle/store-maintenance-command-GCBABKEZ.js +0 -47
- package/dist/bundle/update-ZE53ASCW.js +0 -68
- /package/dist/bundle/{chunk-AWVQHWIS.js → chunk-YSYFOIW7.js} +0 -0
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { annotate } from "@wirecat/cli-base/commands";
|
|
3
3
|
import { DEAL_KINDS, DEAL_ROLES, DEAL_STATUSES } from "@wirecat/cli-core";
|
|
4
|
-
import { LOCAL_READ, LOCAL_WRITE, queryTerms, termField, withQuery } from "@wirecat/cli-core/cli";
|
|
5
|
-
import {
|
|
4
|
+
import { baseStagesCommand, LOCAL_READ, LOCAL_WRITE, queryTerms, storedProfilesFor, termField, withQuery, writesWithOf, } from "@wirecat/cli-core/cli";
|
|
5
|
+
import { dealBrief, dealContext } from "@wirecat/cli-core/services";
|
|
6
|
+
import { answers, itemAnswer, openMemoStore, wholeList, withStore } from "../answer.js";
|
|
7
|
+
import { APP } from "../app.js";
|
|
6
8
|
import { authorOf } from "../author.js";
|
|
7
9
|
import { collect, positive } from "../options.js";
|
|
8
10
|
import { pageOf } from "../page.js";
|
|
9
11
|
import { withSources } from "../records/sources.js";
|
|
12
|
+
import { deniedCrmKinds } from "../search/denied.js";
|
|
13
|
+
import { groupScopeOf } from "../store/group.js";
|
|
14
|
+
import { lockedCoverage } from "../store/guard.js";
|
|
10
15
|
import { canonicalProject } from "../vocabulary/project.js";
|
|
16
|
+
import { dealBriefText, dealText } from "./deal-text.js";
|
|
11
17
|
import { dayOf } from "./finance.js";
|
|
12
18
|
import { json } from "./written.js";
|
|
13
19
|
const queryOf = (entity) => ({
|
|
@@ -27,7 +33,19 @@ const PIPELINE_QUERY = {
|
|
|
27
33
|
backend: "native",
|
|
28
34
|
fields: [termField("kind", "enum", "kind:lead", { values: DEAL_KINDS }), termField("name", "kw", "name:Sales")],
|
|
29
35
|
};
|
|
30
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Each CRM copy's `writes_with`: the CLI and profile that change it on its server. The profiles are read once per
|
|
38
|
+
* command. A row lists only the profiles on its own account, and these lists show only the group's rows, so no
|
|
39
|
+
* profile outside the group is ever named; a list that shows outside rows passes cli-core's `allowed` again.
|
|
40
|
+
*/
|
|
41
|
+
const withWriter = async (store) => {
|
|
42
|
+
const profilesFor = storedProfilesFor(await store.accounts.profiles());
|
|
43
|
+
return (item) => ({
|
|
44
|
+
...item,
|
|
45
|
+
writesWith: writesWithOf(item.account, profilesFor),
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
export const listDeals = async (store, env, kind, words, limit) => {
|
|
31
49
|
const command = `${kind}s list`;
|
|
32
50
|
const terms = queryTerms(words, QUERIES[kind], command);
|
|
33
51
|
const filter = {
|
|
@@ -38,7 +56,25 @@ export const listDeals = async (store, kind, words, limit) => {
|
|
|
38
56
|
...(terms.has("pipeline") ? { pipeline: terms.get("pipeline") } : {}),
|
|
39
57
|
...(terms.has("organization") ? { organization: terms.get("organization") } : {}),
|
|
40
58
|
};
|
|
41
|
-
|
|
59
|
+
const scope = await groupScopeOf(store, env);
|
|
60
|
+
const writer = await withWriter(store);
|
|
61
|
+
return pageOf(command, limit, async (most) => (await store.deals.list({ ...filter, ...(scope === undefined ? {} : { accounts: scope.accounts }), limit: most })).map(writer));
|
|
62
|
+
};
|
|
63
|
+
const BASE_STAGE = /^stage:\d+$/;
|
|
64
|
+
/**
|
|
65
|
+
* The stage name `deals move` writes: a `stage:<id>` is a stage of the row's pipeline, or a base stage, which cli-core
|
|
66
|
+
* resolves to the one stage of that pipeline mapped onto it. A CRM's copy moves on its CRM, or the next sync undoes it.
|
|
67
|
+
*/
|
|
68
|
+
const stageToMove = async (store, ref, stage) => {
|
|
69
|
+
if (!BASE_STAGE.test(stage.trim()))
|
|
70
|
+
return stage;
|
|
71
|
+
const row = await store.deals.get(ref);
|
|
72
|
+
if (row.account !== null) {
|
|
73
|
+
const writesWith = writesWithOf(row.account, storedProfilesFor(await store.accounts.profiles()));
|
|
74
|
+
throw new CliError("validation_error", `${ref} is a copy from ${row.account.provider}:${row.account.account}; move it there with ` +
|
|
75
|
+
`${writesWith?.tool ?? "its CRM's CLI"} ${row.kind}s move ${ref} ${stage.trim()}`, { reason: "stage.crm-copy", writes_with: writesWith });
|
|
76
|
+
}
|
|
77
|
+
return (await store.baseStages.resolve(ref, stage.trim())).stage.name;
|
|
42
78
|
};
|
|
43
79
|
const roleOf = (role) => {
|
|
44
80
|
const value = role ?? "contact";
|
|
@@ -58,7 +94,7 @@ const WHAT = {
|
|
|
58
94
|
deal: { one: "deal", hope: "what you hope to sell, such as 'Site for the clinic'" },
|
|
59
95
|
lead: { one: "lead", hope: "who or what came in, such as 'Call from the site'" },
|
|
60
96
|
};
|
|
61
|
-
const itemCommands = (program, kind, run, env) => {
|
|
97
|
+
const itemCommands = (program, kind, { run, print }, env) => {
|
|
62
98
|
const { one, hope } = WHAT[kind];
|
|
63
99
|
const group = program
|
|
64
100
|
.command(`${kind}s`)
|
|
@@ -69,12 +105,46 @@ const itemCommands = (program, kind, run, env) => {
|
|
|
69
105
|
withQuery(json(annotate(group.command("list"), { effects: LOCAL_READ })).description(`${one}s, newest first; status:open is what is still in play`), QUERIES[kind])
|
|
70
106
|
.summary(`${one}s, newest first`)
|
|
71
107
|
.option("--limit <n>", `most ${one}s, up to 500`, positive, 100)
|
|
72
|
-
.action((words, { json, limit }) => run(json, (store) => listDeals(store, kind, words, limit)));
|
|
108
|
+
.action((words, { json, limit }) => run(json, (store) => listDeals(store, env, kind, words, limit)));
|
|
73
109
|
json(annotate(group.command("show"), { effects: LOCAL_READ, output: { entity: kind } }))
|
|
74
110
|
.description(`one ${one} with its pipeline, stage, status, amount, the people on it and what it was read from`)
|
|
75
111
|
.summary(`one ${one} with its stage, status, amount and people`)
|
|
76
112
|
.argument("<ref>", `${kind}:<id>`)
|
|
77
113
|
.action((ref, options, command) => run(options.json, async (store) => itemAnswer(await withSources(command, store, await store.deals.get(ref)))));
|
|
114
|
+
json(annotate(group.command("context"), { effects: LOCAL_READ, output: { entity: "deal_context" } }))
|
|
115
|
+
.description(`one ${one} whole: its stages, client, people with their roles and standing, owner, project, invoices and ` +
|
|
116
|
+
`payments as stored, its people's messages, mail and meetings in its lifetime (\`proposed\`: they share ` +
|
|
117
|
+
"people, nothing links them), open tasks and `coverage`. A stage named Won is not a payment")
|
|
118
|
+
.summary(`one ${one}: stages, people, project, money, messages and tasks`)
|
|
119
|
+
.argument("<ref>", `${kind}:<id>`)
|
|
120
|
+
.option("--brief", "the compact form for a model's context: names, roles, totals and counts")
|
|
121
|
+
.option("--limit <n>", "most items in each section", positive, 20)
|
|
122
|
+
.action(async (ref, options, command) => {
|
|
123
|
+
const answer = await withStore(env, async (store) => {
|
|
124
|
+
const scope = await groupScopeOf(store, env);
|
|
125
|
+
return lockedCoverage(store, env, await dealContext(store, ref, {
|
|
126
|
+
limit: options.limit,
|
|
127
|
+
...(scope === undefined ? {} : { accounts: scope.accounts }),
|
|
128
|
+
deniedKinds: deniedCrmKinds(command, env),
|
|
129
|
+
}));
|
|
130
|
+
});
|
|
131
|
+
if (answer.deal.kind !== kind)
|
|
132
|
+
throw new CliError("validation_error", `${ref} is a ${answer.deal.kind} — memo ${answer.deal.kind}s context`);
|
|
133
|
+
print(options.json, itemAnswer(options.brief ? dealBrief(answer) : answer), options.brief ? dealBriefText(dealBrief(answer)) : dealText(answer));
|
|
134
|
+
});
|
|
135
|
+
json(annotate(group.command("update"), { effects: LOCAL_WRITE, output: { entity: kind } }))
|
|
136
|
+
.description(`set the project a ${one} belongs to; a CRM's copy takes it too, and the next sync keeps it. An empty value ` +
|
|
137
|
+
"clears it")
|
|
138
|
+
.summary(`set the project a ${one} belongs to`)
|
|
139
|
+
.argument("<ref>", `${kind}:<id>`)
|
|
140
|
+
.requiredOption("--project <project>", "the project: its key or project:<id>")
|
|
141
|
+
.action(async (ref, options) => {
|
|
142
|
+
const by = authorOf(env);
|
|
143
|
+
await run(options.json, async (store) => itemAnswer(await store.deals.setProject(ref, {
|
|
144
|
+
project: options.project === "" ? null : await canonicalProject(store, options.project),
|
|
145
|
+
by,
|
|
146
|
+
})));
|
|
147
|
+
});
|
|
78
148
|
json(annotate(group.command("add"), { effects: LOCAL_WRITE, output: { entity: kind }, literal_after_dashes: true })
|
|
79
149
|
.option("--organization <organization>", "the client: organization:<id>")
|
|
80
150
|
.option("--person <uid>", `a person on the ${one}: person:<id>; repeat for another, up to 20`, collect)
|
|
@@ -120,10 +190,11 @@ const itemCommands = (program, kind, run, env) => {
|
|
|
120
190
|
.description(`move a ${one} to another stage of its pipeline; a won or lost stage closes it, an open one reopens it`)
|
|
121
191
|
.summary(`move a ${one} to another stage`)
|
|
122
192
|
.argument("<ref>", `${kind}:<id>`)
|
|
123
|
-
.argument("<stage>", `a stage of the ${one}'s pipeline`
|
|
193
|
+
.argument("<stage>", `a stage of the ${one}'s pipeline by its name or stage:<id>; or a base stage's stage:<id>, which moves it to ` +
|
|
194
|
+
"the one stage of its pipeline mapped there, and refuses several (with the candidates) or none")
|
|
124
195
|
.action(async (ref, stage, options) => {
|
|
125
196
|
const by = authorOf(env);
|
|
126
|
-
await run(options.json, async (store) => itemAnswer(await store.deals.move(ref, { stage, by })));
|
|
197
|
+
await run(options.json, async (store) => itemAnswer(await store.deals.move(ref, { stage: await stageToMove(store, ref, stage), by })));
|
|
127
198
|
});
|
|
128
199
|
json(annotate(group.command("close"), { effects: LOCAL_WRITE, output: { entity: kind } })
|
|
129
200
|
.option("--occurred-time <time>", "the day it closed, such as 2026-11-20; today when left out")
|
|
@@ -154,6 +225,23 @@ const funnelText = (report) => [
|
|
|
154
225
|
` ${report.totals.items} in all: ${report.totals.open} open, ${report.totals.won} won, ${report.totals.lost} lost` +
|
|
155
226
|
(report.totals.winRate === null ? "" : `, win rate ${Math.round(report.totals.winRate * 100)}%`),
|
|
156
227
|
].join("\n");
|
|
228
|
+
const inScope = (scope) => (pipeline) => scope === undefined || pipeline.account === null || scope.has(pipeline.account);
|
|
229
|
+
/** In a group a name means the group's pipeline: one outside it is never found, and never makes the name ambiguous. */
|
|
230
|
+
const pipelineInGroup = async (store, env, reference) => {
|
|
231
|
+
const scope = await groupScopeOf(store, env);
|
|
232
|
+
if (scope === undefined || /^pipeline:\d+$/.test(reference.trim()))
|
|
233
|
+
return reference;
|
|
234
|
+
const name = reference.trim().toLocaleLowerCase();
|
|
235
|
+
const named = (await store.deals.pipelines()).filter((one) => one.name.toLocaleLowerCase() === name && inScope(scope)(one));
|
|
236
|
+
if (named.length === 1)
|
|
237
|
+
return named[0].ref;
|
|
238
|
+
if (named.length === 0)
|
|
239
|
+
throw new CliError("not_found", `no pipeline named ${reference.trim()} in group:${scope.run.name}`, {
|
|
240
|
+
reason: "pipeline.not-found",
|
|
241
|
+
});
|
|
242
|
+
throw new CliError("validation_error", `more than one pipeline in group:${scope.run.name} is named ${reference.trim()}: ` +
|
|
243
|
+
`${named.map((one) => one.ref).join(", ")}; name one by its reference`, { reason: "pipeline.ambiguous" });
|
|
244
|
+
};
|
|
157
245
|
/** `memo deals`, `memo leads` and `memo pipelines`: sales pipelines and what is in them. */
|
|
158
246
|
export const dealCommands = (program, streams, env) => {
|
|
159
247
|
const { run, print } = answers(program, streams, env);
|
|
@@ -167,8 +255,10 @@ export const dealCommands = (program, streams, env) => {
|
|
|
167
255
|
const terms = queryTerms(words, PIPELINE_QUERY, "pipelines list");
|
|
168
256
|
const name = terms.get("name")?.toLocaleLowerCase();
|
|
169
257
|
const kind = terms.get("kind");
|
|
170
|
-
const
|
|
171
|
-
|
|
258
|
+
const scope = await groupScopeOf(store, env);
|
|
259
|
+
const all = (await store.deals.pipelines(kind === undefined ? {} : { kind })).filter(inScope(scope));
|
|
260
|
+
const writer = await withWriter(store);
|
|
261
|
+
return wholeList("pipelines list", (name === undefined ? all : all.filter((one) => one.name.toLocaleLowerCase() === name)).map(writer));
|
|
172
262
|
}));
|
|
173
263
|
json(annotate(pipelines.command("show"), { effects: LOCAL_READ, output: { entity: "pipeline" } }).option("--since-time <time>", "count only deals or leads made since this day, such as 2026-09-01"))
|
|
174
264
|
.description("one pipeline's funnel: per stage the open deals or leads in it, how many reached it, and the share that " +
|
|
@@ -177,7 +267,7 @@ export const dealCommands = (program, streams, env) => {
|
|
|
177
267
|
.argument("<pipeline>", "pipeline:<id>, or a name only one pipeline has")
|
|
178
268
|
.action(async (pipeline, options, command) => {
|
|
179
269
|
const since = dayOf(options.sinceTime);
|
|
180
|
-
const report = await withStore(env, async (store) => withSources(command, store, await store.deals.pipeline(pipeline, since === undefined ? {} : { since })));
|
|
270
|
+
const report = await withStore(env, async (store) => withSources(command, store, await store.deals.pipeline(await pipelineInGroup(store, env, pipeline), since === undefined ? {} : { since })));
|
|
181
271
|
print(options.json, itemAnswer(report), funnelText(report));
|
|
182
272
|
});
|
|
183
273
|
json(annotate(pipelines.command("add"), { effects: LOCAL_WRITE, literal_after_dashes: true }).option("--kind <kind>", "what it holds: deal or lead; deal by default"))
|
|
@@ -201,8 +291,18 @@ export const dealCommands = (program, streams, env) => {
|
|
|
201
291
|
by,
|
|
202
292
|
})));
|
|
203
293
|
});
|
|
204
|
-
itemCommands(program, "deal", run, env);
|
|
205
|
-
itemCommands(program, "lead", run, env);
|
|
294
|
+
itemCommands(program, "deal", { run, print }, env);
|
|
295
|
+
itemCommands(program, "lead", { run, print }, env);
|
|
296
|
+
const stages = baseStagesCommand(APP, {
|
|
297
|
+
env: () => env,
|
|
298
|
+
open: () => openMemoStore(env),
|
|
299
|
+
output: (body, command) => print(command.opts().json, body),
|
|
300
|
+
accounts: async (store) => (await groupScopeOf(store, env))?.accounts,
|
|
301
|
+
});
|
|
302
|
+
// memo has no global --json; cli-core's builder leaves it to the app.
|
|
303
|
+
for (const leaf of stages.commands)
|
|
304
|
+
json(leaf);
|
|
305
|
+
program.addCommand(stages);
|
|
206
306
|
};
|
|
207
307
|
/** Open deals `projects status` shows, soonest expected close first; more than this is a count. */
|
|
208
308
|
const STATUS_DEALS = 5;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deals-command.js","sourceRoot":"","sources":["../../src/finance/deals-command.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deals-command.js","sourceRoot":"","sources":["../../src/finance/deals-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Coverage, Related, Section } from "@wirecat/cli-core/services";
|
|
2
|
+
/** One related entity with every role it holds and how sure each is: `reported` is a CRM's word only. */
|
|
3
|
+
export declare const relatedLine: ({ ref, name, roles }: Related) => string;
|
|
4
|
+
/** A section's first items, and the command that lists the rest when it was cut. */
|
|
5
|
+
export declare const sectionLines: <T>(title: string, section: Section<T>, line?: (item: T) => string) => string[];
|
|
6
|
+
export declare const coverageLines: (coverage: Coverage) => string[];
|
|
7
|
+
//# sourceMappingURL=business-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"business-text.d.ts","sourceRoot":"","sources":["../../src/knowledge/business-text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAE5E,yGAAyG;AACzG,eAAO,MAAM,WAAW,yBAA0B,OAAO,KAAG,MAO3C,CAAA;AAEjB,oFAAoF;AACpF,eAAO,MAAM,YAAY,GAAI,CAAC,SACrB,MAAM,WACJ,OAAO,CAAC,CAAC,CAAC,SACb,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,KACxB,MAAM,EAOF,CAAA;AAEP,eAAO,MAAM,aAAa,aAAc,QAAQ,KAAG,MAAM,EAGxD,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** One related entity with every role it holds and how sure each is: `reported` is a CRM's word only. */
|
|
2
|
+
export const relatedLine = ({ ref, name, roles }) => ` ${name ?? ref} ${ref} ${roles
|
|
3
|
+
.map((role) => [role.kind, role.role, role.position && `(${role.position})`, role.standing, role.account && `by ${role.account}`]
|
|
4
|
+
.filter(Boolean)
|
|
5
|
+
.join(" "))
|
|
6
|
+
.join("; ")}`;
|
|
7
|
+
/** A section's first items, and the command that lists the rest when it was cut. */
|
|
8
|
+
export const sectionLines = (title, section, line = relatedLine) => section.items.length === 0
|
|
9
|
+
? []
|
|
10
|
+
: [
|
|
11
|
+
title,
|
|
12
|
+
...section.items.map(line),
|
|
13
|
+
...(section.hasMore ? [` ${section.total} in all${section.next ? ` — memo ${section.next}` : ""}`] : []),
|
|
14
|
+
];
|
|
15
|
+
export const coverageLines = (coverage) => [
|
|
16
|
+
`Read: ${coverage.accounts.join(", ") || "no account"}`,
|
|
17
|
+
...coverage.notRead.map(({ source, reason }) => `Not read: ${source} — ${reason}`),
|
|
18
|
+
];
|
|
19
|
+
//# sourceMappingURL=business-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"business-text.js","sourceRoot":"","sources":["../../src/knowledge/business-text.ts"],"names":[],"mappings":"AAEA,yGAAyG;AACzG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAW,EAAU,EAAE,CACnE,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,KAAK;KAC/B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;KAC/G,MAAM,CAAC,OAAO,CAAC;KACf,IAAI,CAAC,GAAG,CAAC,CACb;KACA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;AAEjB,oFAAoF;AACpF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAa,EACb,OAAmB,EACnB,IAAI,GAAwB,WAAkC,EACpD,EAAE,CACZ,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;IACxB,CAAC,CAAC,EAAE;IACJ,CAAC,CAAC;QACE,KAAK;QACL,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1G,CAAA;AAEP,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAkB,EAAY,EAAE,CAAC;IAC7D,SAAS,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,YAAY,EAAE;IACvD,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,aAAa,MAAM,MAAM,MAAM,EAAE,CAAC;CACnF,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type Streams } from "@wirecat/cli-base";
|
|
2
|
-
import type
|
|
2
|
+
import { type Command } from "commander";
|
|
3
3
|
export declare const knowledgeCommands: (program: Command, streams: Streams, env: NodeJS.ProcessEnv) => void;
|
|
4
4
|
//# sourceMappingURL=command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/knowledge/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/knowledge/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AA2C1D,OAAO,EAAE,KAAK,OAAO,EAAwB,MAAM,WAAW,CAAA;AA6E9D,eAAO,MAAM,iBAAiB,YAAa,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,SAohB3F,CAAA"}
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { annotate } from "@wirecat/cli-base/commands";
|
|
3
3
|
import { timezoneOf } from "@wirecat/cli-base/query";
|
|
4
|
-
import { ENGAGEMENT_LEVELS } from "@wirecat/cli-core";
|
|
5
|
-
import { answerEntity, LOCAL_READ, LOCAL_WRITE, listQuery, queryTerms, typedQuery, withQuery, } from "@wirecat/cli-core/cli";
|
|
6
|
-
import { proposalRegistry, purposesOf } from "@wirecat/cli-core/services";
|
|
4
|
+
import { DEAL_ROLES, ENGAGEMENT_LEVELS, ORGANIZATION_ROLES, PROJECT_ROLES, RELATION_KINDS, } from "@wirecat/cli-core";
|
|
5
|
+
import { answerEntity, LOCAL_READ, LOCAL_WRITE, listQuery, queryTerms, termField, typedQuery, withQuery, } from "@wirecat/cli-core/cli";
|
|
6
|
+
import { CATEGORIES, organizationContext, proposalRegistry, purposesOf, } from "@wirecat/cli-core/services";
|
|
7
7
|
import { ORGANIZATION_KINDS, ORGANIZATIONS_QUERY, PROJECT_TYPES, PROJECTS_QUERY, REMINDERS_QUERY, SCOPES, } from "@wirecat/cli-core/store";
|
|
8
|
+
import { InvalidArgumentError } from "commander";
|
|
8
9
|
import { answers, itemAnswer, listAnswer, wholeList, withStore } from "../answer.js";
|
|
9
10
|
import { byOption, deciderOf, reasonOption, whoRuns } from "../author.js";
|
|
10
11
|
import { notesAbout } from "../notes/about.js";
|
|
11
12
|
import { oneOf, positive, readScope, writeScope } from "../options.js";
|
|
12
13
|
import { withOwner } from "../people/owner.js";
|
|
13
14
|
import { decideOne, decisionOf } from "../review/review.js";
|
|
15
|
+
import { deniedCrmKinds } from "../search/denied.js";
|
|
16
|
+
import { groupScopeOf, keepInGroup } from "../store/group.js";
|
|
17
|
+
import { lockedCoverage, stripped } from "../store/guard.js";
|
|
14
18
|
import { ACCOUNTS_HELP, accountName, theAccounts, writeAccount, } from "../store/source-list.js";
|
|
15
19
|
import { keyDocuments, markKey, projectOf, unmarkKey } from "./key-documents.js";
|
|
16
20
|
import { KEY_DOCUMENTS_QUERY, keyDocument } from "./list-queries.js";
|
|
17
21
|
import { meetingProjectsCommand } from "./meeting-projects-command.js";
|
|
22
|
+
import { organizationText } from "./organization-text.js";
|
|
18
23
|
import { projectActionsCommand } from "./project-actions-command.js";
|
|
19
24
|
import { projectContext, projectContextText } from "./project-context.js";
|
|
20
25
|
import { projectGatherCommand } from "./project-gather-command.js";
|
|
@@ -22,6 +27,34 @@ import { projectStatusCommand } from "./project-status-command.js";
|
|
|
22
27
|
import { projectTransferCommand } from "./project-transfer-command.js";
|
|
23
28
|
import { listRelationships, RELATIONSHIP_QUERY, relationshipsText } from "./relationships.js";
|
|
24
29
|
import { relationshipsScanCommand, scanStep } from "./relationships-scan.js";
|
|
30
|
+
import { relationshipRolesCommand } from "./roles-command.js";
|
|
31
|
+
const ROLE_HELP = `its role: in an organization ${ORGANIZATION_ROLES.join(", ")}; in a project ${PROJECT_ROLES.join(", ")}; ` +
|
|
32
|
+
`on a deal or lead ${DEAL_ROLES.join(", ")}. A job title is not a role`;
|
|
33
|
+
const ORGANIZATIONS_LIST_QUERY = {
|
|
34
|
+
...ORGANIZATIONS_QUERY,
|
|
35
|
+
fields: [
|
|
36
|
+
...ORGANIZATIONS_QUERY.fields,
|
|
37
|
+
termField("category", "enum", "category:client", {
|
|
38
|
+
values: CATEGORIES,
|
|
39
|
+
relation: "what its relationships with your own organizations, or yours with it, make it",
|
|
40
|
+
}),
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
/** `category:` is read from relationships in the store's own query, so it is taken out of the list's words first. */
|
|
44
|
+
const categoryOf = (words) => {
|
|
45
|
+
const named = words.map((word) => /^category:(.+)$/.exec(word)?.[1]);
|
|
46
|
+
const category = named.find((one) => one !== undefined);
|
|
47
|
+
return { ...(category === undefined ? {} : { category }), rest: words.filter((_, at) => named[at] === undefined) };
|
|
48
|
+
};
|
|
49
|
+
/** A day as `--start-date 2026-01-01` gives it: its start, UTC ms. */
|
|
50
|
+
const dayOption = (value) => {
|
|
51
|
+
const at = Date.parse(`${value}T00:00:00Z`);
|
|
52
|
+
if (!/^\d{4}-\d{2}-\d{2}$/.test(value) || Number.isNaN(at))
|
|
53
|
+
throw new InvalidArgumentError("a day, such as 2026-01-01");
|
|
54
|
+
return at;
|
|
55
|
+
};
|
|
56
|
+
/** `--end-date` is the last day it held; cli-core's end is the moment after it. */
|
|
57
|
+
const lastDayOption = (value) => dayOption(value) + 86_400_000;
|
|
25
58
|
/** A suggested link the review lists as `link:<id>`; deciding it goes through the same registry as review. */
|
|
26
59
|
const pendingLink = async (store, id) => {
|
|
27
60
|
try {
|
|
@@ -41,20 +74,6 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
41
74
|
/** Organisations and relations are the owner's, not an account's. */
|
|
42
75
|
const owned = (options, work) => run(options.json, async (store) => itemAnswer(await work(store)));
|
|
43
76
|
const ownedList = (command, options, work) => run(options.json, async (store) => wholeList(command, await work(store)));
|
|
44
|
-
/** What the store knows around an organization or a project: its relations, the notes about it, its tags. */
|
|
45
|
-
const contextOf = async (store, thing, type, reference) => {
|
|
46
|
-
if (thing === undefined)
|
|
47
|
-
throw new CliError("not_found", `no ${type} ${reference}; memo ${type}s list shows them`);
|
|
48
|
-
const { id } = thing;
|
|
49
|
-
return {
|
|
50
|
-
[type]: thing,
|
|
51
|
-
relationships: (await store.notes.links({ to: `${type}:${id}` }))
|
|
52
|
-
.concat(await store.notes.links({ from: `${type}:${id}` }))
|
|
53
|
-
.filter((link) => link.kind !== "about" && link.kind !== "links-to" && link.role !== "key"),
|
|
54
|
-
notes: await notesAbout(store, { ref: `${type}:${id}` }),
|
|
55
|
-
tags: await store.knowledge.tags(null, { type, id }),
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
77
|
const organizations = program
|
|
59
78
|
.command("organizations")
|
|
60
79
|
.description("companies, teams, families and communities of yours");
|
|
@@ -89,22 +108,51 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
89
108
|
throw new CliError("not_found", `no organization ${reference}; memo organizations list shows them`);
|
|
90
109
|
return found;
|
|
91
110
|
}));
|
|
92
|
-
withQuery(annotate(organizations.command("list"), { effects: LOCAL_READ }),
|
|
93
|
-
.description("your organizations")
|
|
111
|
+
withQuery(annotate(organizations.command("list"), { effects: LOCAL_READ }), ORGANIZATIONS_LIST_QUERY)
|
|
112
|
+
.description("your organizations; category:client, supplier, partner or employer keeps those its relationships make so")
|
|
113
|
+
.summary("your organizations")
|
|
94
114
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
95
115
|
.action((words, options) => {
|
|
96
|
-
const
|
|
97
|
-
|
|
116
|
+
const { category, rest } = categoryOf(words);
|
|
117
|
+
const query = listQuery(typedQuery(rest), ORGANIZATIONS_QUERY, "organizations list");
|
|
118
|
+
return ownedList("organizations list", options, async (store) => {
|
|
119
|
+
const scope = await groupScopeOf(store, env);
|
|
120
|
+
const found = await store.knowledge.organizations(query, {
|
|
121
|
+
...(category === undefined ? {} : { category }),
|
|
122
|
+
...(scope === undefined ? {} : { accounts: scope.accounts }),
|
|
123
|
+
});
|
|
124
|
+
return keepInGroup(store, env, found, ({ ref }) => ref);
|
|
125
|
+
});
|
|
98
126
|
});
|
|
99
|
-
annotate(organizations.command("context"), {
|
|
100
|
-
|
|
101
|
-
|
|
127
|
+
annotate(organizations.command("context"), {
|
|
128
|
+
effects: LOCAL_READ,
|
|
129
|
+
output: { entity: "organization_context_memo" },
|
|
130
|
+
})
|
|
131
|
+
.description("one organization by its id or organization:<id>: its people by role, customers, suppliers and partners, " +
|
|
132
|
+
"projects, open deals and leads, invoices, payments and orders, how much its people wrote, open tasks and " +
|
|
133
|
+
"categories, each relationship with its standing; then the notes about it and its tags. `coverage` names " +
|
|
134
|
+
"what was not read")
|
|
135
|
+
.summary("one organization: people, customers, deals, money, tasks, notes")
|
|
102
136
|
.argument("<organization>", "its id or organization:<id>")
|
|
137
|
+
.option("--limit <n>", "most items in each section", positive, 20)
|
|
103
138
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
104
|
-
.action((reference, options
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
139
|
+
.action(async (reference, options, command) => {
|
|
140
|
+
const answer = await withStore(env, async (store) => {
|
|
141
|
+
const scope = await groupScopeOf(store, env);
|
|
142
|
+
const found = await organizationContext(store, reference, {
|
|
143
|
+
limit: options.limit,
|
|
144
|
+
...(scope === undefined ? {} : { accounts: scope.accounts }),
|
|
145
|
+
deniedKinds: deniedCrmKinds(command, env),
|
|
146
|
+
});
|
|
147
|
+
const ref = found.organization.ref;
|
|
148
|
+
return lockedCoverage(store, env, {
|
|
149
|
+
...found,
|
|
150
|
+
notes: await notesAbout(store, { ref }),
|
|
151
|
+
tags: await store.knowledge.tags(null, { type: "organization", id: ref.slice("organization:".length) }),
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
print(options.json, itemAnswer(answer), organizationText(answer));
|
|
155
|
+
});
|
|
108
156
|
const projects = program.command("projects").description("projects of yours, each with a short key");
|
|
109
157
|
meetingProjectsCommand(projects, streams, env);
|
|
110
158
|
annotate(projects.command("add"), { effects: LOCAL_WRITE, literal_after_dashes: true })
|
|
@@ -140,7 +188,7 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
140
188
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
141
189
|
.action(async (reference, options) => {
|
|
142
190
|
const { context, next } = await withStore(env, async (store) => {
|
|
143
|
-
const context = await projectContext(store, env, reference);
|
|
191
|
+
const context = await stripped(store, env, await projectContext(store, env, reference));
|
|
144
192
|
return { context, next: await scanStep(store, context.project, "all") };
|
|
145
193
|
});
|
|
146
194
|
print(options.json, itemAnswer(context, next.length ? { next } : {}), projectContextText(context));
|
|
@@ -181,17 +229,19 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
181
229
|
.command("relationships")
|
|
182
230
|
.description("relations between people, organizations and projects; never between identities");
|
|
183
231
|
byOption(annotate(relations.command("add"), { effects: LOCAL_WRITE })
|
|
184
|
-
.description("state that a person, organization or project belongs to
|
|
185
|
-
"(member-of only); an agent's waits for you to confirm it")
|
|
232
|
+
.description("state that a person, organization or project belongs to, reports to, is a customer or partner of, or relates " +
|
|
233
|
+
"to another, or that a chat is a project's (member-of only); an agent's waits for you to confirm it")
|
|
186
234
|
.summary("state that a person, organization, project or chat belongs or relates to another"))
|
|
187
235
|
.argument("<from>", "the person:, organization: or project: that belongs or relates, or chat:<provider>/<account>/<chat> of a project")
|
|
188
236
|
.argument("<to>", "the person:, organization: or project: it belongs or relates to")
|
|
189
237
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
190
|
-
.option("--kind <kind>", "
|
|
191
|
-
.option("--role <role>",
|
|
192
|
-
"such as employee or contributor")
|
|
238
|
+
.option("--kind <kind>", RELATION_KINDS.join(", "), oneOf(RELATION_KINDS), "member-of")
|
|
239
|
+
.option("--role <role>", ROLE_HELP)
|
|
193
240
|
.option("--role-note <text>", "what the role means here, in your words, beside a role from its list")
|
|
194
241
|
.option("--engagement <level>", ENGAGEMENT_HELP, oneOf(ENGAGEMENT_LEVELS))
|
|
242
|
+
.option("--position <title>", "the job title, such as 'Procurement manager'; kept apart from the role")
|
|
243
|
+
.option("--start-date <date>", "the first day it held, such as 2026-01-01", dayOption)
|
|
244
|
+
.option("--end-date <date>", "the last day it held, included; it ends at the start of the day after", lastDayOption)
|
|
195
245
|
.option("--reason <text>", "why you think so, in a sentence")
|
|
196
246
|
.action(async (from, to, options, command) => {
|
|
197
247
|
const by = await whoRuns(command, env, { asOwner: options.asOwner, question: "state it as yours?" });
|
|
@@ -203,6 +253,9 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
203
253
|
...(options.role === undefined ? {} : { role: options.role }),
|
|
204
254
|
...(options.roleNote === undefined ? {} : { roleNote: options.roleNote }),
|
|
205
255
|
...(options.engagement === undefined ? {} : { engagement: options.engagement }),
|
|
256
|
+
...(options.position === undefined ? {} : { position: options.position }),
|
|
257
|
+
...(options.startDate === undefined ? {} : { startsAt: options.startDate }),
|
|
258
|
+
...(options.endDate === undefined ? {} : { endsAt: options.endDate }),
|
|
206
259
|
...(options.reason === undefined ? {} : { evidence: options.reason }),
|
|
207
260
|
};
|
|
208
261
|
return by === "owner"
|
|
@@ -214,19 +267,37 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
214
267
|
.description("relationships, all or those of one reference, with titles; confirmed:false lists the proposals waiting for " +
|
|
215
268
|
"you, as memo review kind:relationship does")
|
|
216
269
|
.summary("relationships with titles; confirmed:false lists those waiting for you"), RELATIONSHIP_QUERY)
|
|
270
|
+
.option("--limit <n>", "most relationships, up to 500", (value) => Math.min(positive(value), 500), 100)
|
|
271
|
+
.option("--page <n>", "which page, from 1", positive, 1)
|
|
217
272
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
218
|
-
.action(async (words, options) => {
|
|
219
|
-
const found = await withStore(env, (store) =>
|
|
220
|
-
|
|
273
|
+
.action(async (words, options, command) => {
|
|
274
|
+
const found = await withStore(env, async (store) => {
|
|
275
|
+
const scope = await groupScopeOf(store, env);
|
|
276
|
+
return listRelationships(store, env, words, {
|
|
277
|
+
limit: options.limit,
|
|
278
|
+
page: options.page,
|
|
279
|
+
...(scope === undefined ? {} : { accounts: scope.accounts }),
|
|
280
|
+
deniedKinds: deniedCrmKinds(command, env),
|
|
281
|
+
});
|
|
282
|
+
});
|
|
283
|
+
print(options.json, listAnswer("relationships list", {
|
|
284
|
+
items: found.items,
|
|
285
|
+
limit: found.limit,
|
|
286
|
+
has_more: found.hasMore,
|
|
287
|
+
page: found.page,
|
|
288
|
+
args: { query: words.join(" ") },
|
|
289
|
+
}), relationshipsText(found.items));
|
|
221
290
|
});
|
|
222
291
|
byOption(annotate(relations.command("update"), { effects: LOCAL_WRITE })
|
|
223
292
|
.description("set what a relationship is: its role and a note beside it, how much you deal with a person on a project, or " +
|
|
224
293
|
"what a chat is for in a project (work, sales, support, other); an agent's change waits for you in memo review")
|
|
225
294
|
.summary("set a relationship's role, engagement or a chat's purpose in a project")
|
|
226
295
|
.argument("<id>", "the relationship's id, as relationships list gives it")
|
|
227
|
-
.option("--role <role>",
|
|
296
|
+
.option("--role <role>", `${ROLE_HELP}; an empty value clears it`)
|
|
228
297
|
.option("--role-note <text>", "what the role means here, in your words; an empty value clears it")
|
|
229
298
|
.option("--engagement <level>", `${ENGAGEMENT_HELP}; an empty value clears it`, (value) => value === "" ? "" : oneOf(ENGAGEMENT_LEVELS)(value))
|
|
299
|
+
.option("--position <title>", "the job title; an empty value clears it")
|
|
300
|
+
.option("--start-date <date>", "the first day it held, such as 2026-01-01", dayOption)
|
|
230
301
|
.option("--purpose <purpose>", "what the chat is for in the project: work, sales, support or other")
|
|
231
302
|
.option("--reason <text>", "why, in a sentence")
|
|
232
303
|
.option("--json", "print JSON; --json=id,title keeps only those fields")).action(async (id, options, command) => {
|
|
@@ -235,12 +306,14 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
235
306
|
...(options.role === undefined ? {} : { role: cleared(options.role) }),
|
|
236
307
|
...(options.roleNote === undefined ? {} : { roleNote: cleared(options.roleNote) }),
|
|
237
308
|
...(options.engagement === undefined ? {} : { engagement: cleared(options.engagement) }),
|
|
309
|
+
...(options.position === undefined ? {} : { position: cleared(options.position) }),
|
|
310
|
+
...(options.startDate === undefined ? {} : { startsAt: options.startDate }),
|
|
238
311
|
...(options.purpose === undefined ? {} : { purpose: options.purpose }),
|
|
239
312
|
};
|
|
240
313
|
const by = await whoRuns(command, env, { asOwner: options.asOwner, question: `change relationship ${id}?` });
|
|
241
|
-
return owned(options, (store) => {
|
|
242
|
-
if (
|
|
243
|
-
throw new CliError("validation_error", "say what to change: --role, --role-note, --engagement or --purpose", {
|
|
314
|
+
return owned(options, async (store) => {
|
|
315
|
+
if (Object.keys(change).length === 0)
|
|
316
|
+
throw new CliError("validation_error", "say what to change: --role, --role-note, --engagement, --position, --start-date or --purpose", {
|
|
244
317
|
reason: "input.invalid",
|
|
245
318
|
param: "--purpose",
|
|
246
319
|
});
|
|
@@ -273,12 +346,28 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
273
346
|
return name === "remove"
|
|
274
347
|
? store.knowledge.removeRelation(null, id, by)
|
|
275
348
|
: store.knowledge.confirmRelation(null, id, by);
|
|
276
|
-
await decideOne(store, suggestion.id, decisionOf(name === "confirm", by, options.reason));
|
|
349
|
+
await decideOne(store, env, suggestion.id, decisionOf(name === "confirm", by, options.reason));
|
|
277
350
|
if (name === "remove")
|
|
278
351
|
return { id, removed: true };
|
|
279
352
|
return (await store.knowledge.relations(null, suggestion.subject)).find((one) => one.id === id);
|
|
280
353
|
});
|
|
281
354
|
});
|
|
355
|
+
byOption(annotate(relations.command("end"), { effects: LOCAL_WRITE })
|
|
356
|
+
.description("say that a relationship no longer holds, from a day on; it stays, as ended, and relationships list " +
|
|
357
|
+
"include:ended shows it. An agent's waits for you in memo review")
|
|
358
|
+
.summary("say that a relationship ended")
|
|
359
|
+
.argument("<id>", "the relationship's id, as relationships list gives it")
|
|
360
|
+
.option("--end-date <date>", "the last day it held, included; it ends at the start of the day after. Today when left out", lastDayOption)
|
|
361
|
+
.option("--json", "print JSON; --json=id,title keeps only those fields")).action(async (id, options, command) => {
|
|
362
|
+
const by = await whoRuns(command, env, { asOwner: options.asOwner, question: `end relationship ${id}?` });
|
|
363
|
+
const at = options.endDate ?? Date.now();
|
|
364
|
+
return owned(options, async (store) => {
|
|
365
|
+
return by === "owner"
|
|
366
|
+
? store.knowledge.endRelation(null, id, at, by)
|
|
367
|
+
: store.knowledge.endRelation(null, id, at, by);
|
|
368
|
+
});
|
|
369
|
+
});
|
|
370
|
+
relationshipRolesCommand(relations, { print }, env);
|
|
282
371
|
relationshipsScanCommand(relations, print, env, warn);
|
|
283
372
|
const reminders = program
|
|
284
373
|
.command("reminders")
|