@polpo-ai/dashboard 0.15.142 → 0.15.144

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/README.md +23 -3
  2. package/dist/host.d.ts +1 -0
  3. package/dist/host.d.ts.map +1 -1
  4. package/dist/host.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/v2/data/data-sql-panel.d.ts +15 -0
  10. package/dist/v2/data/data-sql-panel.d.ts.map +1 -0
  11. package/dist/v2/data/data-sql-panel.js +111 -0
  12. package/dist/v2/data/data-sql-panel.js.map +1 -0
  13. package/dist/v2/data/data-ui.d.ts +16 -0
  14. package/dist/v2/data/data-ui.d.ts.map +1 -0
  15. package/dist/v2/data/data-ui.js +27 -0
  16. package/dist/v2/data/data-ui.js.map +1 -0
  17. package/dist/v2/data/data-view.d.ts +5 -0
  18. package/dist/v2/data/data-view.d.ts.map +1 -0
  19. package/dist/v2/data/data-view.js +316 -0
  20. package/dist/v2/data/data-view.js.map +1 -0
  21. package/dist/v2/data/host.d.ts +83 -0
  22. package/dist/v2/data/host.d.ts.map +1 -0
  23. package/dist/v2/data/host.js +39 -0
  24. package/dist/v2/data/host.js.map +1 -0
  25. package/dist/v2/data/pagination.d.ts +3 -0
  26. package/dist/v2/data/pagination.d.ts.map +1 -0
  27. package/dist/v2/data/pagination.js +6 -0
  28. package/dist/v2/data/pagination.js.map +1 -0
  29. package/dist/v2/shell/dashboard-shell.d.ts.map +1 -1
  30. package/dist/v2/shell/dashboard-shell.js +2 -1
  31. package/dist/v2/shell/dashboard-shell.js.map +1 -1
  32. package/dist/v2/ui/bits.d.ts +7 -0
  33. package/dist/v2/ui/bits.d.ts.map +1 -1
  34. package/dist/v2/ui/bits.js +3 -0
  35. package/dist/v2/ui/bits.js.map +1 -1
  36. package/dist/v2/ui/code-editor.d.ts +2 -1
  37. package/dist/v2/ui/code-editor.d.ts.map +1 -1
  38. package/dist/v2/ui/code-editor.js +2 -1
  39. package/dist/v2/ui/code-editor.js.map +1 -1
  40. package/dist/v2/ui/copy-id.d.ts +15 -0
  41. package/dist/v2/ui/copy-id.d.ts.map +1 -0
  42. package/dist/v2/ui/copy-id.js +32 -0
  43. package/dist/v2/ui/copy-id.js.map +1 -0
  44. package/dist/v2/ui/data-table.d.ts +12 -1
  45. package/dist/v2/ui/data-table.d.ts.map +1 -1
  46. package/dist/v2/ui/data-table.js +39 -12
  47. package/dist/v2/ui/data-table.js.map +1 -1
  48. package/dist/v2/ui/refresh-button.d.ts +2 -1
  49. package/dist/v2/ui/refresh-button.d.ts.map +1 -1
  50. package/dist/v2/ui/refresh-button.js +2 -2
  51. package/dist/v2/ui/refresh-button.js.map +1 -1
  52. package/dist/v2/ui/search-input.d.ts +19 -0
  53. package/dist/v2/ui/search-input.d.ts.map +1 -0
  54. package/dist/v2/ui/search-input.js +17 -0
  55. package/dist/v2/ui/search-input.js.map +1 -0
  56. package/dist/v2/ui/select-field.d.ts +81 -0
  57. package/dist/v2/ui/select-field.d.ts.map +1 -0
  58. package/dist/v2/ui/select-field.js +89 -0
  59. package/dist/v2/ui/select-field.js.map +1 -0
  60. package/dist/v2/ui/select.d.ts +12 -1
  61. package/dist/v2/ui/select.d.ts.map +1 -1
  62. package/dist/v2/ui/select.js +14 -2
  63. package/dist/v2/ui/select.js.map +1 -1
  64. package/dist/v2/ui/table-row-actions.d.ts +15 -0
  65. package/dist/v2/ui/table-row-actions.d.ts.map +1 -0
  66. package/dist/v2/ui/table-row-actions.js +22 -0
  67. package/dist/v2/ui/table-row-actions.js.map +1 -0
  68. package/dist/v2/ui/tabs.d.ts +40 -0
  69. package/dist/v2/ui/tabs.d.ts.map +1 -0
  70. package/dist/v2/ui/tabs.js +46 -0
  71. package/dist/v2/ui/tabs.js.map +1 -0
  72. package/dist/v2/ui/tooltip.d.ts +7 -0
  73. package/dist/v2/ui/tooltip.d.ts.map +1 -0
  74. package/dist/v2/ui/tooltip.js +18 -0
  75. package/dist/v2/ui/tooltip.js.map +1 -0
  76. package/dist/v2/views/data.d.ts +2 -0
  77. package/dist/v2/views/data.d.ts.map +1 -0
  78. package/dist/v2/views/data.js +11 -0
  79. package/dist/v2/views/data.js.map +1 -0
  80. package/package.json +4 -3
