fuli-context 0.8.3 → 0.9.0-beta.1
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 +105 -6
- package/README.zh-CN.md +92 -6
- package/dist/web/assets/{AboutPage-HLhChD_Q.js → AboutPage-u2Bv6cO-.js} +1 -1
- package/dist/web/assets/{AgentHand-BaLSbn08.js → AgentHand-CsMcNXUm.js} +1 -1
- package/dist/web/assets/{AgentName-0PIU7MOX.js → AgentName-BboCA-Fd.js} +1 -1
- package/dist/web/assets/{AgentProfilePage-9cSsZHnk.js → AgentProfilePage-Dyux6qE3.js} +1 -1
- package/dist/web/assets/AgentsDirectoryPage-BEJdvmX7.js +1 -0
- package/dist/web/assets/{ConnectionsPage-D0wPYbwd.js → ConnectionsPage-Dw_hK_EM.js} +1 -1
- package/dist/web/assets/{EmployeeRecruitDialog-BrPH3e50.js → EmployeeRecruitDialog-DP_ktv3w.js} +1 -1
- package/dist/web/assets/{EmployeeWorkbenchPage-u-jw38PW.js → EmployeeWorkbenchPage-CAt8lVnr.js} +1 -1
- package/dist/web/assets/{GrowthLoading-DFOy-mEl.js → GrowthLoading-DIwqGFSc.js} +1 -1
- package/dist/web/assets/{KnowledgeEditDialog-DBsjlkDr.js → KnowledgeEditDialog-Degd9AGD.js} +1 -1
- package/dist/web/assets/{KnowledgeInspector-C79hbuOo.js → KnowledgeInspector-yms1ysZ4.js} +1 -1
- package/dist/web/assets/{KnowledgeOrganizerPage-Cz1BnAtz.js → KnowledgeOrganizerPage-C64wNn8a.js} +1 -1
- package/dist/web/assets/KnowledgePage-BTFEXzgi.js +1 -0
- package/dist/web/assets/{KnowledgeWorkspace-B2vj12QG.js → KnowledgeWorkspace-BsF1X4Aq.js} +1 -1
- package/dist/web/assets/{NotFoundPage-D340EQJP.js → NotFoundPage-DfaNTiD1.js} +1 -1
- package/dist/web/assets/{OverviewPage-BKiYudrC.js → OverviewPage-VXMfcWFI.js} +1 -1
- package/dist/web/assets/{PersonalProfilePage-BIGTcem2.js → PersonalProfilePage-C1LBhcYu.js} +1 -1
- package/dist/web/assets/PersonalProjectsPage-B5lV4ZJW.js +1 -0
- package/dist/web/assets/ProjectAgentFirstTask-6afJ8HUe.css +1 -0
- package/dist/web/assets/ProjectAgentFirstTask-DF-IvEqp.js +1 -0
- package/dist/web/assets/ProjectAgentsPage-CgL92gng.js +13 -0
- package/dist/web/assets/ProjectAgentsPage-CoJ4qQlA.css +1 -0
- package/dist/web/assets/{ProjectScopePicker-8hrgvmg-.js → ProjectScopePicker-CZUMdyYz.js} +1 -1
- package/dist/web/assets/{PublicProjectsPage-b5zx0dFS.js → PublicProjectsPage-e4CpxHk9.js} +1 -1
- package/dist/web/assets/{ReviewPage-BLdWYDmj.js → ReviewPage-DugEaFvI.js} +1 -1
- package/dist/web/assets/RoundtablesPage-642YtZBC.js +2 -0
- package/dist/web/assets/RoundtablesPage-DCbIBnBq.css +1 -0
- package/dist/web/assets/{SearchableSelect-vaoSDq1g.js → SearchableSelect-Do6X3fXi.js} +1 -1
- package/dist/web/assets/{SettingsPage-Dxjrkq1g.js → SettingsPage-wqYxDPyu.js} +1 -1
- package/dist/web/assets/{SharedJefaReportPage-YG2xwQQy.js → SharedJefaReportPage-CNQDezJr.js} +1 -1
- package/dist/web/assets/{WritingTastePage-CPPduPb1.js → WritingTastePage-CAUvbDlL.js} +1 -1
- package/dist/web/assets/{agent-profile.css_vue_type_style_index_0_src_true_lang-LTJ1ptv9.js → agent-profile.css_vue_type_style_index_0_src_true_lang-DHOcWSe_.js} +1 -1
- package/dist/web/assets/{catalog-B9tlJAp9.js → catalog-JmKyJnKL.js} +1 -1
- package/dist/web/assets/{client-InXscj8J.js → client-DTQ_tUr2.js} +1 -1
- package/dist/web/assets/{console-hUns2aD-.js → console-CrhIK67Y.js} +1 -1
- package/dist/web/assets/{conversation-launcher-settings-DEtJ6pZg.js → conversation-launcher-settings-fUWCt3XG.js} +1 -1
- package/dist/web/assets/copy-CX6pyzAG.js +1 -0
- package/dist/web/assets/i18n-CIIxzhPZ.js +10 -0
- package/dist/web/assets/{identity-Wt2Xio_B.js → identity-CdFITIOu.js} +1 -1
- package/dist/web/assets/{index-CWMqDq8g.css → index-CYZi7E1e.css} +1 -1
- package/dist/web/assets/index-DMoxVzDU.js +2 -0
- package/dist/web/assets/{model-C1GwBvd9.js → model-CJsrDUNb.js} +1 -1
- package/dist/web/assets/{personal-profile-graph-BdV_3I1u.js → personal-profile-graph-CQLOait6.js} +1 -1
- package/dist/web/assets/{shared-report-tRQV1iJl.js → shared-report-Cll2Yj8W.js} +1 -1
- package/dist/web/assets/{task-evidence-BUu7yYIn.js → task-evidence-DTiPCs7r.js} +1 -1
- package/dist/web/assets/{useApi-CROJJdhE-QfNm4ADP.js → useApi-CROJJdhE-fcdVGInY.js} +1 -1
- package/dist/web/assets/{useModalDialog-BopF-KHN.js → useModalDialog-B-45idX9.js} +1 -1
- package/dist/web/assets/{vue-router-COCNAJJn.js → vue-router-BUX6njIv.js} +1 -1
- package/dist/web/index.html +12 -11
- package/docs/employee-agents.md +20 -1
- package/docs/roundtable-beta-testing.md +102 -0
- package/docs/roundtable-beta-validation.md +125 -0
- package/docs/roundtable-research.md +142 -0
- package/graph-provider/fuli_graph/app.py +5 -0
- package/graph-provider/fuli_graph/models.py +1 -0
- package/graph-provider/fuli_graph/project_agent_task_models.py +1 -0
- package/graph-provider/fuli_graph/store_project_agent_context.py +4 -0
- package/graph-provider/fuli_graph/store_project_agent_task_reads.py +23 -8
- package/graph-provider/fuli_graph/store_project_agent_tasks.py +1 -0
- package/graph-provider/fuli_graph/store_records.py +1 -0
- package/graph-provider/fuli_graph/store_task_contexts.py +2 -1
- package/graph-provider/fuli_graph/task_context_adoption.py +9 -4
- package/graph-provider/fuli_graph/task_context_temporary_owner.py +25 -0
- package/graph-provider/fuli_graph/temporary_project_scope.py +88 -0
- package/npm-shrinkwrap.json +131 -79
- package/package.json +7 -3
- package/skills/capturing-session-knowledge/SKILL.md +20 -5
- package/src/agent-tools/graph-definitions.js +1 -1
- package/src/agent-tools/interface-catalog.js +5 -0
- package/src/agent-tools/project-agent-definitions.js +2 -2
- package/src/agent-tools.js +9 -2
- package/src/agents/a2a/roundtable-participant.js +374 -0
- package/src/agents/claude-code/roundtable-participant.js +24 -0
- package/src/agents/codex/roundtable-config.js +29 -0
- package/src/agents/codex/roundtable-participant.js +34 -0
- package/src/agents/grok/roundtable-participant.js +185 -0
- package/src/agents/pi/roundtable-participant.js +193 -0
- package/src/agents/pi/roundtable-result-format.js +183 -0
- package/src/cli/command-registry.js +2 -0
- package/src/cli/roundtable-command.js +59 -0
- package/src/cli.js +5 -0
- package/src/graphiti/agent-knowledge-workflows.js +14 -5
- package/src/graphiti/federated-application.js +3 -1
- package/src/graphiti/project-agent-mapping.js +1 -0
- package/src/graphiti/project-agent-workflows.js +28 -11
- package/src/graphiti/project-path-context.js +1 -0
- package/src/graphiti/provider-client.js +3 -0
- package/src/graphiti/temporary-project-scope.js +46 -0
- package/src/http/api-router.js +2 -0
- package/src/http/error-mapping.js +2 -0
- package/src/mcp/provider-task-context-registry.js +10 -0
- package/src/mcp/session-id.js +1 -0
- package/src/mcp/tool-annotations.js +2 -0
- package/src/roundtables/application.js +69 -0
- package/src/roundtables/domain.js +181 -0
- package/src/roundtables/http-router.js +56 -0
- package/src/roundtables/mcp-server.js +48 -0
- package/src/roundtables/participant-registry.js +12 -0
- package/src/roundtables/process.js +70 -0
- package/src/roundtables/result-contract.js +47 -0
- package/src/roundtables/server.js +52 -0
- package/src/roundtables/service.js +396 -0
- package/src/roundtables/store.js +59 -0
- package/src/roundtables/tool-contract.js +41 -0
- package/src/roundtables/turn-prompt.js +21 -0
- package/src/roundtables/worker.js +85 -0
- package/dist/web/assets/AgentsDirectoryPage-7G02Xm6C.js +0 -1
- package/dist/web/assets/KnowledgePage-JyfFFUrg.js +0 -1
- package/dist/web/assets/PersonalProjectsPage-CzjDCIi0.js +0 -1
- package/dist/web/assets/ProjectAgentsPage-C5F2WgwJ.js +0 -13
- package/dist/web/assets/ProjectAgentsPage-C89ZEDgi.css +0 -1
- package/dist/web/assets/i18n-75woNt31.js +0 -9
- package/dist/web/assets/index-pleRuLpw.js +0 -2
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fuli-context",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0-beta.1",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "fuli-context",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.9.0-beta.1",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
|
+
"@a2a-js/sdk": "1.3.0",
|
|
12
13
|
"@hono/node-server": "2.0.12",
|
|
13
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
14
|
+
"@modelcontextprotocol/sdk": "^1.31.0",
|
|
14
15
|
"zod": "^4.4.3"
|
|
15
16
|
},
|
|
16
17
|
"bin": {
|
|
@@ -31,7 +32,7 @@
|
|
|
31
32
|
"typescript": "~6.0.0",
|
|
32
33
|
"vite": "^8.1.5",
|
|
33
34
|
"vitest": "^4.1.10",
|
|
34
|
-
"vue": "^3.5.
|
|
35
|
+
"vue": "^3.5.42",
|
|
35
36
|
"vue-i18n": "^11.4.8",
|
|
36
37
|
"vue-router": "^5.2.0",
|
|
37
38
|
"vue-tsc": "^3.3.8"
|
|
@@ -40,6 +41,53 @@
|
|
|
40
41
|
"node": ">=24.12"
|
|
41
42
|
}
|
|
42
43
|
},
|
|
44
|
+
"node_modules/@a2a-js/sdk": {
|
|
45
|
+
"version": "1.3.0",
|
|
46
|
+
"resolved": "https://registry.npmjs.org/@a2a-js/sdk/-/sdk-1.3.0.tgz",
|
|
47
|
+
"integrity": "sha512-OpK4nygUnLKlpTFZlM2IrYu7f3c/B7c4u4Z14+vgMq24lEINTVCxH/BqZx+GL92rNf7CoBL5oTP5UhNsl75yyg==",
|
|
48
|
+
"license": "Apache-2.0",
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"jose": "^6.2.3"
|
|
51
|
+
},
|
|
52
|
+
"bin": {
|
|
53
|
+
"a2a-db": "dist/cli/a2a_db.js"
|
|
54
|
+
},
|
|
55
|
+
"engines": {
|
|
56
|
+
"node": ">=20"
|
|
57
|
+
},
|
|
58
|
+
"peerDependencies": {
|
|
59
|
+
"@bufbuild/protobuf": "^2.10.2",
|
|
60
|
+
"@grpc/grpc-js": "^1.11.0",
|
|
61
|
+
"better-sqlite3": "^12.0.0 || ^13.0.0",
|
|
62
|
+
"express": "^4.21.2 || ^5.1.0",
|
|
63
|
+
"kysely": "^0.28.17 || ^0.29.0",
|
|
64
|
+
"mysql2": "^3.0.0",
|
|
65
|
+
"pg": "^8.0.0"
|
|
66
|
+
},
|
|
67
|
+
"peerDependenciesMeta": {
|
|
68
|
+
"@bufbuild/protobuf": {
|
|
69
|
+
"optional": true
|
|
70
|
+
},
|
|
71
|
+
"@grpc/grpc-js": {
|
|
72
|
+
"optional": true
|
|
73
|
+
},
|
|
74
|
+
"better-sqlite3": {
|
|
75
|
+
"optional": true
|
|
76
|
+
},
|
|
77
|
+
"express": {
|
|
78
|
+
"optional": true
|
|
79
|
+
},
|
|
80
|
+
"kysely": {
|
|
81
|
+
"optional": true
|
|
82
|
+
},
|
|
83
|
+
"mysql2": {
|
|
84
|
+
"optional": true
|
|
85
|
+
},
|
|
86
|
+
"pg": {
|
|
87
|
+
"optional": true
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
43
91
|
"node_modules/@asamuzakjp/css-color": {
|
|
44
92
|
"version": "5.1.11",
|
|
45
93
|
"resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-5.1.11.tgz",
|
|
@@ -180,13 +228,13 @@
|
|
|
180
228
|
}
|
|
181
229
|
},
|
|
182
230
|
"node_modules/@babel/parser": {
|
|
183
|
-
"version": "7.29.
|
|
184
|
-
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.
|
|
185
|
-
"integrity": "sha512-
|
|
231
|
+
"version": "7.29.9",
|
|
232
|
+
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.9.tgz",
|
|
233
|
+
"integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==",
|
|
186
234
|
"dev": true,
|
|
187
235
|
"license": "MIT",
|
|
188
236
|
"dependencies": {
|
|
189
|
-
"@babel/types": "^7.29.
|
|
237
|
+
"@babel/types": "^7.29.8"
|
|
190
238
|
},
|
|
191
239
|
"bin": {
|
|
192
240
|
"parser": "bin/babel-parser.js"
|
|
@@ -196,9 +244,9 @@
|
|
|
196
244
|
}
|
|
197
245
|
},
|
|
198
246
|
"node_modules/@babel/types": {
|
|
199
|
-
"version": "7.29.
|
|
200
|
-
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.
|
|
201
|
-
"integrity": "sha512-
|
|
247
|
+
"version": "7.29.8",
|
|
248
|
+
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
|
|
249
|
+
"integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
|
|
202
250
|
"dev": true,
|
|
203
251
|
"license": "MIT",
|
|
204
252
|
"dependencies": {
|
|
@@ -560,12 +608,12 @@
|
|
|
560
608
|
}
|
|
561
609
|
},
|
|
562
610
|
"node_modules/@modelcontextprotocol/sdk": {
|
|
563
|
-
"version": "1.
|
|
564
|
-
"resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.
|
|
565
|
-
"integrity": "sha512-
|
|
611
|
+
"version": "1.31.0",
|
|
612
|
+
"resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.31.0.tgz",
|
|
613
|
+
"integrity": "sha512-UvTMgnNlnIBO/22ob2RcVGDlcvOslQs8T59+FTGdA0L27a39fdGF/EDETNtDVK4DZGpwomlsYpRdA8UXcVL/pw==",
|
|
566
614
|
"license": "MIT",
|
|
567
615
|
"dependencies": {
|
|
568
|
-
"@hono/node-server": "^1.19.9",
|
|
616
|
+
"@hono/node-server": "^1.19.9 || ^2.0.5",
|
|
569
617
|
"ajv": "^8.17.1",
|
|
570
618
|
"ajv-formats": "^3.0.1",
|
|
571
619
|
"content-type": "^1.0.5",
|
|
@@ -1459,14 +1507,14 @@
|
|
|
1459
1507
|
}
|
|
1460
1508
|
},
|
|
1461
1509
|
"node_modules/@vue/compiler-core": {
|
|
1462
|
-
"version": "3.5.
|
|
1463
|
-
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.
|
|
1464
|
-
"integrity": "sha512-
|
|
1510
|
+
"version": "3.5.42",
|
|
1511
|
+
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.42.tgz",
|
|
1512
|
+
"integrity": "sha512-2Ye1ilMtKXxl8qZUrQ5j0CdgenFp/HFQmta6rfRyfEsTG69L6Wk+tWuNoHYHMx9E8tF2Slvdg1FuwDvAXdy1LQ==",
|
|
1465
1513
|
"dev": true,
|
|
1466
1514
|
"license": "MIT",
|
|
1467
1515
|
"dependencies": {
|
|
1468
|
-
"@babel/parser": "^7.29.
|
|
1469
|
-
"@vue/shared": "3.5.
|
|
1516
|
+
"@babel/parser": "^7.29.8",
|
|
1517
|
+
"@vue/shared": "3.5.42",
|
|
1470
1518
|
"entities": "^7.0.1",
|
|
1471
1519
|
"estree-walker": "^2.0.2",
|
|
1472
1520
|
"source-map-js": "^1.2.1"
|
|
@@ -1486,28 +1534,28 @@
|
|
|
1486
1534
|
}
|
|
1487
1535
|
},
|
|
1488
1536
|
"node_modules/@vue/compiler-dom": {
|
|
1489
|
-
"version": "3.5.
|
|
1490
|
-
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.
|
|
1491
|
-
"integrity": "sha512-
|
|
1537
|
+
"version": "3.5.42",
|
|
1538
|
+
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.42.tgz",
|
|
1539
|
+
"integrity": "sha512-qbhQZEFmycr+ni/qyuccS4sucNN7VAbDfbkvNxWOX2VfgFm90MNs3/UhRNKoPMEIVn0F8gdlYjLPvqxHwHeQOA==",
|
|
1492
1540
|
"dev": true,
|
|
1493
1541
|
"license": "MIT",
|
|
1494
1542
|
"dependencies": {
|
|
1495
|
-
"@vue/compiler-core": "3.5.
|
|
1496
|
-
"@vue/shared": "3.5.
|
|
1543
|
+
"@vue/compiler-core": "3.5.42",
|
|
1544
|
+
"@vue/shared": "3.5.42"
|
|
1497
1545
|
}
|
|
1498
1546
|
},
|
|
1499
1547
|
"node_modules/@vue/compiler-sfc": {
|
|
1500
|
-
"version": "3.5.
|
|
1501
|
-
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.
|
|
1502
|
-
"integrity": "sha512-
|
|
1548
|
+
"version": "3.5.42",
|
|
1549
|
+
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.42.tgz",
|
|
1550
|
+
"integrity": "sha512-fkCAFB4okcAANGMThboWnScp/gzWjU0ZSkVnjTIiplmMDq2uq0tIB3j+xVu4rhv5rvOgBySCysudmbMd6xRRqw==",
|
|
1503
1551
|
"dev": true,
|
|
1504
1552
|
"license": "MIT",
|
|
1505
1553
|
"dependencies": {
|
|
1506
|
-
"@babel/parser": "^7.29.
|
|
1507
|
-
"@vue/compiler-core": "3.5.
|
|
1508
|
-
"@vue/compiler-dom": "3.5.
|
|
1509
|
-
"@vue/compiler-ssr": "3.5.
|
|
1510
|
-
"@vue/shared": "3.5.
|
|
1554
|
+
"@babel/parser": "^7.29.8",
|
|
1555
|
+
"@vue/compiler-core": "3.5.42",
|
|
1556
|
+
"@vue/compiler-dom": "3.5.42",
|
|
1557
|
+
"@vue/compiler-ssr": "3.5.42",
|
|
1558
|
+
"@vue/shared": "3.5.42",
|
|
1511
1559
|
"estree-walker": "^2.0.2",
|
|
1512
1560
|
"magic-string": "^0.30.21",
|
|
1513
1561
|
"postcss": "^8.5.19",
|
|
@@ -1515,14 +1563,14 @@
|
|
|
1515
1563
|
}
|
|
1516
1564
|
},
|
|
1517
1565
|
"node_modules/@vue/compiler-ssr": {
|
|
1518
|
-
"version": "3.5.
|
|
1519
|
-
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.
|
|
1520
|
-
"integrity": "sha512-
|
|
1566
|
+
"version": "3.5.42",
|
|
1567
|
+
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.42.tgz",
|
|
1568
|
+
"integrity": "sha512-xmLk3wLkbizPAiLyomjgFFosf2ys9b5Ghb+oh/k2tnvipNz8OFrQOiTcWCzyK7MpBp9KkyGtfvgfLUivbmuGYA==",
|
|
1521
1569
|
"dev": true,
|
|
1522
1570
|
"license": "MIT",
|
|
1523
1571
|
"dependencies": {
|
|
1524
|
-
"@vue/compiler-dom": "3.5.
|
|
1525
|
-
"@vue/shared": "3.5.
|
|
1572
|
+
"@vue/compiler-dom": "3.5.42",
|
|
1573
|
+
"@vue/shared": "3.5.42"
|
|
1526
1574
|
}
|
|
1527
1575
|
},
|
|
1528
1576
|
"node_modules/@vue/devtools-api": {
|
|
@@ -1572,55 +1620,55 @@
|
|
|
1572
1620
|
}
|
|
1573
1621
|
},
|
|
1574
1622
|
"node_modules/@vue/reactivity": {
|
|
1575
|
-
"version": "3.5.
|
|
1576
|
-
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.
|
|
1577
|
-
"integrity": "sha512-
|
|
1623
|
+
"version": "3.5.42",
|
|
1624
|
+
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.42.tgz",
|
|
1625
|
+
"integrity": "sha512-TzNNfKpb7hDxbQltwAut8VDQA5YP+BuRlxntHUuRjyKwlMvmAPbs3unhCvieijifY6vFfVBwsS7wG/C7uq+bEQ==",
|
|
1578
1626
|
"dev": true,
|
|
1579
1627
|
"license": "MIT",
|
|
1580
1628
|
"dependencies": {
|
|
1581
|
-
"@vue/shared": "3.5.
|
|
1629
|
+
"@vue/shared": "3.5.42"
|
|
1582
1630
|
}
|
|
1583
1631
|
},
|
|
1584
1632
|
"node_modules/@vue/runtime-core": {
|
|
1585
|
-
"version": "3.5.
|
|
1586
|
-
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.
|
|
1587
|
-
"integrity": "sha512-
|
|
1633
|
+
"version": "3.5.42",
|
|
1634
|
+
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.42.tgz",
|
|
1635
|
+
"integrity": "sha512-9uACtuHs7vJGkm5Bp3xu4xRDLFTIYy5DgxpToVjqGIAhAEKwQfsaLvKINhM6nFVp6bZPRFGdDqd1g52MqKsotA==",
|
|
1588
1636
|
"dev": true,
|
|
1589
1637
|
"license": "MIT",
|
|
1590
1638
|
"dependencies": {
|
|
1591
|
-
"@vue/reactivity": "3.5.
|
|
1592
|
-
"@vue/shared": "3.5.
|
|
1639
|
+
"@vue/reactivity": "3.5.42",
|
|
1640
|
+
"@vue/shared": "3.5.42"
|
|
1593
1641
|
}
|
|
1594
1642
|
},
|
|
1595
1643
|
"node_modules/@vue/runtime-dom": {
|
|
1596
|
-
"version": "3.5.
|
|
1597
|
-
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.
|
|
1598
|
-
"integrity": "sha512-
|
|
1644
|
+
"version": "3.5.42",
|
|
1645
|
+
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.42.tgz",
|
|
1646
|
+
"integrity": "sha512-rsCmhiWLaRxGltLwhlCWyYkFn7WAbKRh0q17eZ1A6Dq6eqc2ACQ61IIryxz0LrsvCzHSilLA9JHovVwM8CNE2g==",
|
|
1599
1647
|
"dev": true,
|
|
1600
1648
|
"license": "MIT",
|
|
1601
1649
|
"dependencies": {
|
|
1602
|
-
"@vue/reactivity": "3.5.
|
|
1603
|
-
"@vue/runtime-core": "3.5.
|
|
1604
|
-
"@vue/shared": "3.5.
|
|
1650
|
+
"@vue/reactivity": "3.5.42",
|
|
1651
|
+
"@vue/runtime-core": "3.5.42",
|
|
1652
|
+
"@vue/shared": "3.5.42",
|
|
1605
1653
|
"csstype": "^3.2.3"
|
|
1606
1654
|
}
|
|
1607
1655
|
},
|
|
1608
1656
|
"node_modules/@vue/server-renderer": {
|
|
1609
|
-
"version": "3.5.
|
|
1610
|
-
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.
|
|
1611
|
-
"integrity": "sha512-
|
|
1657
|
+
"version": "3.5.42",
|
|
1658
|
+
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.42.tgz",
|
|
1659
|
+
"integrity": "sha512-2++5dUyYS4gvo7xQXSECUDhB7TS0aOl5SeVfC5qSq1Jgfhjvegw1zqhwTIR3imZ+QYPJQw9gfcFvXGAjGZ7ajQ==",
|
|
1612
1660
|
"dev": true,
|
|
1613
1661
|
"license": "MIT",
|
|
1614
1662
|
"dependencies": {
|
|
1615
|
-
"@vue/compiler-ssr": "3.5.
|
|
1616
|
-
"@vue/runtime-dom": "3.5.
|
|
1617
|
-
"@vue/shared": "3.5.
|
|
1663
|
+
"@vue/compiler-ssr": "3.5.42",
|
|
1664
|
+
"@vue/runtime-dom": "3.5.42",
|
|
1665
|
+
"@vue/shared": "3.5.42"
|
|
1618
1666
|
}
|
|
1619
1667
|
},
|
|
1620
1668
|
"node_modules/@vue/shared": {
|
|
1621
|
-
"version": "3.5.
|
|
1622
|
-
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.
|
|
1623
|
-
"integrity": "sha512-
|
|
1669
|
+
"version": "3.5.42",
|
|
1670
|
+
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.42.tgz",
|
|
1671
|
+
"integrity": "sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g==",
|
|
1624
1672
|
"dev": true,
|
|
1625
1673
|
"license": "MIT"
|
|
1626
1674
|
},
|
|
@@ -4366,9 +4414,9 @@
|
|
|
4366
4414
|
"license": "ISC"
|
|
4367
4415
|
},
|
|
4368
4416
|
"node_modules/proxy-addr": {
|
|
4369
|
-
"version": "2.0.
|
|
4370
|
-
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.
|
|
4371
|
-
"integrity": "sha512-
|
|
4417
|
+
"version": "2.0.8",
|
|
4418
|
+
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.8.tgz",
|
|
4419
|
+
"integrity": "sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==",
|
|
4372
4420
|
"license": "MIT",
|
|
4373
4421
|
"dependencies": {
|
|
4374
4422
|
"forwarded": "0.2.0",
|
|
@@ -4376,6 +4424,10 @@
|
|
|
4376
4424
|
},
|
|
4377
4425
|
"engines": {
|
|
4378
4426
|
"node": ">= 0.10"
|
|
4427
|
+
},
|
|
4428
|
+
"funding": {
|
|
4429
|
+
"type": "opencollective",
|
|
4430
|
+
"url": "https://opencollective.com/express"
|
|
4379
4431
|
}
|
|
4380
4432
|
},
|
|
4381
4433
|
"node_modules/punycode": {
|
|
@@ -4662,9 +4714,9 @@
|
|
|
4662
4714
|
}
|
|
4663
4715
|
},
|
|
4664
4716
|
"node_modules/shell-quote": {
|
|
4665
|
-
"version": "1.
|
|
4666
|
-
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.
|
|
4667
|
-
"integrity": "sha512-
|
|
4717
|
+
"version": "1.11.0",
|
|
4718
|
+
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.11.0.tgz",
|
|
4719
|
+
"integrity": "sha512-JdxDPD0DBTyu08pq0kPC0xSNet/qsU07qT6IsX1AS8oO2ICNRY4ldNa8OAI6PuwAH8tG3lxEhbqmyp4Dw4036g==",
|
|
4668
4720
|
"dev": true,
|
|
4669
4721
|
"license": "MIT",
|
|
4670
4722
|
"engines": {
|
|
@@ -4767,9 +4819,9 @@
|
|
|
4767
4819
|
}
|
|
4768
4820
|
},
|
|
4769
4821
|
"node_modules/source-map-js": {
|
|
4770
|
-
"version": "1.2.
|
|
4771
|
-
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.
|
|
4772
|
-
"integrity": "sha512-
|
|
4822
|
+
"version": "1.2.2",
|
|
4823
|
+
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz",
|
|
4824
|
+
"integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==",
|
|
4773
4825
|
"dev": true,
|
|
4774
4826
|
"license": "BSD-3-Clause",
|
|
4775
4827
|
"engines": {
|
|
@@ -5359,17 +5411,17 @@
|
|
|
5359
5411
|
"license": "MIT"
|
|
5360
5412
|
},
|
|
5361
5413
|
"node_modules/vue": {
|
|
5362
|
-
"version": "3.5.
|
|
5363
|
-
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.
|
|
5364
|
-
"integrity": "sha512
|
|
5414
|
+
"version": "3.5.42",
|
|
5415
|
+
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.42.tgz",
|
|
5416
|
+
"integrity": "sha512-4RyHQTbQvOPs3MfvUO1Sg0YRrKNnA0mAVtvpd12Tg1fKDN7OHBUl1IqSn8zGJjK9nI3NkNp8cgTpVrSZC5TTcA==",
|
|
5365
5417
|
"dev": true,
|
|
5366
5418
|
"license": "MIT",
|
|
5367
5419
|
"dependencies": {
|
|
5368
|
-
"@vue/compiler-dom": "3.5.
|
|
5369
|
-
"@vue/compiler-sfc": "3.5.
|
|
5370
|
-
"@vue/runtime-dom": "3.5.
|
|
5371
|
-
"@vue/server-renderer": "3.5.
|
|
5372
|
-
"@vue/shared": "3.5.
|
|
5420
|
+
"@vue/compiler-dom": "3.5.42",
|
|
5421
|
+
"@vue/compiler-sfc": "3.5.42",
|
|
5422
|
+
"@vue/runtime-dom": "3.5.42",
|
|
5423
|
+
"@vue/server-renderer": "3.5.42",
|
|
5424
|
+
"@vue/shared": "3.5.42"
|
|
5373
5425
|
},
|
|
5374
5426
|
"peerDependencies": {
|
|
5375
5427
|
"typescript": "*"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fuli-context",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0-beta.1",
|
|
4
4
|
"description": "Local-first collaboration relationship graph for AI agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
"docs/agent-conversations-and-collaboration.md",
|
|
15
15
|
"docs/employee-agents.md",
|
|
16
16
|
"docs/agent-interface-architecture.md",
|
|
17
|
+
"docs/roundtable-beta-testing.md",
|
|
18
|
+
"docs/roundtable-beta-validation.md",
|
|
19
|
+
"docs/roundtable-research.md",
|
|
17
20
|
"examples/external-knowledge/markdown-folder.mjs",
|
|
18
21
|
"graph-provider/Dockerfile",
|
|
19
22
|
"graph-provider/pyproject.toml",
|
|
@@ -74,8 +77,9 @@
|
|
|
74
77
|
},
|
|
75
78
|
"license": "Apache-2.0",
|
|
76
79
|
"dependencies": {
|
|
80
|
+
"@a2a-js/sdk": "1.3.0",
|
|
77
81
|
"@hono/node-server": "2.0.12",
|
|
78
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
82
|
+
"@modelcontextprotocol/sdk": "^1.31.0",
|
|
79
83
|
"zod": "^4.4.3"
|
|
80
84
|
},
|
|
81
85
|
"devDependencies": {
|
|
@@ -92,7 +96,7 @@
|
|
|
92
96
|
"typescript": "~6.0.0",
|
|
93
97
|
"vite": "^8.1.5",
|
|
94
98
|
"vitest": "^4.1.10",
|
|
95
|
-
"vue": "^3.5.
|
|
99
|
+
"vue": "^3.5.42",
|
|
96
100
|
"vue-i18n": "^11.4.8",
|
|
97
101
|
"vue-router": "^5.2.0",
|
|
98
102
|
"vue-tsc": "^3.3.8"
|
|
@@ -52,6 +52,10 @@ current working directory. It resolves the exact active project without requirin
|
|
|
52
52
|
copy an ID, searches that child project first, and then includes only inheritable knowledge from
|
|
53
53
|
authorized parents or shared-source projects. Use `search_knowledge_graph` for personal-global
|
|
54
54
|
context, explicitly named extra projects, subscribed public projects, or advanced scoped queries.
|
|
55
|
+
An already resolved temporary project is an active private scope for this task. Pass its exact
|
|
56
|
+
returned `personalProjectId` alongside the directory; without a directory, use
|
|
57
|
+
`search_knowledge_graph` with that exact project and personal space. Do not re-resolve it from
|
|
58
|
+
a repository name, and never omit its `personalProjectId` or move its facts to personal-global.
|
|
55
59
|
Use `search_connected_knowledge` for a project-bound third-party source or explicitly selected
|
|
56
60
|
public project. Keep its source sets separate and obey the project's conflict policy;
|
|
57
61
|
`agent_decide` affects only the current response and never mutates or confirms a source.
|
|
@@ -104,7 +108,7 @@ URL, route, deployment, document, file, or where a durable artifact is located.
|
|
|
104
108
|
Personal retrieval always includes the bounded personal-global profile. For a local personal
|
|
105
109
|
project, pass its exact `personalProjectId`; if the user explicitly names another personal
|
|
106
110
|
project, resolve it with `list_personal_projects` and add only that exact ID through
|
|
107
|
-
`contextPersonalProjectIds`. Without an active local project, search only the personal-global
|
|
111
|
+
`contextPersonalProjectIds`. Without an active local or resolved temporary project, search only the personal-global
|
|
108
112
|
profile. For public context, pass only the active or explicitly named subscribed public project
|
|
109
113
|
IDs; never search every personal project, every subscription, or the whole graph by default.
|
|
110
114
|
Use the current repository, the user's wording, and `list_knowledge_spaces` to resolve scope.
|
|
@@ -228,11 +232,15 @@ responsible for decisions, integration, and final verification. Do not split a s
|
|
|
228
232
|
coupled task merely to create more workers.
|
|
229
233
|
|
|
230
234
|
For an eligible task, call `coordinate_project_agent_task` once with the exact current
|
|
231
|
-
`projectPath
|
|
235
|
+
`projectPath` when available, one stable idempotency key, an explicit complexity hint when known, and focused
|
|
232
236
|
context queries. Enable its parallel plan only when there are at least two conflict-free
|
|
233
237
|
workstreams with independent verification; state each workstream boundary. The Provider chooses
|
|
234
238
|
the lead and collaborators from active project assignments, preferring Agents with relevant
|
|
235
239
|
project history. Explicit user-selected Agents and locked policies remain higher priority.
|
|
240
|
+
When no registered project matches, coordination may return an isolated temporary project;
|
|
241
|
+
keep its exact returned ID for this task. Ambiguous candidates still require a choice. Temporary
|
|
242
|
+
scope creation is not Agent recruitment approval or proof of execution; follow the returned
|
|
243
|
+
recruitment/authorization state and worker plan.
|
|
236
244
|
|
|
237
245
|
Treat the returned durable Agent identity and a host worker as different things. A durable Agent
|
|
238
246
|
keeps its project assignment, preferences, task history, and Agent-scoped graph memory while idle;
|
|
@@ -271,11 +279,13 @@ before the remaining workers have reported their tools, session evidence, and ex
|
|
|
271
279
|
|
|
272
280
|
When a FULI task or task view returns a non-empty Provider `executionSummary`, append a compact
|
|
273
281
|
Markdown table with one row per actual worker. Include the worker label and occupation emoji,
|
|
274
|
-
actual executor/tool
|
|
275
|
-
session (`
|
|
282
|
+
actual executor/tool and `workerRuntime.application`, work summary, terminal `workerStatus`/status,
|
|
283
|
+
worker session (`workerRuntime.sessionId`, or a worker session link only when supplied), and Token usage.
|
|
284
|
+
Label `sourceApplication` and `sourceSessionId` separately as the reporting host. They do not
|
|
285
|
+
identify an external worker; do not substitute them for missing worker evidence.
|
|
276
286
|
Use only the source-labelled cumulative `tokenUsage` reported for that worker. If it is absent,
|
|
277
287
|
show `not reported`; never estimate it or copy a conversation-wide total into a worker row. If no
|
|
278
|
-
session link exists, show `
|
|
288
|
+
worker session link exists, show `workerRuntime.sessionId` or `not reported`; never invent a link. This applies only
|
|
279
289
|
to Provider-reported actual workers. When empty `executionSummary` is returned, omit rows; an absent
|
|
280
290
|
`executionSummary` also omits rows. Configured, allowed, or available clients/executors are not evidence
|
|
281
291
|
of actual use. Keep this Agent-agnostic; client-specific details and work-kind routing remain at
|
|
@@ -380,6 +390,11 @@ their child projects.
|
|
|
380
390
|
|
|
381
391
|
## Resolve Or Create The Local Project
|
|
382
392
|
|
|
393
|
+
Do not run this registration flow for an already resolved temporary project. Keep its isolated
|
|
394
|
+
scope and retained audit history; creating or migrating to a registered project requires a
|
|
395
|
+
separate explicit request. Disposable output uses `retain_nothing` with a truthful work log;
|
|
396
|
+
any reusable project candidates remain in the returned temporary scope, subject to capture policy.
|
|
397
|
+
|
|
383
398
|
Before the first project-scoped capture in a repository:
|
|
384
399
|
|
|
385
400
|
1. Call `list_knowledge_spaces`, then `list_personal_projects` for the active personal space.
|
|
@@ -761,7 +761,7 @@ export const GRAPH_TOOL_DEFINITIONS = [
|
|
|
761
761
|
{
|
|
762
762
|
name: 'coordinate_project_agent_task',
|
|
763
763
|
title: 'WRITE · Prepare a host-executed Agent team',
|
|
764
|
-
description: 'Resolve the exact local project, let the Provider coordinator route one durable task
|
|
764
|
+
description: 'Resolve the exact local project, or create an isolated temporary task scope when no project matches, then let the Provider coordinator route one durable task and assemble an isolated context bundle for every selected lead/collaborator. Ambiguous matches require exact selection. Pass the current taskContextToken so temporary scope and a newly recruited lead bind to the owned lifecycle; otherwise provide a stable sourceSessionId and idempotencyKey for retries. Temporary projects retain audit history, never become implicit directory bindings, and default to audited task-only recruitment under the existing HR policy; explicit durable recruitment requests remain explicit. When recruiting, HR should set recruitmentProfile.character from the role responsibilities and preserve user expectations; configured traits must never be presented as proven growth. Fuli persists identity, staffing, and memory scope; the host must start real workers, report their concrete evidence, and finish their lifecycle. A routing recommendation never proves that a worker started.',
|
|
765
765
|
inputSchema: projectAgentTaskCoordinateInput
|
|
766
766
|
},
|
|
767
767
|
{
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
const UI_MUTATION_PARITY = Object.freeze([
|
|
2
|
+
local('POST /api/roundtables', 'Creating rooms, granting private identity context and selecting execution permissions requires the local user.'),
|
|
3
|
+
local('POST /api/roundtables/:roomId/invites', 'Seat invitations are local-user issued scoped capabilities.'),
|
|
4
|
+
local('POST /api/roundtables/:roomId/revoke', 'Revoking participation requires the room owner.'),
|
|
5
|
+
local('POST /api/roundtables/:roomId/control', 'Starting, changing limits, stopping or human acceptance requires the room owner.'),
|
|
6
|
+
local('POST /api/roundtables/:roomId/messages', 'Human input must not be impersonated by an Agent.'),
|
|
2
7
|
agent('POST /api/agent-conversations/query', 'list_agent_conversations', 'read_agent_conversation', 'get_agent_conversation_policy'),
|
|
3
8
|
agent('PUT /api/agent-conversations/policy', 'update_agent_conversation_policy'),
|
|
4
9
|
agent('POST /api/agent-attention', 'request_agent_attention'),
|
|
@@ -168,7 +168,7 @@ export const projectAgentTaskSubmitInput = objectSchema({
|
|
|
168
168
|
]);
|
|
169
169
|
export const projectAgentTaskCoordinateInput = objectSchema({
|
|
170
170
|
taskContextToken: id,
|
|
171
|
-
projectPath: boundedString(4096),
|
|
171
|
+
projectPath: { ...boundedString(4096), description: 'Current absolute directory, when available. An unmatched or omitted path gets an isolated task-scoped temporary project during explicit coordination; ambiguous matches still require selection.' },
|
|
172
172
|
personalProjectId: {
|
|
173
173
|
...nullableStringSchema(), minLength: 1, maxLength: 128,
|
|
174
174
|
description: 'Explicit existing project ID when the directory has no exact match. A conflicting exact path match is rejected.'
|
|
@@ -194,7 +194,7 @@ export const projectAgentTaskCoordinateInput = objectSchema({
|
|
|
194
194
|
contextLimitPerQuery: integerSchema({ minimum: 1, maximum: 20 }),
|
|
195
195
|
includePendingContext: booleanSchema()
|
|
196
196
|
}, [
|
|
197
|
-
'
|
|
197
|
+
'idempotencyKey', 'title', 'objective', 'workKind',
|
|
198
198
|
'routingReason', 'contextQueries'
|
|
199
199
|
]);
|
|
200
200
|
export const projectAgentTaskActivityInput = objectSchema({
|
package/src/agent-tools.js
CHANGED
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
import { GRAPH_TOOL_DEFINITIONS } from './agent-tools/graph-definitions.js';
|
|
2
2
|
import { dispatchGraphTool } from './agent-tools/graph-handlers.js';
|
|
3
3
|
import { runWithAgentRequestContext } from './app/agent-request-context.js';
|
|
4
|
+
import { ROUNDTABLE_TOOL_DEFINITIONS, ROUNDTABLE_TOOL_NAMES, callRoundtableTool } from './roundtables/tool-contract.js';
|
|
5
|
+
import { ApplicationError } from './app/application-error.js';
|
|
4
6
|
|
|
5
|
-
const TOOL_DEFINITIONS = [...GRAPH_TOOL_DEFINITIONS];
|
|
7
|
+
const TOOL_DEFINITIONS = [...GRAPH_TOOL_DEFINITIONS, ...ROUNDTABLE_TOOL_DEFINITIONS];
|
|
6
8
|
|
|
7
9
|
export function listAgentTools() {
|
|
8
10
|
return clone(TOOL_DEFINITIONS);
|
|
9
11
|
}
|
|
10
12
|
|
|
11
13
|
export function callAgentTool(app, name, input = {}, requestContext = null) {
|
|
14
|
+
if (ROUNDTABLE_TOOL_NAMES.includes(name) && app.getAgentAccessPolicy?.().enabled === false) {
|
|
15
|
+
throw new ApplicationError('agent_access_disabled', 'Agent access is disabled in the local console');
|
|
16
|
+
}
|
|
12
17
|
return runWithAgentRequestContext(
|
|
13
18
|
requestContext,
|
|
14
|
-
() =>
|
|
19
|
+
() => ROUNDTABLE_TOOL_NAMES.includes(name)
|
|
20
|
+
? callRoundtableTool(app.roundtables, name, input)
|
|
21
|
+
: dispatchGraphTool(app, name, input)
|
|
15
22
|
);
|
|
16
23
|
}
|
|
17
24
|
|