@numa-tech/numa 1.25.0 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/business-issuer.js +3 -1
  2. package/dist/business-issuer.js.map +1 -1
  3. package/dist/cli.js +3 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config.d.ts +1 -1
  6. package/dist/config.js +2 -2
  7. package/dist/config.js.map +1 -1
  8. package/dist/kb/catalog.js +33 -2
  9. package/dist/kb/catalog.js.map +1 -1
  10. package/dist/kb/chat-stream.d.ts +5 -0
  11. package/dist/kb/chat-stream.js +61 -0
  12. package/dist/kb/chat-stream.js.map +1 -0
  13. package/dist/kb/client.d.ts +75 -6
  14. package/dist/kb/client.js +104 -7
  15. package/dist/kb/client.js.map +1 -1
  16. package/dist/kb/commands.js +92 -7
  17. package/dist/kb/commands.js.map +1 -1
  18. package/dist/kb/config.d.ts +14 -2
  19. package/dist/kb/config.js +21 -7
  20. package/dist/kb/config.js.map +1 -1
  21. package/dist/kb/management-commands.d.ts +7 -0
  22. package/dist/kb/management-commands.js +86 -0
  23. package/dist/kb/management-commands.js.map +1 -0
  24. package/dist/kb/management-schemas.d.ts +106 -0
  25. package/dist/kb/management-schemas.js +33 -0
  26. package/dist/kb/management-schemas.js.map +1 -0
  27. package/dist/kb/transfers.d.ts +4 -0
  28. package/dist/kb/transfers.js +11 -4
  29. package/dist/kb/transfers.js.map +1 -1
  30. package/dist/kb/upload-decisions.d.ts +28 -0
  31. package/dist/kb/upload-decisions.js +23 -0
  32. package/dist/kb/upload-decisions.js.map +1 -0
  33. package/dist/kb/upload-state.d.ts +1 -0
  34. package/dist/kb/upload-state.js +1 -0
  35. package/dist/kb/upload-state.js.map +1 -1
  36. package/dist/kb/web-login.d.ts +10 -0
  37. package/dist/kb/web-login.js +25 -0
  38. package/dist/kb/web-login.js.map +1 -0
  39. package/dist/kb/web-page.d.ts +3 -0
  40. package/dist/kb/web-page.js +114 -0
  41. package/dist/kb/web-page.js.map +1 -0
  42. package/dist/kb/web-queue.d.ts +61 -0
  43. package/dist/kb/web-queue.js +101 -0
  44. package/dist/kb/web-queue.js.map +1 -0
  45. package/dist/kb/web.d.ts +26 -0
  46. package/dist/kb/web.js +234 -0
  47. package/dist/kb/web.js.map +1 -0
  48. package/dist/local-web/context-menu.d.ts +2 -0
  49. package/dist/local-web/context-menu.js +53 -0
  50. package/dist/local-web/context-menu.js.map +1 -0
  51. package/dist/local-web/file-workspace-style.d.ts +2 -0
  52. package/dist/local-web/file-workspace-style.js +58 -0
  53. package/dist/local-web/file-workspace-style.js.map +1 -0
  54. package/dist/local-web/file-workspace.d.ts +2 -0
  55. package/dist/local-web/file-workspace.js +39 -0
  56. package/dist/local-web/file-workspace.js.map +1 -0
  57. package/dist/local-web/security.d.ts +6 -0
  58. package/dist/local-web/security.js +51 -0
  59. package/dist/local-web/security.js.map +1 -0
  60. package/dist/login-recovery.js +7 -2
  61. package/dist/login-recovery.js.map +1 -1
  62. package/dist/oss/transfer-queue.d.ts +7 -51
  63. package/dist/oss/transfer-queue.js +15 -308
  64. package/dist/oss/transfer-queue.js.map +1 -1
  65. package/dist/oss/web-page.js +21 -103
  66. package/dist/oss/web-page.js.map +1 -1
  67. package/dist/oss/web.js +4 -45
  68. package/dist/oss/web.js.map +1 -1
  69. package/dist/platform-profile.d.ts +25 -1
  70. package/dist/platform-profile.js +44 -1
  71. package/dist/platform-profile.js.map +1 -1
  72. package/dist/transfers/persistent-queue.d.ts +65 -0
  73. package/dist/transfers/persistent-queue.js +312 -0
  74. package/dist/transfers/persistent-queue.js.map +1 -0
  75. package/docs/design/kb-capability-upgrade.md +36 -0
  76. package/docs/design/kb-web-workspace.md +97 -0
  77. package/docs/kb-access.md +72 -0
  78. package/package.json +9 -7
  79. package/scripts/export-kb-contract.py +25 -6
  80. package/src/kb/openapi-contract.json +2297 -566
@@ -31,15 +31,12 @@ AGENT_OPERATIONS = {
31
31
  ("post", "/upload-sessions/{session_id}/complete"): "complete_direct_upload",
32
32
  ("delete", "/upload-sessions/{session_id}"): "cancel_direct_upload",
33
33
  ("get", "/documents/{document_id}/download-ticket"): "get_document_download",
34
- ("post", "/archives"): "start_async_archive",
35
34
  ("get", "/archives/{archive_id}"): "get_archive_status",
36
35
  ("post", "/archives/{archive_id}/retry"): "retry_archive",
37
36
  }