package/README.md CHANGED
@@ -1,10 +1,11 @@
1
1
  # @polpo-ai/dashboard
2
2
 
3
- Reusable Polpo v2 dashboard views. The package is the shared visual source for
4
- the managed Cloud dashboard and the single-tenant self-hosted dashboard.
3
+ Reusable Polpo v2 dashboard views for the single-tenant self-hosted dashboard and
4
+ embedding hosts. Views follow the managed Cloud design system; the parity check
5
+ tracks mapped components across repositories.
5
6
 
6
7
  The package owns project-scoped runtime surfaces: agents, playground, sessions,
7
- files, memory, skills, and custom tools. The host application owns deployment
8
+ files, databases, memory, skills, and custom tools. The host application owns deployment
8
9
  boundaries such as authentication, organizations, project provisioning,
9
10
  billing, managed connections, and the managed model gateway.
10
11
 
@@ -26,6 +27,7 @@ import "@polpo-ai/dashboard/v2.css";
26
27
  managedConnections: false,
27
28
  managedGateway: false,
28
29
  provisioning: false,
30
+ data: true,
29
31
  },
30
32
  navigate,
31
33
  href,
@@ -42,6 +44,24 @@ import "@polpo-ai/dashboard/v2.css";
42
44
  to the runtime and keeps `POLPO_API_KEY` server-side. Never expose privileged
43
45
  keys through a `NEXT_PUBLIC_*` variable.
44
46
 
47
+ ## Databases
48
+
49
+ `V2DataView` includes its own page layout and uses the SDK client from `PolpoProvider`.
50
+ The reference host mounts it at `/data`, linked as **Databases**. Its Schema selector
51
+ chooses a logical database; tables appear beside the record, SQL query and migration
52
+ views. Database and record mutations retain version checks and retry semantics from
53
+ the shared Data API.
54
+
55
+ Set `POLPO_DATA_DATABASE_URL` on the runtime to configure a separate PostgreSQL
56
+ application database. The existing runtime API key authorizes dashboard requests.
57
+ An embedding host can hide Databases with `capabilities.data: false`; the capability
58
+ does not configure or authorize Data on the server.
59
+
60
+ The self-hosted view uses a single configured backend. Cloud Live/Test selection,
61
+ Neon provisioning status and managed grant editors are host-specific. Self-hosted
62
+ agent grants remain trusted runtime configuration. See
63
+ [Application Data](../../docs/data.md) for setup, supported SQL and permissions.
64
+
45
65
  ## Parity
46
66
 
47
67
  Run `pnpm check:dashboard-parity` from the repository root while a Polpo Cloud
package/dist/host.d.ts CHANGED
@@ -6,6 +6,7 @@ export interface DashboardCapabilities {
6
6
  managedConnections?: boolean;
7
7
  managedGateway?: boolean;
8
8
  provisioning?: boolean;
9
+ data?: boolean;
9
10
  }
