@burdenoff/microfe-ecoimpacthub 2026.704.5 → 2026.709.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.
Files changed (132) hide show
  1. package/dist/dev/main.d.ts +2 -0
  2. package/dist/dev/main.d.ts.map +1 -0
  3. package/dist/ecoimpacthub/EcoImpactHubRoot.d.ts +5 -0
  4. package/dist/ecoimpacthub/EcoImpactHubRoot.d.ts.map +1 -0
  5. package/dist/ecoimpacthub/EcoImpactHubRoutes.d.ts +4 -0
  6. package/dist/ecoimpacthub/EcoImpactHubRoutes.d.ts.map +1 -0
  7. package/dist/ecoimpacthub/EcoImpactHubRoutes.js +48 -40
  8. package/dist/ecoimpacthub/EcoImpactHubRoutes.js.map +1 -1
  9. package/dist/ecoimpacthub/components/DataTable.d.ts +28 -0
  10. package/dist/ecoimpacthub/components/DataTable.d.ts.map +1 -0
  11. package/dist/ecoimpacthub/components/EcoDiscussion.d.ts +18 -0
  12. package/dist/ecoimpacthub/components/EcoDiscussion.d.ts.map +1 -0
  13. package/dist/ecoimpacthub/components/EcoTags.d.ts +17 -0
  14. package/dist/ecoimpacthub/components/EcoTags.d.ts.map +1 -0
  15. package/dist/ecoimpacthub/components/EmptyState.d.ts +18 -0
  16. package/dist/ecoimpacthub/components/EmptyState.d.ts.map +1 -0
  17. package/dist/ecoimpacthub/components/EvidenceUpload.d.ts +14 -0
  18. package/dist/ecoimpacthub/components/EvidenceUpload.d.ts.map +1 -0
  19. package/dist/ecoimpacthub/components/FeatureFlagGate.d.ts +10 -0
  20. package/dist/ecoimpacthub/components/FeatureFlagGate.d.ts.map +1 -0
  21. package/dist/ecoimpacthub/components/FeatureFlagGate.js +8 -0
  22. package/dist/ecoimpacthub/components/FeatureFlagGate.js.map +1 -0
  23. package/dist/ecoimpacthub/components/FileLink.d.ts +15 -0
  24. package/dist/ecoimpacthub/components/FileLink.d.ts.map +1 -0
  25. package/dist/ecoimpacthub/components/FilterTabs.d.ts +18 -0
  26. package/dist/ecoimpacthub/components/FilterTabs.d.ts.map +1 -0
  27. package/dist/ecoimpacthub/components/MetricsCard.d.ts +23 -0
  28. package/dist/ecoimpacthub/components/MetricsCard.d.ts.map +1 -0
  29. package/dist/ecoimpacthub/components/MiniBar.d.ts +16 -0
  30. package/dist/ecoimpacthub/components/MiniBar.d.ts.map +1 -0
  31. package/dist/ecoimpacthub/components/PageLayout.d.ts +16 -0
  32. package/dist/ecoimpacthub/components/PageLayout.d.ts.map +1 -0
  33. package/dist/ecoimpacthub/components/Pagination.d.ts +22 -0
  34. package/dist/ecoimpacthub/components/Pagination.d.ts.map +1 -0
  35. package/dist/ecoimpacthub/components/StateViews.d.ts +24 -0
  36. package/dist/ecoimpacthub/components/StateViews.d.ts.map +1 -0
  37. package/dist/ecoimpacthub/components/StatusBadge.d.ts +9 -0
  38. package/dist/ecoimpacthub/components/StatusBadge.d.ts.map +1 -0
  39. package/dist/ecoimpacthub/components/Tabs.d.ts +17 -0
  40. package/dist/ecoimpacthub/components/Tabs.d.ts.map +1 -0
  41. package/dist/ecoimpacthub/components/index.d.ts +19 -0
  42. package/dist/ecoimpacthub/components/index.d.ts.map +1 -0
  43. package/dist/ecoimpacthub/context/EcoImpactHubContext.d.ts +16 -0
  44. package/dist/ecoimpacthub/context/EcoImpactHubContext.d.ts.map +1 -0
  45. package/dist/ecoimpacthub/context/index.d.ts +6 -0
  46. package/dist/ecoimpacthub/context/index.d.ts.map +1 -0
  47. package/dist/ecoimpacthub/hooks/index.d.ts +10 -0
  48. package/dist/ecoimpacthub/hooks/index.d.ts.map +1 -0
  49. package/dist/ecoimpacthub/hooks/useCursorPager.d.ts +33 -0
  50. package/dist/ecoimpacthub/hooks/useCursorPager.d.ts.map +1 -0
  51. package/dist/ecoimpacthub/hooks/useEcoComments.d.ts +36 -0
  52. package/dist/ecoimpacthub/hooks/useEcoComments.d.ts.map +1 -0
  53. package/dist/ecoimpacthub/hooks/useEcoFiles.d.ts +47 -0
  54. package/dist/ecoimpacthub/hooks/useEcoFiles.d.ts.map +1 -0
  55. package/dist/ecoimpacthub/hooks/useEcoImpactHubApi.d.ts +104 -0
  56. package/dist/ecoimpacthub/hooks/useEcoImpactHubApi.d.ts.map +1 -0
  57. package/dist/ecoimpacthub/hooks/useEcoTags.d.ts +44 -0
  58. package/dist/ecoimpacthub/hooks/useEcoTags.d.ts.map +1 -0
  59. package/dist/ecoimpacthub/index.d.ts +10 -0
  60. package/dist/ecoimpacthub/index.d.ts.map +1 -0
  61. package/dist/ecoimpacthub/index.js +2 -0
  62. package/dist/ecoimpacthub/pages/DashboardPage.d.ts +10 -0
  63. package/dist/ecoimpacthub/pages/DashboardPage.d.ts.map +1 -0
  64. package/dist/ecoimpacthub/pages/_shared/ConservationBadge.d.ts +9 -0
  65. package/dist/ecoimpacthub/pages/_shared/ConservationBadge.d.ts.map +1 -0
  66. package/dist/ecoimpacthub/pages/_shared/EvidenceThumb.d.ts +23 -0
  67. package/dist/ecoimpacthub/pages/_shared/EvidenceThumb.d.ts.map +1 -0
  68. package/dist/ecoimpacthub/pages/_shared/MethodBadge.d.ts +9 -0
  69. package/dist/ecoimpacthub/pages/_shared/MethodBadge.d.ts.map +1 -0
  70. package/dist/ecoimpacthub/pages/_shared/TaxonChip.d.ts +9 -0
  71. package/dist/ecoimpacthub/pages/_shared/TaxonChip.d.ts.map +1 -0
  72. package/dist/ecoimpacthub/pages/badges.d.ts +27 -0
  73. package/dist/ecoimpacthub/pages/badges.d.ts.map +1 -0
  74. package/dist/ecoimpacthub/pages/carbon/CarbonPage.d.ts +15 -0
  75. package/dist/ecoimpacthub/pages/carbon/CarbonPage.d.ts.map +1 -0
  76. package/dist/ecoimpacthub/pages/carbonVisuals.d.ts +47 -0
  77. package/dist/ecoimpacthub/pages/carbonVisuals.d.ts.map +1 -0
  78. package/dist/ecoimpacthub/pages/habitat/HabitatProjectDetailPage.d.ts +12 -0
  79. package/dist/ecoimpacthub/pages/habitat/HabitatProjectDetailPage.d.ts.map +1 -0
  80. package/dist/ecoimpacthub/pages/habitat/HabitatProjectsPage.d.ts +8 -0
  81. package/dist/ecoimpacthub/pages/habitat/HabitatProjectsPage.d.ts.map +1 -0
  82. package/dist/ecoimpacthub/pages/habitat/LifecycleProgress.d.ts +6 -0
  83. package/dist/ecoimpacthub/pages/habitat/LifecycleProgress.d.ts.map +1 -0
  84. package/dist/ecoimpacthub/pages/monitoring/MonitoringPage.d.ts +12 -0
  85. package/dist/ecoimpacthub/pages/monitoring/MonitoringPage.d.ts.map +1 -0
  86. package/dist/ecoimpacthub/pages/observations/ObservationsPage.d.ts +11 -0
  87. package/dist/ecoimpacthub/pages/observations/ObservationsPage.d.ts.map +1 -0
  88. package/dist/ecoimpacthub/pages/reports/ReportDetailPage.d.ts +11 -0
  89. package/dist/ecoimpacthub/pages/reports/ReportDetailPage.d.ts.map +1 -0
  90. package/dist/ecoimpacthub/pages/reports/ReportsPage.d.ts +8 -0
  91. package/dist/ecoimpacthub/pages/reports/ReportsPage.d.ts.map +1 -0
  92. package/dist/ecoimpacthub/pages/sites/SiteDetailPage.d.ts +10 -0
  93. package/dist/ecoimpacthub/pages/sites/SiteDetailPage.d.ts.map +1 -0
  94. package/dist/ecoimpacthub/pages/sites/SitesPage.d.ts +8 -0
  95. package/dist/ecoimpacthub/pages/sites/SitesPage.d.ts.map +1 -0
  96. package/dist/ecoimpacthub/pages/sites/siteTypeVisuals.d.ts +22 -0
  97. package/dist/ecoimpacthub/pages/sites/siteTypeVisuals.d.ts.map +1 -0
  98. package/dist/ecoimpacthub/pages/species/SpeciesDetailPage.d.ts +9 -0
  99. package/dist/ecoimpacthub/pages/species/SpeciesDetailPage.d.ts.map +1 -0
  100. package/dist/ecoimpacthub/pages/species/SpeciesPage.d.ts +8 -0
  101. package/dist/ecoimpacthub/pages/species/SpeciesPage.d.ts.map +1 -0
  102. package/dist/ecoimpacthub/services/createSandboxAssistantTransport.d.ts +33 -0
  103. package/dist/ecoimpacthub/services/createSandboxAssistantTransport.d.ts.map +1 -0
  104. package/dist/ecoimpacthub/services/createSandboxAssistantTransport.js +42 -0
  105. package/dist/ecoimpacthub/services/createSandboxAssistantTransport.js.map +1 -0
  106. package/dist/ecoimpacthub/services/index.d.ts +6 -0
  107. package/dist/ecoimpacthub/services/index.d.ts.map +1 -0
  108. package/dist/ecoimpacthub/services/index.js +1 -0
  109. package/dist/ecoimpacthub/types/index.d.ts +417 -0
  110. package/dist/ecoimpacthub/types/index.d.ts.map +1 -0
  111. package/dist/ecoimpacthub/utils/cn.d.ts +4 -0
  112. package/dist/ecoimpacthub/utils/cn.d.ts.map +1 -0
  113. package/dist/ecoimpacthub/utils/formatters.d.ts +26 -0
  114. package/dist/ecoimpacthub/utils/formatters.d.ts.map +1 -0
  115. package/dist/ecoimpacthub/utils/i18n.d.ts +6 -0
  116. package/dist/ecoimpacthub/utils/i18n.d.ts.map +1 -0
  117. package/dist/ecoimpacthub/utils/index.d.ts +9 -0
  118. package/dist/ecoimpacthub/utils/index.d.ts.map +1 -0
  119. package/dist/ecoimpacthub/utils/navigation.d.ts +14 -0
  120. package/dist/ecoimpacthub/utils/navigation.d.ts.map +1 -0
  121. package/dist/generated/global-operations.d.ts +2 -0
  122. package/dist/generated/global-operations.d.ts.map +1 -0
  123. package/dist/generated/global-types.d.ts +18199 -0
  124. package/dist/generated/global-types.d.ts.map +1 -0
  125. package/dist/generated/wspace-operations.d.ts +2 -0
  126. package/dist/generated/wspace-operations.d.ts.map +1 -0
  127. package/dist/generated/wspace-types.d.ts +43046 -0
  128. package/dist/generated/wspace-types.d.ts.map +1 -0
  129. package/dist/index.d.ts +2 -0
  130. package/dist/index.d.ts.map +1 -0
  131. package/dist/index.js +2 -1
  132. package/package.json +5 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObservationsPage.d.ts","sourceRoot":"","sources":["../../../../src/ecoimpacthub/pages/observations/ObservationsPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA8FH,wBAAgB,gBAAgB,4CAqa/B"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Report detail — overview, line items (with total) & disclosure actions.