38
37
  PREFIX = "/api/v1/external/agent"
39
38
  OPERATIONS = {(method, PREFIX + suffix): name
40
39
  for (method, suffix), name in AGENT_OPERATIONS.items()} | {
41
- ("post", "/api/v1/external/documents/batch-upload"):
42
- "upload_external_documents_api_v1_external_documents_batch_upload_post",
43
40
  ("get", "/api/v1/external/batches/{batch_id}"):
44
41
  "get_external_batch_api_v1_external_batches__batch_id__get",
45
42
  ("post", "/api/v1/external/batches/{batch_id}/retry"):
@@ -49,6 +46,24 @@ OPERATIONS = {(method, PREFIX + suffix): name
49
46
  }
50
47
 
51
48
 
49
+ NATIVE_OPERATIONS = {
50
+ '/collections/{collection_id}':['get','put','delete'],
51
+ '/collections/{collection_id}/transfer':['post'],
52
+ '/collections/{collection_id}/members':['get','put'],
53
+ '/collections/{collection_id}/members/{global_uid}':['delete'],
54
+ '/users/search':['get'], '/documents':['get'],
55
+ '/documents/{document_id}':['get','put','delete'],
56
+ '/documents/{document_id}/chunks':['get'], '/documents/{document_id}/assets':['get'],
57
+ '/documents/{document_id}/versions':['get'], '/documents/{document_id}/change-history':['get'],
58
+ '/documents/{document_id}/switch-version':['post'], '/documents/{document_id}/reindex':['post'],
59
+ '/batches':['get'], '/batch/{batch_id}/cancel':['post'], '/ingest-jobs':['get'],
60
+ '/conflict-reviews':['get'], '/conflict-reviews/{conflict_id}/resolve':['post'],
61
+ '/chat/stream':['post'], '/chat/sessions':['get','post'], '/chat/sessions/{session_id}':['get','delete'],
62
+ '/upload-sessions/preflight':['post'],
63
+ }
64
+ OPERATIONS.update({(method, '/api/v1/kb'+path):None for path,methods in NATIVE_OPERATIONS.items() for method in methods})
65
+
66
+
52
67
  def forbid_network(event: str, _args: tuple) -> None:
53
68
  if event in {"socket.connect", "socket.connect_ex", "socket.getaddrinfo", "socket.bind"}:
54
69
  raise RuntimeError("KB contract export must remain offline")
@@ -78,6 +93,8 @@ def export_contract(kb_root: Path) -> dict:
78
93
  from fastapi import FastAPI
79
94
  from backend.external.agent_routes import router
80
95
  from backend.external.routes import router as external_router
96
+ from backend.routes.knowledge_base import router as kb_router
97
+ from backend.routes.direct_uploads import router as upload_router
81
98
  from backend.knowledge_base.constants import (
82
99
  MAX_EXTERNAL_FILES_PER_BATCH,
83
100
  MAX_FILES_PER_BATCH,
@@ -89,11 +106,13 @@ def export_contract(kb_root: Path) -> dict:
89
106
  app = FastAPI(title="Knowledge Base Agent API")
90
107
  app.include_router(router, prefix="/api/v1")
91
108
  app.include_router(external_router, prefix="/api/v1")
109
+ app.include_router(kb_router,prefix="/api/v1")
110
+ app.include_router(upload_router,prefix="/api/v1")
92
111
  original = app.openapi()
93
112
  paths = {}
94
113
  for (method, path), operation_id in OPERATIONS.items():
95
114
  operation = original.get("paths", {}).get(path, {}).get(method)
96
- if operation is None or operation.get("operationId") != operation_id:
115
+ if operation is None or (operation_id is not None and operation.get("operationId") != operation_id):
97
116
  raise ValueError(f"KB route contract changed: {method.upper()} {path}")
98
117
  paths.setdefault(path, {})[method] = operation
99
118
 
@@ -112,10 +131,10 @@ def export_contract(kb_root: Path) -> dict:
112
131
  "paths": paths,
113
132
  "components": {"schemas": selected},
114
133
  "x-numa-contract": {
115
- "sources": ["backend/external/agent_routes.py", "backend/external/routes.py"],
134
+ "sources": ["backend/external/agent_routes.py", "backend/external/routes.py", "backend/routes/knowledge_base.py", "backend/routes/direct_uploads.py"],
116
135
  "generator": "scripts/export-kb-contract.py",
117
136
  "response_validation": "Responses are free-form upstream; validate consumed fields at runtime.",
118
- "authentication": "X-Api-Key; deployments may additionally require Bearer application authorization.",
137
+ "authentication": "Keycloak Bearer JWT for native KB routes; legacy Agent API deployments may also support X-Api-Key.",
119
138
  "parse_supported_extensions": sorted(SUPPORTED_EXTS),
120
139
  "default_upload_limits": {
121
140
  "max_files_per_batch": MAX_FILES_PER_BATCH,