10
11
  export interface DashboardHost {
11
12
  project: {
@@ -1 +1 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElE,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACjC;AAID,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAMA;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAIhD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrD"}
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElE,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACjC;AAID,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAMA;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAIhD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrD"}
package/dist/host.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAC;AAkBlE,MAAM,oBAAoB,GAAG,aAAa,CAAuB,IAAI,CAAC,CAAC;AAEvE,MAAM,UAAU,iBAAiB,CAAC,EAChC,IAAI,EACJ,QAAQ,GAIT;IACC,OAAO,CACL,KAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YACvC,QAAQ,GACqB,CACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,IAAI,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAChC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAC;AAmBlE,MAAM,oBAAoB,GAAG,aAAa,CAAuB,IAAI,CAAC,CAAC;AAEvE,MAAM,UAAU,iBAAiB,CAAC,EAChC,IAAI,EACJ,QAAQ,GAIT;IACC,OAAO,CACL,KAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YACvC,QAAQ,GACqB,CACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,IAAI,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAChC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACnC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -12,6 +12,7 @@ export { SelfHostAgentDetailView as V2AgentDetailView } from "./v2/agents/self-h
12
12
  export { SkillsCatalog as V2SkillsView } from "./v2/views/skills.js";
13
13
  export { SelfHostSkillDetailView as V2SkillDetailView } from "./v2/skills/self-host-detail.js";
14
14
  export { FilesView as V2FilesView } from "./v2/views/files.js";
15
+ export { SelfHostDataView as V2DataView } from "./v2/views/data.js";
15
16
  export { MemoryView as V2MemoryView } from "./v2/views/memory.js";
16
17
  export { SelfHostSessionsView as V2SessionsView, SelfHostSessionDetailView as V2SessionDetailView } from "./v2/sessions/self-host.js";
17
18
  export { SelfHostPlaygroundView as V2PlaygroundView } from "./v2/playground/self-host.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAClF,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnG,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,uBAAuB,IAAI,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,aAAa,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,uBAAuB,IAAI,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,oBAAoB,IAAI,cAAc,EAAE,yBAAyB,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtI,OAAO,EAAE,sBAAsB,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,iBAAiB,IAAI,WAAW,EAAE,sBAAsB,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACvH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAClF,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnG,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,uBAAuB,IAAI,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,aAAa,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,uBAAuB,IAAI,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,oBAAoB,IAAI,cAAc,EAAE,yBAAyB,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtI,OAAO,EAAE,sBAAsB,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,iBAAiB,IAAI,WAAW,EAAE,sBAAsB,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACvH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ export { SelfHostAgentDetailView as V2AgentDetailView } from "./v2/agents/self-h
10
10
  export { SkillsCatalog as V2SkillsView } from "./v2/views/skills.js";
11
11
  export { SelfHostSkillDetailView as V2SkillDetailView } from "./v2/skills/self-host-detail.js";
12
12
  export { FilesView as V2FilesView } from "./v2/views/files.js";
13
+ export { SelfHostDataView as V2DataView } from "./v2/views/data.js";
13
14
  export { MemoryView as V2MemoryView } from "./v2/views/memory.js";
14
15
  export { SelfHostSessionsView as V2SessionsView, SelfHostSessionDetailView as V2SessionDetailView } from "./v2/sessions/self-host.js";
15
16
  export { SelfHostPlaygroundView as V2PlaygroundView } from "./v2/playground/self-host.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnG,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,uBAAuB,IAAI,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,aAAa,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,uBAAuB,IAAI,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,oBAAoB,IAAI,cAAc,EAAE,yBAAyB,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtI,OAAO,EAAE,sBAAsB,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,iBAAiB,IAAI,WAAW,EAAE,sBAAsB,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACvH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnG,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,uBAAuB,IAAI,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,aAAa,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,uBAAuB,IAAI,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,oBAAoB,IAAI,cAAc,EAAE,yBAAyB,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtI,OAAO,EAAE,sBAAsB,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,iBAAiB,IAAI,WAAW,EAAE,sBAAsB,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACvH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { DataResource } from "@polpo-ai/core/data";
2
+ import { type DataEnvironment } from "./data-ui.js";
3
+ type DatabaseProps = {
4
+ projectId: string;
5
+ environment: DataEnvironment;
6
+ resource: DataResource;
7
+ };
8
+ export declare function DataSqlPanel({ projectId, environment, resource, tableName, }: DatabaseProps & {
9
+ tableName?: string;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ export declare function DataMigrationsPanel({ projectId, environment, resource, refresh, }: DatabaseProps & {
12
+ refresh(): Promise<void>;
13
+ }): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=data-sql-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-sql-panel.d.ts","sourceRoot":"","sources":["../../../src/v2/data/data-sql-panel.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,YAAY,EACb,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AAEtB,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,eAAe,CAAC;IAC7B,QAAQ,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,aAAa,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAmIxC;AAED,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,WAAW,EACX,QAAQ,EACR,OAAO,GACR,EAAE,aAAa,GAAG;IAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,2CAgG9C"}
@@ -0,0 +1,111 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useRef, useState } from "react";
4
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
5
+ import { Button } from "../ui/button.js";
6
+ import { SelectField } from "../ui/select-field.js";
7
+ import { CodeEditor } from "../ui/code-editor.js";
8
+ import { DataTable } from "../ui/data-table.js";
9
+ import { Section } from "../ui/bits.js";
10
+ import { useDataClient } from "./host.js";
11
+ import { DataErrorNotice, Field, } from "./data-ui.js";
12
+ export function DataSqlPanel({ projectId, environment, resource, tableName, }) {
13
+ const data = useDataClient();
14
+ const [sql, setSql] = useState(tableName ? `SELECT * FROM "${tableName}" LIMIT 20` : "SELECT 1 AS value");
15
+ const [params, setParams] = useState("[]");
16
+ const [mode, setMode] = useState("read");
17
+ const retry = useRef(null);
18
+ const client = useQueryClient();
19
+ const run = useMutation({
20
+ mutationFn: async () => {
21
+ const input = { sql, params: JSON.parse(params), mode, maxRows: 50 };
22
+ const signature = JSON.stringify(input);
23
+ if (!retry.current || retry.current.signature !== signature)
24
+ retry.current = { signature, key: crypto.randomUUID() };
25
+ const response = await data.query(resource.id, {
26
+ ...input, ...(mode === "write" ? { idempotencyKey: retry.current.key } : {}),
27
+ });
28
+ return { ...response, mode };
29
+ },
30
+ onSuccess: async () => {
31
+ retry.current = null;
32
+ await client.invalidateQueries({
33
+ queryKey: ["data-records", projectId, environment, resource.id],
34
+ });
35
+ },
36
+ });
37
+ return (_jsxs("div", { className: "space-y-4", children: [_jsx("p", { className: "text-xs text-muted-foreground", children: "Query tables in this database using PostgreSQL syntax. Use $1, $2 and the parameters below for values. Schema changes belong in Migrations." }), _jsx(Field, { label: "SQL", children: _jsx(CodeEditor, { ariaLabel: "SQL", language: "sql", height: 240, value: sql, readOnly: run.isPending, onChange: setSql }) }), _jsxs("div", { className: "grid gap-3 sm:grid-cols-[minmax(0,1fr)_160px]", children: [_jsx(Field, { label: "Parameters (JSON array)", children: _jsx(CodeEditor, { ariaLabel: "Parameters (JSON array)", language: "json", height: 80, value: params, readOnly: run.isPending, onChange: setParams }) }), _jsx(Field, { label: "Query mode", children: _jsx(SelectField, { "aria-label": "Query mode", className: "w-full", value: mode, disabled: run.isPending, options: [
38
+ { value: "read", label: "Read" },
39
+ { value: "write", label: "Write" },
40
+ ], onChange: setMode }) })] }), mode === "write" ? (_jsx("p", { className: "text-xs text-muted-foreground", children: "INSERT, UPDATE and DELETE change records in this database. Use WHERE _version = \u2026 when an update depends on a previously read record." })) : null, _jsx(Button, { size: "sm", disabled: run.isPending || !sql.trim(), onClick: () => run.mutate(), children: run.isPending
41
+ ? "Running…"
42
+ : mode === "write"
43
+ ? "Run mutation"
44
+ : "Run query" }), run.isError ? _jsx(DataErrorNotice, { error: run.error }) : null, run.data ? (_jsxs("div", { className: "space-y-2", "aria-live": "polite", children: [_jsxs("p", { className: "text-xs text-muted-foreground", children: [run.data.data.rows.length, " rows shown", run.data.data.truncated ? " · result truncated" : "", " \u00B7", " ", run.data.data.rowCount, " rows", " ", run.data.mode === "write" ? "affected" : "fetched"] }), _jsx(DataTable, { data: run.data.data.rows, columns: [
45
+ ...new Set(run.data.data.rows.flatMap((row) => Object.keys(row))),
46
+ ].map((name) => ({
47
+ id: name,
48
+ header: name,
49
+ accessorFn: (row) => row[name],
50
+ cell: ({ getValue }) => {
51
+ const value = getValue();
52
+ const text = value === null
53
+ ? "null"
54
+ : typeof value === "object"
55
+ ? JSON.stringify(value)
56
+ : String(value);
57
+ return (_jsx("span", { className: "block max-w-64 truncate text-[13px]", title: text, children: text }));
58
+ },
59
+ })), pageSize: 25, empty: _jsx("span", { className: "text-[13px] text-muted-foreground", children: "The query returned no rows." }) })] })) : null] }));
60
+ }
61
+ export function DataMigrationsPanel({ projectId, environment, resource, refresh, }) {
62
+ const data = useDataClient();
63
+ const [input, setInput] = useState(() => JSON.stringify({
64
+ id: "add_notes",
65
+ expectedVersion: resource.schemaVersion,
66
+ statements: [{ sql: "CREATE TABLE notes (body text NOT NULL)" }],
67
+ }, null, 2));
68
+ const client = useQueryClient();
69
+ const key = ["data-migrations", projectId, environment, resource.id];
70
+ const history = useQuery({
71
+ queryKey: key,
72
+ retry: false,
73
+ queryFn: () => data.migrations(resource.id),
74
+ });
75
+ const apply = useMutation({
76
+ mutationFn: () => data.migrateSql(resource.id, JSON.parse(input)),
77
+ onSuccess: async () => {
78
+ await Promise.all([
79
+ refresh(),
80
+ client.invalidateQueries({ queryKey: key }),
81
+ client.invalidateQueries({
82
+ queryKey: ["data-records", projectId, environment, resource.id],
83
+ }),
84
+ ]);
85
+ },
86
+ });
87
+ return (_jsxs("div", { className: "space-y-4", children: [_jsxs("p", { className: "text-xs text-muted-foreground", children: ["Apply supported table and index changes with data backfills in one transaction. Each statement has a SQL string and optional parameters. Current schema: v", resource.schemaVersion, "."] }), _jsx(Field, { label: "SQL migration (JSON)", children: _jsx(CodeEditor, { ariaLabel: "SQL migration (JSON)", language: "json", height: 300, value: input, readOnly: apply.isPending, onChange: (value) => {
88
+ setInput(value);
89
+ apply.reset();
90
+ } }) }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Use a unique migration ID and the current expectedVersion. Repeating the same migration is safe. Drops and type changes require allowDestructive: true." }), _jsx(Button, { size: "sm", disabled: apply.isPending || !input.trim(), onClick: () => apply.mutate(), children: apply.isPending
91
+ ? "Applying…"
92
+ : "Apply migration" }), apply.isError ? _jsx(DataErrorNotice, { error: apply.error }) : null, apply.data ? (_jsxs("p", { role: "status", className: "text-sm", children: ["Migration applied \u00B7 schema v", apply.data.data.schemaVersion] })) : null, _jsx(Section, { title: "Migration history", count: history.data?.data.length, children: history.isPending ? (_jsx("p", { role: "status", className: "text-xs text-muted-foreground", children: "Loading migrations\u2026" })) : history.isError ? (_jsx(DataErrorNotice, { error: history.error })) : (_jsx(DataTable, { columns: migrationColumns, data: history.data.data, getRowId: (entry) => entry.id, empty: _jsx("span", { className: "text-[13px] text-muted-foreground", children: "No SQL migrations yet." }) })) })] }));
93
+ }
94
+ const migrationColumns = [
95
+ {
96
+ accessorKey: "id",
97
+ header: "Migration",
98
+ cell: ({ row }) => (_jsx("span", { className: "font-mono text-[12px]", children: row.original.id })),
99
+ },
100
+ {
101
+ accessorKey: "schemaVersion",
102
+ header: "Version",
103
+ cell: ({ row }) => (_jsxs("span", { className: "text-[13px]", children: ["v", row.original.schemaVersion] })),
104
+ },
105
+ {
106
+ accessorKey: "appliedAt",
107
+ header: "Applied",
108
+ cell: ({ row }) => (_jsx("span", { className: "text-[12px] text-muted-foreground", children: new Date(row.original.appliedAt).toLocaleString() })),
109
+ },
110
+ ];
111
+ //# sourceMappingURL=data-sql-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-sql-panel.js","sourceRoot":"","sources":["../../../src/v2/data/data-sql-panel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { ReactNode } from "react";
2
+ export type DataEnvironment = "local";
3
+ export type DataResponse<T> = {
4
+ ok: true;
5
+ data: T;
6
+ };
7
+ export declare function dataMessage(error: unknown): any;
8
+ export declare function DataErrorNotice({ error }: {
9
+ error: unknown;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ export declare function Field({ label, children, }: {
12
+ label: string;
13
+ children: ReactNode;
14
+ }): import("react/jsx-runtime").JSX.Element;
15
+ export declare const editorClass = "min-h-48 w-full rounded-md border border-input bg-background p-3 font-mono text-xs leading-5 focus-visible:outline-2 focus-visible:outline-ring";
16
+ //# sourceMappingURL=data-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-ui.d.ts","sourceRoot":"","sources":["../../../src/v2/data/data-ui.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC;AACtC,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC;AACpD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,OAgBzC;AACD,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,2CAS5D;AACD,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAOA;AACD,eAAO,MAAM,WAAW,oJAC2H,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ export function dataMessage(error) {
4
+ const message = error instanceof Error ? error.message : "Database request failed";
5
+ const status = error && typeof error === "object" && "status" in error ? error.status : undefined;
6
+ const jsonStart = message.indexOf("{");
7
+ if (jsonStart >= 0)
8
+ try {
9
+ return JSON.parse(message.slice(jsonStart)).error ?? message;
10
+ }
11
+ catch {
12
+ /* plain error */
13
+ }
14
+ if (status === 503 || message.includes("503"))
15
+ return "Databases are unavailable on this runtime. Ask its administrator to configure the Data backend.";
16
+ if (status === 403 || message.includes("403"))
17
+ return "Your account does not have access to this database operation.";
18
+ return message;
19
+ }
20
+ export function DataErrorNotice({ error }) {
21
+ return (_jsx("p", { role: "alert", className: "rounded-md border border-destructive/30 bg-destructive/5 p-3 text-sm text-destructive break-words", children: dataMessage(error) }));
22
+ }
23
+ export function Field({ label, children, }) {
24
+ return (_jsxs("label", { className: "flex min-w-0 flex-col gap-1.5 text-xs font-medium", children: [label, children] }));
25
+ }
26
+ export const editorClass = "min-h-48 w-full rounded-md border border-input bg-background p-3 font-mono text-xs leading-5 focus-visible:outline-2 focus-visible:outline-ring";
27
+ //# sourceMappingURL=data-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-ui.js","sourceRoot":"","sources":["../../../src/v2/data/data-ui.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAKb,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;IACrE,MAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,SAAS,IAAI,CAAC;QAChB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,IAAI,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC3C,OAAO,iGAAiG,CAAC;IAC3G,IAAI,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC3C,OAAO,+DAA+D,CAAC;IACzE,OAAO,OAAO,CAAC;AACjB,CAAC;AACD,MAAM,UAAU,eAAe,CAAC,EAAE,KAAK,EAAsB;IAC3D,OAAO,CACL,YACE,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,mGAAmG,YAE5G,WAAW,CAAC,KAAK,CAAC,GACjB,CACL,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,KAAK,CAAC,EACpB,KAAK,EACL,QAAQ,GAIT;IACC,OAAO,CACL,iBAAO,SAAS,EAAC,mDAAmD,aACjE,KAAK,EACL,QAAQ,IACH,CACT,CAAC;AACJ,CAAC;AACD,MAAM,CAAC,MAAM,WAAW,GACtB,iJAAiJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function DataView({ projectId, enabled }: {
2
+ projectId: string;
3
+ enabled?: boolean;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=data-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-view.d.ts","sourceRoot":"","sources":["../../../src/v2/data/data-view.tsx"],"names":[],"mappings":"AAgEA,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAc,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,2CA6B/F"}