3
+ * @module ecoimpacthub/pages/reports
4
+ *
5
+ * Reads `ecoReport` (+ nested lineItems); writes `ecoAddReportLineItem`,
6
+ * `ecoPublishReport`. The hero pairs a fact-rich overview with an actions card;
7
+ * line items render as a crisp table whose footer carries the running TOTAL, and
8
+ * a discussion thread (platform EntityComment API) sits below.
9
+ */
10
+ export declare function ReportDetailPage(): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=ReportDetailPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReportDetailPage.d.ts","sourceRoot":"","sources":["../../../../src/ecoimpacthub/pages/reports/ReportDetailPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA4CH,wBAAgB,gBAAgB,4CA+S/B"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ESG Reports — list, filter, and draft sustainability disclosures.
3
+ * @module ecoimpacthub/pages/reports
4
+ *
5
+ * Reads `ecoListReports`; writes `ecoCreateReport`.
6
+ */
7
+ export declare function ReportsPage(): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=ReportsPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReportsPage.d.ts","sourceRoot":"","sources":["../../../../src/ecoimpacthub/pages/reports/ReportsPage.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8DH,wBAAgB,WAAW,4CAoP1B"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Site detail — sensors, alert thresholds, recent measurements & site actions.
3
+ * @module ecoimpacthub/pages/sites
4
+ *
5
+ * Reads `ecoSite` (+ nested sensors/thresholds) and `ecoListMeasurements`;
6
+ * writes `ecoCreateSensor`, `ecoSetSensorStatus`, `ecoCreateThreshold`,
7
+ * `ecoSetThresholdActive`, `ecoRecordMeasurement`, `ecoArchiveSite`.
8
+ */
9
+ export declare function SiteDetailPage(): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=SiteDetailPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SiteDetailPage.d.ts","sourceRoot":"","sources":["../../../../src/ecoimpacthub/pages/sites/SiteDetailPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA+EH,wBAAgB,cAAc,4CA0vB7B"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Sites — list, filter, and create monitored locations.
3
+ * @module ecoimpacthub/pages/sites
4
+ *
5
+ * Reads `ecoListSites`; writes `ecoCreateSite`.
6
+ */
7
+ export declare function SitesPage(): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=SitesPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SitesPage.d.ts","sourceRoot":"","sources":["../../../../src/ecoimpacthub/pages/sites/SitesPage.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+EH,wBAAgB,SAAS,4CA6UxB"}
@@ -0,0 +1,22 @@
1
+ import { FC } from 'react';
2
+ import { LucideIcon } from 'lucide-react';
3
+ import { EcoSiteType } from '../../types';
4
+
5
+ interface TypeVisual {
6
+ Icon: LucideIcon;
7
+ /** Shared bg + text classes for both the pill and the leading icon tile. */
8
+ tone: string;
9
+ }
10
+ export declare function siteTypeVisual(type: EcoSiteType): TypeVisual;
11
+ /** A leading rounded icon tile keyed to the site type. */
12
+ export declare const SiteTypeIcon: FC<{
13
+ type: EcoSiteType;
14
+ className?: string;
15
+ }>;
16
+ /** A coloured pill: icon + human label for a site type. */
17
+ export declare const SiteTypeBadge: FC<{
18
+ type: EcoSiteType;
19
+ className?: string;
20
+ }>;
21
+ export {};
22
+ //# sourceMappingURL=siteTypeVisuals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siteTypeVisuals.d.ts","sourceRoot":"","sources":["../../../../src/ecoimpacthub/pages/sites/siteTypeVisuals.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAUL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,UAAU,UAAU;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;CACd;AAkCD,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,CAE5D;AAED,0DAA0D;AAC1D,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAiBtE,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAiBvE,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Species detail — overview, field observations & species actions.
3
+ * @module ecoimpacthub/pages/species
4
+ *
5
+ * Reads `ecoSpecies` (+ nested observations); writes `ecoRecordObservation`,
6
+ * `ecoUpdateSpecies`, `ecoArchiveSpecies`.
7
+ */
8
+ export declare function SpeciesDetailPage(): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=SpeciesDetailPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpeciesDetailPage.d.ts","sourceRoot":"","sources":["../../../../src/ecoimpacthub/pages/species/SpeciesDetailPage.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoGH,wBAAgB,iBAAiB,4CAmgBhC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Species — list, filter, and register tracked taxa.
3
+ * @module ecoimpacthub/pages/species
4
+ *
5
+ * Reads `ecoListSpecies`; writes `ecoCreateSpecies`.
6
+ */
7
+ export declare function SpeciesPage(): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=SpeciesPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpeciesPage.d.ts","sourceRoot":"","sources":["../../../../src/ecoimpacthub/pages/species/SpeciesPage.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmFH,wBAAgB,WAAW,4CAoX1B"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * EcoImpactHub transport adapter for the shared fe-libs AssistantWidget.
3
+ *
4
+ * The floating widget (fe-libs, Layer 1) is backend-agnostic — it calls an
5
+ * injected `AssistantTransport`. This hook builds a transport that returns
6
+ * contextual, screen-aware guidance for the EcoImpactHub domain. It is a
7
+ * lightweight first-mile implementation: it does not require a warm sandbox or
8
+ * agent runtime, so it works out of the box while the product backend is being
9
+ * extended with an AI assistant capability.
10
+ *
11
+ * Future iterations can swap the local `respond` function for a call to the
12
+ * workspace AI orchestrator (e.g. `microfe-sandbox` assistant APIs or a
13
+ * dedicated `ecoimpacthub.assistant` GraphQL mutation) without changing the
14
+ * host AppShell contract.
15
+ */
16
+ interface AssistantSendArgs {
17
+ prompt: string;
18
+ onProgress: (partialText: string) => void;
19
+ signal: AbortSignal;
20
+ }
21
+ export interface AssistantTransport {
22
+ sendPrompt: (args: AssistantSendArgs) => Promise<{
23
+ text: string;
24
+ }>;
25
+ }
26
+ /**
27
+ * Returns a memoized `AssistantTransport` wired to a lightweight, page-aware
28
+ * EcoImpactHub responder. The transport fulfills the fe-libs AssistantWidget
29
+ * contract and degrades gracefully when no AI backend is configured.
30
+ */
31
+ export declare function useSandboxAssistantTransport(): AssistantTransport;
32
+ export {};
33
+ //# sourceMappingURL=createSandboxAssistantTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSandboxAssistantTransport.d.ts","sourceRoot":"","sources":["../../../src/ecoimpacthub/services/createSandboxAssistantTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpE;AAuDD;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,kBAAkB,CA0BjE"}
@@ -0,0 +1,42 @@
1
+ import { useCallback as e, useMemo as t } from "react";
2
+ import { useLocation as n } from "react-router-dom";
3
+ //#region src/ecoimpacthub/services/createSandboxAssistantTransport.ts
4
+ function r(e) {
5
+ let t = e.split("/").filter(Boolean), n = t.findIndex((e) => e === "ecoimpacthub"), [r, i] = n >= 0 ? t.slice(n + 1) : t;
6
+ return {
7
+ path: e,
8
+ page: r ?? "dashboard",
9
+ entityId: i
10
+ };
11
+ }
12
+ function i(e, t) {
13
+ let { page: n, entityId: r } = t, i = e.toLowerCase(), a = {
14
+ dashboard: "Dashboard",
15
+ sites: "Environmental Sites",
16
+ monitoring: "Monitoring",
17
+ species: "Species",
18
+ observations: "Observations",
19
+ habitat: "Habitat Projects",
20
+ carbon: "Carbon Ledger",
21
+ reports: "ESG Reports"
22
+ }[n] ?? "EcoImpactHub";
23
+ return i.includes("help") || i.includes("what") || i.includes("how") ? `You're on the **${a}** page in EcoImpactHub.\n\nYou can ask me to:\n- Explain the current screen\n- Suggest next steps for sustainability or conservation workflows\n- Summarize what actions are available here\n\n${r ? `Context: viewing a specific record (${r}).` : "Context: list/overview view."}` : i.includes("create") || i.includes("add") || i.includes("new") ? `To create a new record in **${a}**, use the primary action button on the page. If you don't see one, you may need additional permissions in this workspace.` : i.includes("delete") || i.includes("remove") ? `Deletion in **${a}** is typically available from the row-level actions or the detail page. Items are soft-deleted so they can be restored by a workspace admin if needed.` : i.includes("report") || i.includes("export") ? "EcoImpactHub can generate ESG and sustainability reports from the **Reports** page. You can also export list views using the export action where available." : `Thanks for your message. I'm the EcoImpactHub assistant, currently viewing **${a}**.\n\nI can help explain this screen, suggest workflows, or point you to the right module. For live data operations, use the controls on the page directly.`;
24
+ }
25
+ function a(e) {
26
+ return new Promise((t) => setTimeout(t, e));
27
+ }
28
+ function o() {
29
+ let { pathname: o } = n(), s = t(() => r(o), [o]), c = e(async ({ prompt: e, onProgress: t, signal: n }) => {
30
+ let r = i(e, s), o = r.split(" "), c = "";
31
+ for (let e = 0; e < o.length; e++) {
32
+ if (n.aborted) throw Error("Cancelled");
33
+ c += (e === 0 ? "" : " ") + o[e], t(c), await a(12);
34
+ }
35
+ return { text: r };
36
+ }, [s]);
37
+ return t(() => ({ sendPrompt: c }), [c]);
38
+ }
39
+ //#endregion
40
+ export { o as useSandboxAssistantTransport };
41
+
42
+ //# sourceMappingURL=createSandboxAssistantTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSandboxAssistantTransport.js","names":[],"sources":["../../../src/ecoimpacthub/services/createSandboxAssistantTransport.ts"],"sourcesContent":["/**\n * EcoImpactHub transport adapter for the shared fe-libs AssistantWidget.\n *\n * The floating widget (fe-libs, Layer 1) is backend-agnostic — it calls an\n * injected `AssistantTransport`. This hook builds a transport that returns\n * contextual, screen-aware guidance for the EcoImpactHub domain. It is a\n * lightweight first-mile implementation: it does not require a warm sandbox or\n * agent runtime, so it works out of the box while the product backend is being\n * extended with an AI assistant capability.\n *\n * Future iterations can swap the local `respond` function for a call to the\n * workspace AI orchestrator (e.g. `microfe-sandbox` assistant APIs or a\n * dedicated `ecoimpacthub.assistant` GraphQL mutation) without changing the\n * host AppShell contract.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport { useLocation } from 'react-router-dom';\n\ninterface AssistantSendArgs {\n prompt: string;\n onProgress: (partialText: string) => void;\n signal: AbortSignal;\n}\n\nexport interface AssistantTransport {\n sendPrompt: (args: AssistantSendArgs) => Promise<{ text: string }>;\n}\n\ninterface PageContext {\n path: string;\n page: string;\n entityId?: string;\n}\n\nfunction resolvePageContext(pathname: string): PageContext {\n const segments = pathname.split('/').filter(Boolean);\n const productIndex = segments.findIndex((s) => s === 'ecoimpacthub');\n const productSegments = productIndex >= 0 ? segments.slice(productIndex + 1) : segments;\n const [page, entityId] = productSegments;\n return { path: pathname, page: page ?? 'dashboard', entityId };\n}\n\nfunction buildContextualResponse(prompt: string, context: PageContext): string {\n const { page, entityId } = context;\n const lower = prompt.toLowerCase();\n\n const pageName =\n {\n dashboard: 'Dashboard',\n sites: 'Environmental Sites',\n monitoring: 'Monitoring',\n species: 'Species',\n observations: 'Observations',\n habitat: 'Habitat Projects',\n carbon: 'Carbon Ledger',\n reports: 'ESG Reports',\n }[page] ?? 'EcoImpactHub';\n\n if (lower.includes('help') || lower.includes('what') || lower.includes('how')) {\n return `You're on the **${pageName}** page in EcoImpactHub.\\n\\nYou can ask me to:\\n- Explain the current screen\\n- Suggest next steps for sustainability or conservation workflows\\n- Summarize what actions are available here\\n\\n${entityId ? `Context: viewing a specific record (${entityId}).` : 'Context: list/overview view.'}`;\n }\n\n if (lower.includes('create') || lower.includes('add') || lower.includes('new')) {\n return `To create a new record in **${pageName}**, use the primary action button on the page. If you don't see one, you may need additional permissions in this workspace.`;\n }\n\n if (lower.includes('delete') || lower.includes('remove')) {\n return `Deletion in **${pageName}** is typically available from the row-level actions or the detail page. Items are soft-deleted so they can be restored by a workspace admin if needed.`;\n }\n\n if (lower.includes('report') || lower.includes('export')) {\n return `EcoImpactHub can generate ESG and sustainability reports from the **Reports** page. You can also export list views using the export action where available.`;\n }\n\n return `Thanks for your message. I'm the EcoImpactHub assistant, currently viewing **${pageName}**.\\n\\nI can help explain this screen, suggest workflows, or point you to the right module. For live data operations, use the controls on the page directly.`;\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Returns a memoized `AssistantTransport` wired to a lightweight, page-aware\n * EcoImpactHub responder. The transport fulfills the fe-libs AssistantWidget\n * contract and degrades gracefully when no AI backend is configured.\n */\nexport function useSandboxAssistantTransport(): AssistantTransport {\n const { pathname } = useLocation();\n const context = useMemo(() => resolvePageContext(pathname), [pathname]);\n\n const sendPrompt = useCallback(\n async ({ prompt, onProgress, signal }: AssistantSendArgs): Promise<{ text: string }> => {\n const response = buildContextualResponse(prompt, context);\n\n // Simulate a short streaming response so the widget UI shows progress.\n const words = response.split(' ');\n let partial = '';\n for (let i = 0; i < words.length; i++) {\n if (signal.aborted) {\n throw new Error('Cancelled');\n }\n partial += (i === 0 ? '' : ' ') + words[i];\n onProgress(partial);\n await delay(12);\n }\n\n return { text: response };\n },\n [context]\n );\n\n return useMemo<AssistantTransport>(() => ({ sendPrompt }), [sendPrompt]);\n}\n"],"mappings":";;;AAmCA,SAAS,EAAmB,GAA+B;CACzD,IAAM,IAAW,EAAS,MAAM,IAAI,CAAC,OAAO,QAAQ,EAC9C,IAAe,EAAS,WAAW,MAAM,MAAM,eAAe,EAE9D,CAAC,GAAM,KADW,KAAgB,IAAI,EAAS,MAAM,IAAe,EAAE,GAAG;AAE/E,QAAO;EAAE,MAAM;EAAU,MAAM,KAAQ;EAAa;EAAU;;AAGhE,SAAS,EAAwB,GAAgB,GAA8B;CAC7E,IAAM,EAAE,SAAM,gBAAa,GACrB,IAAQ,EAAO,aAAa,EAE5B,IACJ;EACE,WAAW;EACX,OAAO;EACP,YAAY;EACZ,SAAS;EACT,cAAc;EACd,SAAS;EACT,QAAQ;EACR,SAAS;EACV,CAAC,MAAS;AAkBb,QAhBI,EAAM,SAAS,OAAO,IAAI,EAAM,SAAS,OAAO,IAAI,EAAM,SAAS,MAAM,GACpE,mBAAmB,EAAS,kMAAkM,IAAW,uCAAuC,EAAS,MAAM,mCAGpS,EAAM,SAAS,SAAS,IAAI,EAAM,SAAS,MAAM,IAAI,EAAM,SAAS,MAAM,GACrE,+BAA+B,EAAS,+HAG7C,EAAM,SAAS,SAAS,IAAI,EAAM,SAAS,SAAS,GAC/C,iBAAiB,EAAS,2JAG/B,EAAM,SAAS,SAAS,IAAI,EAAM,SAAS,SAAS,GAC/C,gKAGF,gFAAgF,EAAS;;AAGlG,SAAS,EAAM,GAA2B;AACxC,QAAO,IAAI,SAAS,MAAY,WAAW,GAAS,EAAG,CAAC;;AAQ1D,SAAgB,IAAmD;CACjE,IAAM,EAAE,gBAAa,GAAa,EAC5B,IAAU,QAAc,EAAmB,EAAS,EAAE,CAAC,EAAS,CAAC,EAEjE,IAAa,EACjB,OAAO,EAAE,WAAQ,eAAY,gBAA2D;EACtF,IAAM,IAAW,EAAwB,GAAQ,EAAQ,EAGnD,IAAQ,EAAS,MAAM,IAAI,EAC7B,IAAU;AACd,OAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK;AACrC,OAAI,EAAO,QACT,OAAU,MAAM,YAAY;AAI9B,GAFA,MAAY,MAAM,IAAI,KAAK,OAAO,EAAM,IACxC,EAAW,EAAQ,EACnB,MAAM,EAAM,GAAG;;AAGjB,SAAO,EAAE,MAAM,GAAU;IAE3B,CAAC,EAAQ,CACV;AAED,QAAO,SAAmC,EAAE,eAAY,GAAG,CAAC,EAAW,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * EcoImpactHub services
3
+ * @module ecoimpacthub/services
4
+ */
5
+ export { useSandboxAssistantTransport, type AssistantTransport, } from './createSandboxAssistantTransport';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ecoimpacthub/services/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,4BAA4B,EAC5B,KAAK,kBAAkB,GACxB,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1 @@
1
+ import "./createSandboxAssistantTransport.js";
@@ -0,0 +1,417 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ export interface NavItem {
4
+ id: string;
5
+ label: string;
6
+ path: string;
7
+ icon?: ReactNode;
8
+ badge?: number;
9
+ order?: number;
10
+ group?: string;
11
+ visible?: boolean;
12
+ external?: boolean;
13
+ children?: NavItem[];
14
+ }
15
+ export interface FooterItem {
16
+ id: string;
17
+ label: string;
18
+ icon?: string;
19
+ onClick?: () => void;
20
+ type?: 'status' | 'action' | 'info';
21
+ order?: number;
22
+ badge?: string;
23
+ section?: 'left' | 'center' | 'right';
24
+ visible?: boolean;
25
+ }
26
+ /**
27
+ * Props for the EcoImpactHubRoot component. Host-contract preserving: the app
28
+ * shell spreads `workspaceBaseProps` (basePath, currentUser, workspaceId,
29
+ * tenantId, apiGatewayUrl, authToken, navigate, registerNavItems,
30
+ * registerFooterItems) onto this component.
31
+ */
32
+ export interface EcoImpactHubRootProps {
33
+ basePath?: string;
34
+ workspaceId?: string;
35
+ tenantId?: string;
36
+ apiGatewayUrl?: string;
37
+ authToken?: string;
38
+ navigate?: (path: string) => void;
39
+ currentUser?: {
40
+ id: string;
41
+ email: string;
42
+ firstName?: string;
43
+ lastName?: string;
44
+ avatar?: string;
45
+ username?: string;
46
+ name?: string;
47
+ role?: string;
48
+ } | null;
49
+ registerNavItems?: (items: NavItem | NavItem[]) => () => void;
50
+ registerFooterItems?: (items: FooterItem | FooterItem[]) => () => void;
51
+ }
52
+ export type TrendDirection = 'up' | 'down' | 'neutral';
53
+ /**
54
+ * The svc `PaginationInput` accepts { limit, offset, cursor } but the resolver
55
+ * uses cursor+limit only (offset is a no-op). We drive pages by cursor:
56
+ * pass `pagination.cursor = previous pageInfo.cursor` for the next page.
57
+ */
58
+ export interface PaginationInput {
59
+ limit?: number;
60
+ offset?: number;
61
+ cursor?: string | null;
62
+ }
63
+ /** All Eco*PageInfo variants are structurally { cursor, hasMore }. */
64
+ export interface EcoPageInfo {
65
+ cursor?: string | null;
66
+ hasMore: boolean;
67
+ }
68
+ export interface EcoConnection<T> {
69
+ items: T[];
70
+ pageInfo: EcoPageInfo;
71
+ }
72
+ export interface EcoFileRef {
73
+ id: string;
74
+ name?: string | null;
75
+ url?: string | null;
76
+ mimeType?: string | null;
77
+ sizeBytes?: number | null;
78
+ }
79
+ export type EcoSiteType = 'FACILITY' | 'WATERSHED' | 'FOREST' | 'WETLAND' | 'FARM' | 'PROTECTED_AREA' | 'AIRSHED' | 'COASTAL' | 'OTHER';
80
+ export type EcoSiteStatus = 'ACTIVE' | 'MONITORING_PAUSED' | 'ARCHIVED';
81
+ export type EcoSensorKind = 'AIR_QUALITY' | 'WATER_QUALITY' | 'WEATHER' | 'SOIL' | 'ENERGY_METER' | 'FLOW' | 'ACOUSTIC' | 'CAMERA_TRAP' | 'MANUAL';
82
+ export type EcoSensorStatus = 'ONLINE' | 'OFFLINE' | 'DEGRADED' | 'MAINTENANCE' | 'RETIRED';
83
+ export type EcoMeasurementSource = 'SENSOR' | 'MANUAL' | 'SATELLITE' | 'IMPORT' | 'CALCULATED';
84
+ export type EcoThresholdDirection = 'ABOVE' | 'BELOW' | 'OUTSIDE_RANGE';
85
+ export type EcoThresholdSeverity = 'INFO' | 'WARNING' | 'CRITICAL';
86
+ export type EcoConservationStatus = 'LEAST_CONCERN' | 'NEAR_THREATENED' | 'VULNERABLE' | 'ENDANGERED' | 'CRITICALLY_ENDANGERED' | 'EXTINCT_IN_WILD' | 'DATA_DEFICIENT' | 'NOT_EVALUATED';
87
+ export type EcoTaxonGroup = 'MAMMAL' | 'BIRD' | 'REPTILE' | 'AMPHIBIAN' | 'FISH' | 'INSECT' | 'PLANT' | 'FUNGI' | 'OTHER';
88
+ export type EcoObservationMethod = 'DIRECT_SIGHTING' | 'CAMERA_TRAP' | 'ACOUSTIC' | 'TRACKS_SIGNS' | 'EDNA' | 'TELEMETRY' | 'COMMUNITY_REPORT';
89
+ export type EcoHabitatProjectStatus = 'PLANNED' | 'IN_PROGRESS' | 'MONITORING' | 'COMPLETED' | 'ON_HOLD' | 'CANCELLED';
90
+ export type EcoRestorationActivityType = 'PLANTING' | 'INVASIVE_REMOVAL' | 'REWILDING' | 'WATER_MANAGEMENT' | 'SOIL_REMEDIATION' | 'COMMUNITY_ENGAGEMENT' | 'SURVEY';
91
+ export type EcoEmissionScope = 'SCOPE_1' | 'SCOPE_2' | 'SCOPE_3';
92
+ export type EcoCarbonEntryStatus = 'DRAFT' | 'RECORDED' | 'VERIFIED' | 'ADJUSTED';
93
+ export type EcoReportStatus = 'DRAFT' | 'IN_REVIEW' | 'PUBLISHED' | 'ARCHIVED';
94
+ export type EcoReportFramework = 'GHG_PROTOCOL' | 'GRI' | 'TCFD' | 'CDP' | 'SASB' | 'CUSTOM';
95
+ export type EcoReductionTargetStatus = 'PROPOSED' | 'ACTIVE' | 'ACHIEVED' | 'MISSED' | 'RETIRED';
96
+ export interface EcoSite {
97
+ id: string;
98
+ workspaceId: string;
99
+ name: string;
100
+ code?: string | null;
101
+ type: EcoSiteType;
102
+ status: EcoSiteStatus;
103
+ description?: string | null;
104
+ latitude?: number | null;
105
+ longitude?: number | null;
106
+ areaHectares?: number | null;
107
+ country?: string | null;
108
+ region?: string | null;
109
+ sensors?: EcoSensor[];
110
+ thresholds?: EcoAlertThreshold[];
111
+ createdAt: string;
112
+ updatedAt: string;
113
+ }
114
+ export interface EcoSensor {
115
+ id: string;
116
+ workspaceId: string;
117
+ siteId: string;
118
+ name: string;
119
+ kind: EcoSensorKind;
120
+ status: EcoSensorStatus;
121
+ hardwareId?: string | null;
122
+ unit?: string | null;
123
+ lastReadingAt?: string | null;
124
+ installedAt?: string | null;
125
+ site?: EcoSite | null;
126
+ createdAt: string;
127
+ updatedAt: string;
128
+ }
129
+ export interface EcoMeasurement {
130
+ id: string;
131
+ workspaceId: string;
132
+ siteId: string;
133
+ sensorId?: string | null;
134
+ parameter: string;
135
+ value: number;
136
+ unit: string;
137
+ source: EcoMeasurementSource;
138
+ recordedAt: string;
139
+ isBreach: boolean;
140
+ notes?: string | null;
141
+ createdAt: string;
142
+ updatedAt: string;
143
+ }
144
+ export interface EcoAlertThreshold {
145
+ id: string;
146
+ workspaceId: string;
147
+ siteId: string;
148
+ parameter: string;
149
+ direction: EcoThresholdDirection;
150
+ severity: EcoThresholdSeverity;
151
+ limitValue?: number | null;
152
+ minValue?: number | null;
153
+ maxValue?: number | null;
154
+ unit: string;
155
+ isActive: boolean;
156
+ createdAt: string;
157
+ updatedAt: string;
158
+ }
159
+ export interface EcoSpecies {
160
+ id: string;
161
+ workspaceId: string;
162
+ commonName: string;
163
+ scientificName?: string | null;
164
+ taxonGroup: EcoTaxonGroup;
165
+ conservationStatus: EcoConservationStatus;
166
+ isPriority: boolean;
167
+ description?: string | null;
168
+ observations?: EcoObservation[];
169
+ createdAt: string;
170
+ updatedAt: string;
171
+ }
172
+ export interface EcoObservation {
173
+ id: string;
174
+ workspaceId: string;
175
+ speciesId: string;
176
+ siteId?: string | null;
177
+ method: EcoObservationMethod;
178
+ count: number;
179
+ observedAt: string;
180
+ latitude?: number | null;
181
+ longitude?: number | null;
182
+ observerId?: string | null;
183
+ notes?: string | null;
184
+ evidence?: EcoFileRef | null;
185
+ species?: EcoSpecies | null;
186
+ createdAt: string;
187
+ updatedAt: string;
188
+ }
189
+ export interface EcoHabitatProject {
190
+ id: string;
191
+ workspaceId: string;
192
+ name: string;
193
+ status: EcoHabitatProjectStatus;
194
+ description?: string | null;
195
+ siteId?: string | null;
196
+ targetHectares?: number | null;
197
+ budgetAmount: number;
198
+ currency: string;
199
+ managerId?: string | null;
200
+ startDate?: string | null;
201
+ endDate?: string | null;
202
+ completedAt?: string | null;
203
+ activities?: EcoRestorationActivity[];
204
+ createdAt: string;
205
+ updatedAt: string;
206
+ }
207
+ export interface EcoRestorationActivity {
208
+ id: string;
209
+ workspaceId: string;
210
+ projectId: string;
211
+ type: EcoRestorationActivityType;
212
+ summary: string;
213
+ details?: string | null;
214
+ quantity?: number | null;
215
+ unit?: string | null;
216
+ performedAt: string;
217
+ createdAt: string;
218
+ updatedAt: string;
219
+ }
220
+ export interface EcoEmissionFactor {
221
+ id: string;
222
+ workspaceId: string;
223
+ name: string;
224
+ scope: EcoEmissionScope;
225
+ activityUnit: string;
226
+ factorKgco2e: number;
227
+ source?: string | null;
228
+ validYear?: number | null;
229
+ isActive: boolean;
230
+ createdAt: string;
231
+ updatedAt: string;
232
+ }
233
+ export interface EcoCarbonEntry {
234
+ id: string;
235
+ workspaceId: string;
236
+ siteId?: string | null;
237
+ factorId?: string | null;
238
+ scope: EcoEmissionScope;
239
+ status: EcoCarbonEntryStatus;
240
+ category: string;
241
+ activityValue: number;
242
+ activityUnit: string;
243
+ co2eKg: number;
244
+ periodStart: string;
245
+ notes?: string | null;
246
+ factor?: EcoEmissionFactor | null;
247
+ createdAt: string;
248
+ updatedAt: string;
249
+ }
250
+ export interface EcoReductionTarget {
251
+ id: string;
252
+ workspaceId: string;
253
+ name: string;
254
+ status: EcoReductionTargetStatus;
255
+ metric: string;
256
+ baselineYear: number;
257
+ baselineValue: number;
258
+ targetYear: number;
259
+ targetValue: number;
260
+ unit: string;
261
+ description?: string | null;
262
+ createdAt: string;
263
+ updatedAt: string;
264
+ }
265
+ export interface EcoReport {
266
+ id: string;
267
+ workspaceId: string;
268
+ title: string;
269
+ framework: EcoReportFramework;
270
+ status: EcoReportStatus;
271
+ periodStart: string;
272
+ periodEnd: string;
273
+ summary?: string | null;
274
+ file?: EcoFileRef | null;
275
+ publishedAt?: string | null;
276
+ lineItems?: EcoReportLineItem[];
277
+ createdAt: string;
278
+ updatedAt: string;
279
+ }
280
+ export interface EcoReportLineItem {
281
+ id: string;
282
+ workspaceId: string;
283
+ reportId: string;
284
+ carbonEntryId?: string | null;
285
+ label: string;
286
+ value: number;
287
+ unit: string;
288
+ category?: string | null;
289
+ createdAt: string;
290
+ updatedAt: string;
291
+ }
292
+ export interface EcoCreateSiteInput {
293
+ name: string;
294
+ code?: string | null;
295
+ type?: EcoSiteType;
296
+ status?: EcoSiteStatus;
297
+ description?: string | null;
298
+ latitude?: number | null;
299
+ longitude?: number | null;
300
+ areaHectares?: number | null;
301
+ country?: string | null;
302
+ region?: string | null;
303
+ }
304
+ export type EcoUpdateSiteInput = Partial<EcoCreateSiteInput>;
305
+ export interface EcoCreateSensorInput {
306
+ name: string;
307
+ siteId: string;
308
+ kind?: EcoSensorKind;
309
+ status?: EcoSensorStatus;
310
+ hardwareId?: string | null;
311
+ unit?: string | null;
312
+ installedAt?: string | null;
313
+ }
314
+ export interface EcoRecordMeasurementInput {
315
+ siteId: string;
316
+ parameter: string;
317
+ value: number;
318
+ unit: string;
319
+ recordedAt: string;
320
+ sensorId?: string | null;
321
+ source?: EcoMeasurementSource;
322
+ notes?: string | null;
323
+ }
324
+ export interface EcoCreateThresholdInput {
325
+ siteId: string;
326
+ parameter: string;
327
+ unit: string;
328
+ direction?: EcoThresholdDirection;
329
+ severity?: EcoThresholdSeverity;
330
+ limitValue?: number | null;
331
+ minValue?: number | null;
332
+ maxValue?: number | null;
333
+ }
334
+ export interface EcoCreateSpeciesInput {
335
+ commonName: string;
336
+ scientificName?: string | null;
337
+ taxonGroup?: EcoTaxonGroup;
338
+ conservationStatus?: EcoConservationStatus;
339
+ isPriority?: boolean;
340
+ description?: string | null;
341
+ }
342
+ export type EcoUpdateSpeciesInput = Partial<EcoCreateSpeciesInput>;
343
+ export interface EcoRecordObservationInput {
344
+ speciesId: string;
345
+ observedAt: string;
346
+ count?: number;
347
+ method?: EcoObservationMethod;
348
+ siteId?: string | null;
349
+ latitude?: number | null;
350
+ longitude?: number | null;
351
+ notes?: string | null;
352
+ evidenceFileId?: string | null;
353
+ }
354
+ export interface EcoCreateHabitatProjectInput {
355
+ name: string;
356
+ description?: string | null;
357
+ siteId?: string | null;
358
+ targetHectares?: number | null;
359
+ budgetAmount?: number | null;
360
+ currency?: string | null;
361
+ managerId?: string | null;
362
+ startDate?: string | null;
363
+ endDate?: string | null;
364
+ }
365
+ export interface EcoLogRestorationActivityInput {
366
+ projectId: string;
367
+ summary: string;
368
+ performedAt: string;
369
+ type?: EcoRestorationActivityType;
370
+ details?: string | null;
371
+ quantity?: number | null;
372
+ unit?: string | null;
373
+ }
374
+ export interface EcoCreateEmissionFactorInput {
375
+ name: string;
376
+ activityUnit: string;
377
+ factorKgco2e: number;
378
+ scope?: EcoEmissionScope;
379
+ source?: string | null;
380
+ validYear?: number | null;
381
+ }
382
+ export interface EcoRecordCarbonEntryInput {
383
+ category: string;
384
+ activityValue: number;
385
+ activityUnit: string;
386
+ periodStart: string;
387
+ scope?: EcoEmissionScope;
388
+ factorId?: string | null;
389
+ siteId?: string | null;
390
+ notes?: string | null;
391
+ }
392
+ export interface EcoCreateReductionTargetInput {
393
+ name: string;
394
+ metric: string;
395
+ baselineValue: number;
396
+ baselineYear: number;
397
+ targetValue: number;
398
+ targetYear: number;
399
+ unit: string;
400
+ description?: string | null;
401
+ }
402
+ export interface EcoCreateReportInput {
403
+ title: string;
404
+ periodStart: string;
405
+ periodEnd: string;
406
+ framework?: EcoReportFramework;
407
+ summary?: string | null;
408
+ }
409
+ export interface EcoAddReportLineItemInput {
410
+ reportId: string;
411
+ label: string;
412
+ value: number;
413
+ unit: string;
414
+ category?: string | null;
415
+ carbonEntryId?: string | null;
416
+ }
417
+ //# sourceMappingURL=index.d.ts.map