@elevasis/ui 2.44.0 → 2.45.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/dist/app/index.js +2 -2
- package/dist/auth/index.js +2 -2
- package/dist/charts/index.js +2 -2
- package/dist/{chunk-BRXELOHC.js → chunk-MKH2KOAO.js} +1 -9
- package/dist/{chunk-B75DHNNJ.js → chunk-UBTSEZJK.js} +169 -218
- package/dist/components/index.js +2 -2
- package/dist/components/navigation/index.js +2 -2
- package/dist/features/auth/index.js +3 -3
- package/dist/features/clients/index.js +2 -2
- package/dist/features/crm/index.js +2 -2
- package/dist/features/dashboard/index.js +2 -2
- package/dist/features/delivery/index.js +2 -2
- package/dist/features/knowledge/index.js +2 -2
- package/dist/features/lead-gen/index.js +2 -2
- package/dist/features/monitoring/index.js +2 -2
- package/dist/features/monitoring/requests/index.js +3 -3
- package/dist/features/operations/index.js +2 -2
- package/dist/features/settings/index.js +2 -2
- package/dist/hooks/access/index.js +2 -2
- package/dist/hooks/delivery/index.js +2 -2
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.js +2 -2
- package/dist/hooks/published.d.ts +0 -1
- package/dist/hooks/published.js +2 -2
- package/dist/index.d.ts +0 -1
- package/dist/index.js +2 -2
- package/dist/knowledge/index.js +5 -5
- package/dist/{knowledge-search-index-NBCTFIOH.js → knowledge-search-index-MHOBQTT3.js} +2 -2
- package/dist/layout/index.js +2 -2
- package/dist/organization/index.js +2 -2
- package/dist/provider/index.js +2 -2
- package/dist/provider/published.js +2 -2
- package/dist/supabase/index.d.ts +3 -4
- package/dist/supabase/index.js +1 -1
- package/package.json +7 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { glassBase, mantineThemeOverride, createCssVariablesResolver, PresetsProvider, useAvailablePresets } from './chunk-NZ2F5RQ4.js';
|
|
2
2
|
import { PRESETS, getPreset, AppBackground, generateShades } from './chunk-OJJK27GC.js';
|
|
3
|
-
import { useSupabase } from './chunk-
|
|
3
|
+
import { useSupabase } from './chunk-MKH2KOAO.js';
|
|
4
4
|
import { StyledMarkdown, ChatHeader, ChatSidebar } from './chunk-GUKY77FJ.js';
|
|
5
5
|
import { CardHeader } from './chunk-S3XR4II4.js';
|
|
6
6
|
import { useInitialization, InitializationContext, InitializationProvider } from './chunk-6DO4PE3O.js';
|
|
@@ -2418,6 +2418,7 @@ function deriveActions(deal, actions = []) {
|
|
|
2418
2418
|
}
|
|
2419
2419
|
|
|
2420
2420
|
// ../core/src/organization-model/contracts.ts
|
|
2421
|
+
var PROJECTS_SYSTEM_ID = "platform.projects";
|
|
2421
2422
|
var PROJECTS_VIEW_ACTION_ID = "delivery.projects.view";
|
|
2422
2423
|
|
|
2423
2424
|
// ../core/src/organization-model/defaults.ts
|
|
@@ -4837,7 +4838,7 @@ var ConfirmationModal = ({
|
|
|
4837
4838
|
/* @__PURE__ */ jsx(Text, { size: "sm", c: "var(--color-text-dimmed)", style: { textAlign: centerText ? "center" : "left" }, children: text }),
|
|
4838
4839
|
/* @__PURE__ */ jsx(Space, { h: 16 })
|
|
4839
4840
|
] }),
|
|
4840
|
-
/* @__PURE__ */ jsx(Button, { color: buttonColor
|
|
4841
|
+
/* @__PURE__ */ jsx(Button, { color: buttonColor, fullWidth: true, onClick: confirmationHandler, loading, children: buttonText || "Confirm" })
|
|
4841
4842
|
] });
|
|
4842
4843
|
};
|
|
4843
4844
|
var ConfirmationInputModal = ({
|
|
@@ -4881,7 +4882,7 @@ var ConfirmationInputModal = ({
|
|
|
4881
4882
|
/* @__PURE__ */ jsx(
|
|
4882
4883
|
Button,
|
|
4883
4884
|
{
|
|
4884
|
-
color: buttonColor
|
|
4885
|
+
color: buttonColor,
|
|
4885
4886
|
fullWidth: true,
|
|
4886
4887
|
onClick: confirmationHandler,
|
|
4887
4888
|
loading,
|
|
@@ -6373,7 +6374,7 @@ function GlowDot({ color, size = "md" }) {
|
|
|
6373
6374
|
}
|
|
6374
6375
|
var STATUS_COLORS2 = {
|
|
6375
6376
|
// Project
|
|
6376
|
-
active:
|
|
6377
|
+
active: void 0,
|
|
6377
6378
|
on_track: "green",
|
|
6378
6379
|
at_risk: "yellow",
|
|
6379
6380
|
blocked: "red",
|
|
@@ -6381,7 +6382,7 @@ var STATUS_COLORS2 = {
|
|
|
6381
6382
|
paused: "gray",
|
|
6382
6383
|
// Milestone
|
|
6383
6384
|
upcoming: "gray",
|
|
6384
|
-
in_progress:
|
|
6385
|
+
in_progress: void 0,
|
|
6385
6386
|
overdue: "red",
|
|
6386
6387
|
// Task
|
|
6387
6388
|
pending: "gray",
|
|
@@ -6392,7 +6393,7 @@ var STATUS_COLORS2 = {
|
|
|
6392
6393
|
revision_requested: "orange",
|
|
6393
6394
|
cancelled: "gray",
|
|
6394
6395
|
// Note
|
|
6395
|
-
call_note:
|
|
6396
|
+
call_note: void 0,
|
|
6396
6397
|
status_update: "green",
|
|
6397
6398
|
issue: "yellow",
|
|
6398
6399
|
blocker: "red",
|
|
@@ -6400,7 +6401,8 @@ var STATUS_COLORS2 = {
|
|
|
6400
6401
|
};
|
|
6401
6402
|
function StatusBadge({ status, ...props }) {
|
|
6402
6403
|
const label = status.split("_").map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
|
|
6403
|
-
|
|
6404
|
+
const color = Object.prototype.hasOwnProperty.call(STATUS_COLORS2, status) ? STATUS_COLORS2[status] : "gray";
|
|
6405
|
+
return /* @__PURE__ */ jsx(Badge, { variant: "light", color, size: "sm", ...props, children: label });
|
|
6404
6406
|
}
|
|
6405
6407
|
var ICON_MAP = {
|
|
6406
6408
|
deal_created: IconPlus,
|
|
@@ -7428,25 +7430,15 @@ function ExecutionBreakdownTable({ data, isLoading, error }) {
|
|
|
7428
7430
|
/* @__PURE__ */ jsx(Table.Th, { ta: "right", children: "Percentage" }),
|
|
7429
7431
|
/* @__PURE__ */ jsx(Table.Th, { ta: "right", children: "Avg Duration" })
|
|
7430
7432
|
] }) }),
|
|
7431
|
-
/* @__PURE__ */ jsx(Table.Tbody, { children: statusRows.map((row) => /* @__PURE__ */ jsxs(
|
|
7432
|
-
Table.
|
|
7433
|
-
{
|
|
7434
|
-
|
|
7435
|
-
|
|
7436
|
-
|
|
7437
|
-
|
|
7438
|
-
|
|
7439
|
-
|
|
7440
|
-
/* @__PURE__ */ jsx(Table.Td, { ta: "right", children: /* @__PURE__ */ jsx(Text, { size: "sm", fw: 500, children: row.count.toLocaleString() }) }),
|
|
7441
|
-
/* @__PURE__ */ jsx(Table.Td, { ta: "right", children: /* @__PURE__ */ jsxs(Text, { size: "sm", children: [
|
|
7442
|
-
row.percentage.toFixed(1),
|
|
7443
|
-
"%"
|
|
7444
|
-
] }) }),
|
|
7445
|
-
/* @__PURE__ */ jsx(Table.Td, { ta: "right", children: /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: row.avgDuration > 0 ? `${(row.avgDuration / 1e3).toFixed(1)}s` : "-" }) })
|
|
7446
|
-
]
|
|
7447
|
-
},
|
|
7448
|
-
row.status
|
|
7449
|
-
)) })
|
|
7433
|
+
/* @__PURE__ */ jsx(Table.Tbody, { children: statusRows.map((row) => /* @__PURE__ */ jsxs(Table.Tr, { children: [
|
|
7434
|
+
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Badge, { color: row.color, variant: "light", children: row.status }) }),
|
|
7435
|
+
/* @__PURE__ */ jsx(Table.Td, { ta: "right", children: /* @__PURE__ */ jsx(Text, { size: "sm", fw: 500, children: row.count.toLocaleString() }) }),
|
|
7436
|
+
/* @__PURE__ */ jsx(Table.Td, { ta: "right", children: /* @__PURE__ */ jsxs(Text, { size: "sm", children: [
|
|
7437
|
+
row.percentage.toFixed(1),
|
|
7438
|
+
"%"
|
|
7439
|
+
] }) }),
|
|
7440
|
+
/* @__PURE__ */ jsx(Table.Td, { ta: "right", children: /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: row.avgDuration > 0 ? `${(row.avgDuration / 1e3).toFixed(1)}s` : "-" }) })
|
|
7441
|
+
] }, row.status)) })
|
|
7450
7442
|
] })
|
|
7451
7443
|
] });
|
|
7452
7444
|
}
|
|
@@ -18322,8 +18314,7 @@ function CredentialSettings({ oauthSection }) {
|
|
|
18322
18314
|
const [showCreateModal, setShowCreateModal] = useState(false);
|
|
18323
18315
|
const { data: credentials = [], isLoading } = useCredentials();
|
|
18324
18316
|
if (!organizationReady) return /* @__PURE__ */ jsx(AppShellLoader, {});
|
|
18325
|
-
const handleCredentialCreated = (
|
|
18326
|
-
console.log("Credential created:", result);
|
|
18317
|
+
const handleCredentialCreated = () => {
|
|
18327
18318
|
setShowCreateModal(false);
|
|
18328
18319
|
};
|
|
18329
18320
|
return /* @__PURE__ */ jsxs(Stack, { children: [
|
|
@@ -22452,7 +22443,7 @@ var ENTITY_ENTRY_INPUTS = [
|
|
|
22452
22443
|
order: 60,
|
|
22453
22444
|
label: "Project",
|
|
22454
22445
|
description: "A project.",
|
|
22455
|
-
ownedBySystemId: "projects",
|
|
22446
|
+
ownedBySystemId: "platform.projects",
|
|
22456
22447
|
table: "projects",
|
|
22457
22448
|
links: [
|
|
22458
22449
|
{ toEntity: "delivery.milestone", kind: "has-many", via: "project_id", label: "milestones" },
|
|
@@ -22464,7 +22455,7 @@ var ENTITY_ENTRY_INPUTS = [
|
|
|
22464
22455
|
order: 70,
|
|
22465
22456
|
label: "Milestone",
|
|
22466
22457
|
description: "A checkpoint within a project.",
|
|
22467
|
-
ownedBySystemId: "projects",
|
|
22458
|
+
ownedBySystemId: "platform.projects",
|
|
22468
22459
|
table: "project_milestones",
|
|
22469
22460
|
links: [
|
|
22470
22461
|
{ toEntity: "delivery.project", kind: "belongs-to", via: "project_id", label: "project" },
|
|
@@ -22476,7 +22467,7 @@ var ENTITY_ENTRY_INPUTS = [
|
|
|
22476
22467
|
order: 80,
|
|
22477
22468
|
label: "Task",
|
|
22478
22469
|
description: "A task that can move through the task status catalog.",
|
|
22479
|
-
ownedBySystemId: "projects",
|
|
22470
|
+
ownedBySystemId: "platform.projects",
|
|
22480
22471
|
table: "project_tasks",
|
|
22481
22472
|
stateCatalogId: "delivery.task",
|
|
22482
22473
|
links: [
|
|
@@ -22532,7 +22523,7 @@ var mdxKnowledgeNodes = [
|
|
|
22532
22523
|
"title": "New Vertical Launch Playbook",
|
|
22533
22524
|
"summary": "Zero-to-first-campaign workflow for launching a new acquisition vertical: batch definition, tracker setup, lead generation stages, campaign launch, and monitoring.",
|
|
22534
22525
|
"icon": "playbook",
|
|
22535
|
-
"body": '## Overview\n\nUse this playbook when launching a new acquisition vertical from zero to first campaign. A vertical launch turns an audience hypothesis such as independent dental practices, auto repair shops, or bookkeeping firms into a tracked lead generation batch, qualified contacts, a draft Instantly campaign, and an active monitoring loop.\n\nThe workflow has five phases:\n\n1. Define the batch and qualification rules.\n2. Create the batch tracker.\n3. Run the lead generation pipeline.\n4. Launch the outreach campaign.\n5. Monitor replies and campaign quality.\n\n## Define the Batch\n\nChoose a batch ID using the acquisition naming convention: `{vertical}-{number}`, for example `dental-1`, `auto-1`, or `home-1`.\n\nRecord the batch configuration in the tracker before running pipeline stages. At minimum, capture:\n\n- Target description, such as "independent dental practices in Orange County, California".\n- Search queries for the initial source pull.\n- Region: county, state, country, or other geography accepted by the scraper workflow.\n- Minimum review count and minimum rating, when Google Maps quality thresholds matter.\n- Custom disqualification rules, such as excluding chains, franchises, pediatric-only practices, or irrelevant subcategories.\n- Website crawl keywords, such as `about`, `team`, `staff`, `contact`, `services`, or vertical-specific service pages.\n\nUse `packages/elevasis-operations/src/sales/prospecting/constants.ts` as the batch registry. Current launch work should keep the tracker as the human-readable source and pass qualification criteria through the workflow input, list qualification metadata, or the registered batch config for the stage being run.\n\n## Create the Batch Tracker\n\nCreate a tracker from the acquisition batch template:\n\n```text\napps/docs/content/docs/operations/client-acquisition/outreach/batches/_template.mdx\n```\n\nPlace the new tracker in the pending batch directory:\n\n```text\napps/docs/content/docs/operations/client-acquisition/outreach/batches/pending/{batch-id}.mdx\n```\n\nFill in the frontmatter with `status: in-progress`, then complete the batch configuration table before running pipeline work. The tracker should make it possible to reconstruct the vertical, region, search inputs, disqualification rules, and campaign state without reading execution logs.\n\n## Run Lead Generation\n\nRun the lead generation stages with the platform CLI from the monorepo root so `.env.development` and `.env.production` resolve correctly.\n\n### Stage 01: Google Maps Scrape\n\nUse the Google Maps scrape workflow to acquire initial companies:\n\n```bash\npnpm exec elevasis exec Elevasis/lgn-01a-google-maps-scrape-workflow --input \'{"searchQueries":["dentist","dental clinic"],"county":"Orange County","state":"California"}\' --async\n```\n\nAfter the execution starts, record the execution ID and source counts in the batch tracker.\n\n### Local Website Crawl\n\nRun the local website crawler against the batch:\n\n```bash\npnpm -C scripts/web-scraper run crawl -- {batch-id}\n```\n\nThe crawl should capture relevant sub-pages for LLM extraction. If vertical-specific keywords are not available in the active code path, use the default crawl coverage and note any manual crawl gaps in the tracker before extraction.\n\n### Stage 02: Website Extract\n\nExtract structured company profile data from crawl output:\n\n```bash\npnpm exec elevasis exec Elevasis/lgn-02-website-extract-workflow --input \'{"batchId":"{batch-id}"}\' --async\n```\n\n### Stage 03: Company Qualification\n\nQualify companies using the target description, review thresholds, rating thresholds, and custom rules captured in the tracker. If the workflow does not resolve criteria automatically for the batch, pass the criteria explicitly in the input or attach them through the list qualification surface before running the stage.\n\n```bash\npnpm exec elevasis exec Elevasis/lgn-03-company-qualification-workflow --input \'{"batchId":"{batch-id}","criteria":{"targetDescription":"Independent dental practices in Orange County, California","minimumReviewCount":5,"minimumRating":3,"customRules":"Disqualify franchises and chains. Disqualify orthodontics-only and pediatric-only practices."}}\' --async\n```\n\nFor list-oriented runs, use `listId` instead of `batchId`; list configuration takes priority over the batch registry unless an explicit `criteria` override is provided.\n\n### Stage 04: Email Discovery\n\nDiscover contacts for qualified companies:\n\n```bash\npnpm exec elevasis exec Elevasis/lgn-04-email-discovery-workflow --input \'{"batchId":"{batch-id}"}\' --async\n```\n\n### Stage 05: Email Verification\n\nVerify discovered emails before campaign upload:\n\n```bash\npnpm exec elevasis exec Elevasis/lgn-05-email-verification-workflow --input \'{"batchId":"{batch-id}"}\' --async\n```\n\nWhen verification completes, update the tracker with company counts, contact counts, usable email counts, and set the batch status to `ready` if campaign launch prerequisites are satisfied.\n\n## Launch the Campaign\n\nUse the acquisition outreach workflow to move a ready batch into Instantly:\n\n1. Check account inventory with `ist-account-inventory-workflow`.\n2. Personalize contacts with `ist-personalization-workflow`.\n3. Create a draft campaign with `ist-campaign-create-workflow` and `activate: false`.\n4. Create the tracking list with `ist-campaign-list-workflow`.\n5. Upload contacts with `ist-upload-contacts-workflow`, dry run first and then real.\n6. Activate with `ist-campaign-activate-workflow`.\n7. Update the tracker to `status: active` and fill in campaign metadata.\n\nKeep the first campaign small enough to evaluate copy and deliverability. Prefer 100-200 contacts per segment, 1-2 contacts per company, and conservative sending volume until benchmarks are visible.\n\n## Monitor and Optimize\n\nAfter launch, monitor both campaign metrics and inbound replies:\n\n- Use `/acquisition
|
|
22526
|
+
"body": '## Overview\n\nUse this playbook when launching a new acquisition vertical from zero to first campaign. A vertical launch turns an audience hypothesis such as independent dental practices, auto repair shops, or bookkeeping firms into a tracked lead generation batch, qualified contacts, a draft Instantly campaign, and an active monitoring loop.\n\nThe workflow has five phases:\n\n1. Define the batch and qualification rules.\n2. Create the batch tracker.\n3. Run the lead generation pipeline.\n4. Launch the outreach campaign.\n5. Monitor replies and campaign quality.\n\n## Define the Batch\n\nChoose a batch ID using the acquisition naming convention: `{vertical}-{number}`, for example `dental-1`, `auto-1`, or `home-1`.\n\nRecord the batch configuration in the tracker before running pipeline stages. At minimum, capture:\n\n- Target description, such as "independent dental practices in Orange County, California".\n- Search queries for the initial source pull.\n- Region: county, state, country, or other geography accepted by the scraper workflow.\n- Minimum review count and minimum rating, when Google Maps quality thresholds matter.\n- Custom disqualification rules, such as excluding chains, franchises, pediatric-only practices, or irrelevant subcategories.\n- Website crawl keywords, such as `about`, `team`, `staff`, `contact`, `services`, or vertical-specific service pages.\n\nUse `packages/elevasis-operations/src/sales/prospecting/constants.ts` as the batch registry. Current launch work should keep the tracker as the human-readable source and pass qualification criteria through the workflow input, list qualification metadata, or the registered batch config for the stage being run.\n\n## Create the Batch Tracker\n\nCreate a tracker from the acquisition batch template:\n\n```text\napps/docs/content/docs/operations/client-acquisition/outreach/batches/_template.mdx\n```\n\nPlace the new tracker in the pending batch directory:\n\n```text\napps/docs/content/docs/operations/client-acquisition/outreach/batches/pending/{batch-id}.mdx\n```\n\nFill in the frontmatter with `status: in-progress`, then complete the batch configuration table before running pipeline work. The tracker should make it possible to reconstruct the vertical, region, search inputs, disqualification rules, and campaign state without reading execution logs.\n\n## Run Lead Generation\n\nRun the lead generation stages with the platform CLI from the monorepo root so `.env.development` and `.env.production` resolve correctly.\n\n### Stage 01: Google Maps Scrape\n\nUse the Google Maps scrape workflow to acquire initial companies:\n\n```bash\npnpm exec elevasis exec Elevasis/lgn-01a-google-maps-scrape-workflow --input \'{"searchQueries":["dentist","dental clinic"],"county":"Orange County","state":"California"}\' --async\n```\n\nAfter the execution starts, record the execution ID and source counts in the batch tracker.\n\n### Local Website Crawl\n\nRun the local website crawler against the batch:\n\n```bash\npnpm -C scripts/web-scraper run crawl -- {batch-id}\n```\n\nThe crawl should capture relevant sub-pages for LLM extraction. If vertical-specific keywords are not available in the active code path, use the default crawl coverage and note any manual crawl gaps in the tracker before extraction.\n\n### Stage 02: Website Extract\n\nExtract structured company profile data from crawl output:\n\n```bash\npnpm exec elevasis exec Elevasis/lgn-02-website-extract-workflow --input \'{"batchId":"{batch-id}"}\' --async\n```\n\n### Stage 03: Company Qualification\n\nQualify companies using the target description, review thresholds, rating thresholds, and custom rules captured in the tracker. If the workflow does not resolve criteria automatically for the batch, pass the criteria explicitly in the input or attach them through the list qualification surface before running the stage.\n\n```bash\npnpm exec elevasis exec Elevasis/lgn-03-company-qualification-workflow --input \'{"batchId":"{batch-id}","criteria":{"targetDescription":"Independent dental practices in Orange County, California","minimumReviewCount":5,"minimumRating":3,"customRules":"Disqualify franchises and chains. Disqualify orthodontics-only and pediatric-only practices."}}\' --async\n```\n\nFor list-oriented runs, use `listId` instead of `batchId`; list configuration takes priority over the batch registry unless an explicit `criteria` override is provided.\n\n### Stage 04: Email Discovery\n\nDiscover contacts for qualified companies:\n\n```bash\npnpm exec elevasis exec Elevasis/lgn-04-email-discovery-workflow --input \'{"batchId":"{batch-id}"}\' --async\n```\n\n### Stage 05: Email Verification\n\nVerify discovered emails before campaign upload:\n\n```bash\npnpm exec elevasis exec Elevasis/lgn-05-email-verification-workflow --input \'{"batchId":"{batch-id}"}\' --async\n```\n\nWhen verification completes, update the tracker with company counts, contact counts, usable email counts, and set the batch status to `ready` if campaign launch prerequisites are satisfied.\n\n## Launch the Campaign\n\nUse the acquisition outreach workflow to move a ready batch into Instantly:\n\n1. Check account inventory with `ist-account-inventory-workflow`.\n2. Personalize contacts with `ist-personalization-workflow`.\n3. Create a draft campaign with `ist-campaign-create-workflow` and `activate: false`.\n4. Create the tracking list with `ist-campaign-list-workflow`.\n5. Upload contacts with `ist-upload-contacts-workflow`, dry run first and then real.\n6. Activate with `ist-campaign-activate-workflow`.\n7. Update the tracker to `status: active` and fill in campaign metadata.\n\nKeep the first campaign small enough to evaluate copy and deliverability. Prefer 100-200 contacts per segment, 1-2 contacts per company, and conservative sending volume until benchmarks are visible.\n\n## Monitor and Optimize\n\nAfter launch, monitor both campaign metrics and inbound replies:\n\n- Use `/om acquisition outreach` for campaign review and analytics.\n- Use `/om acquisition inbound status` for reply handling and active deal state.\n- Watch open rate, reply rate, positive reply rate, and bounce rate.\n- Pause or repair the campaign if bounce rate rises above the accepted threshold.\n- Rework subject lines, personalization, or offer framing when reply rate is below target.\n\nEvery optimization pass should write back to the tracker: what changed, why it changed, and what result would justify scaling the vertical.\n\n## Launch Checklist\n\n- Batch ID selected with `{vertical}-{number}` naming.\n- Batch tracker created from the template.\n- Target description, geography, search queries, thresholds, and custom rules recorded.\n- Stage 01 scrape execution complete.\n- Website crawl complete or crawl gaps documented.\n- Stage 02 extraction complete.\n- Stage 03 qualification complete with explicit criteria source.\n- Stage 04 email discovery complete.\n- Stage 05 email verification complete.\n- Tracker status set to `ready`.\n- Draft Instantly campaign created.\n- Tracking list created and contacts uploaded.\n- Campaign activated.\n- Tracker status set to `active` with campaign metadata.',
|
|
22536
22527
|
"links": [
|
|
22537
22528
|
{
|
|
22538
22529
|
"target": {
|
|
@@ -22725,9 +22716,9 @@ var mdxKnowledgeNodes = [
|
|
|
22725
22716
|
{
|
|
22726
22717
|
"target": {
|
|
22727
22718
|
"kind": "system",
|
|
22728
|
-
"id": "projects"
|
|
22719
|
+
"id": "platform.projects"
|
|
22729
22720
|
},
|
|
22730
|
-
"nodeId": "system:projects"
|
|
22721
|
+
"nodeId": "system:platform.projects"
|
|
22731
22722
|
}
|
|
22732
22723
|
],
|
|
22733
22724
|
"ownerIds": [],
|
|
@@ -22745,9 +22736,9 @@ var mdxKnowledgeNodes = [
|
|
|
22745
22736
|
{
|
|
22746
22737
|
"target": {
|
|
22747
22738
|
"kind": "system",
|
|
22748
|
-
"id": "projects"
|
|
22739
|
+
"id": "platform.projects"
|
|
22749
22740
|
},
|
|
22750
|
-
"nodeId": "system:projects"
|
|
22741
|
+
"nodeId": "system:platform.projects"
|
|
22751
22742
|
}
|
|
22752
22743
|
],
|
|
22753
22744
|
"ownerIds": [],
|
|
@@ -22765,9 +22756,9 @@ var mdxKnowledgeNodes = [
|
|
|
22765
22756
|
{
|
|
22766
22757
|
"target": {
|
|
22767
22758
|
"kind": "system",
|
|
22768
|
-
"id": "projects"
|
|
22759
|
+
"id": "platform.projects"
|
|
22769
22760
|
},
|
|
22770
|
-
"nodeId": "system:projects"
|
|
22761
|
+
"nodeId": "system:platform.projects"
|
|
22771
22762
|
}
|
|
22772
22763
|
],
|
|
22773
22764
|
"ownerIds": [],
|
|
@@ -22785,9 +22776,9 @@ var mdxKnowledgeNodes = [
|
|
|
22785
22776
|
{
|
|
22786
22777
|
"target": {
|
|
22787
22778
|
"kind": "system",
|
|
22788
|
-
"id": "projects"
|
|
22779
|
+
"id": "platform.projects"
|
|
22789
22780
|
},
|
|
22790
|
-
"nodeId": "system:projects"
|
|
22781
|
+
"nodeId": "system:platform.projects"
|
|
22791
22782
|
}
|
|
22792
22783
|
],
|
|
22793
22784
|
"ownerIds": [],
|
|
@@ -22805,9 +22796,9 @@ var mdxKnowledgeNodes = [
|
|
|
22805
22796
|
{
|
|
22806
22797
|
"target": {
|
|
22807
22798
|
"kind": "system",
|
|
22808
|
-
"id": "projects"
|
|
22799
|
+
"id": "platform.projects"
|
|
22809
22800
|
},
|
|
22810
|
-
"nodeId": "system:projects"
|
|
22801
|
+
"nodeId": "system:platform.projects"
|
|
22811
22802
|
}
|
|
22812
22803
|
],
|
|
22813
22804
|
"ownerIds": [],
|
|
@@ -22825,9 +22816,9 @@ var mdxKnowledgeNodes = [
|
|
|
22825
22816
|
{
|
|
22826
22817
|
"target": {
|
|
22827
22818
|
"kind": "system",
|
|
22828
|
-
"id": "projects"
|
|
22819
|
+
"id": "platform.projects"
|
|
22829
22820
|
},
|
|
22830
|
-
"nodeId": "system:projects"
|
|
22821
|
+
"nodeId": "system:platform.projects"
|
|
22831
22822
|
}
|
|
22832
22823
|
],
|
|
22833
22824
|
"ownerIds": [],
|
|
@@ -22845,9 +22836,9 @@ var mdxKnowledgeNodes = [
|
|
|
22845
22836
|
{
|
|
22846
22837
|
"target": {
|
|
22847
22838
|
"kind": "system",
|
|
22848
|
-
"id": "projects"
|
|
22839
|
+
"id": "platform.projects"
|
|
22849
22840
|
},
|
|
22850
|
-
"nodeId": "system:projects"
|
|
22841
|
+
"nodeId": "system:platform.projects"
|
|
22851
22842
|
}
|
|
22852
22843
|
],
|
|
22853
22844
|
"ownerIds": [],
|
|
@@ -22865,9 +22856,9 @@ var mdxKnowledgeNodes = [
|
|
|
22865
22856
|
{
|
|
22866
22857
|
"target": {
|
|
22867
22858
|
"kind": "system",
|
|
22868
|
-
"id": "projects"
|
|
22859
|
+
"id": "platform.projects"
|
|
22869
22860
|
},
|
|
22870
|
-
"nodeId": "system:projects"
|
|
22861
|
+
"nodeId": "system:platform.projects"
|
|
22871
22862
|
}
|
|
22872
22863
|
],
|
|
22873
22864
|
"ownerIds": [],
|
|
@@ -22885,9 +22876,9 @@ var mdxKnowledgeNodes = [
|
|
|
22885
22876
|
{
|
|
22886
22877
|
"target": {
|
|
22887
22878
|
"kind": "system",
|
|
22888
|
-
"id": "projects"
|
|
22879
|
+
"id": "platform.projects"
|
|
22889
22880
|
},
|
|
22890
|
-
"nodeId": "system:projects"
|
|
22881
|
+
"nodeId": "system:platform.projects"
|
|
22891
22882
|
}
|
|
22892
22883
|
],
|
|
22893
22884
|
"ownerIds": [],
|
|
@@ -22928,7 +22919,7 @@ var platformInlineKnowledgeNodes = [
|
|
|
22928
22919
|
title: "Organization Model Schema Reference",
|
|
22929
22920
|
summary: "Technical reference for the OrganizationModel Zod schema: all top-level domains, the graph contract orientation, authored primitives versus projected graph nodes, and versioning rules.",
|
|
22930
22921
|
body: "## Schema\n\nThe `OrganizationModel` schema is defined in `packages/core/src/organization-model/schema.ts`. It is versioned at `version: 1` and composed from domain sub-schemas. The OM is the authoritative contract for the organization: downstream surfaces including Command View, the Knowledge Browser, and the navigation shell are all derived projections from this schema.\n\n## Top-Level Domains\n\nThese are the current top-level fields on `OrganizationModel`. There is no live `features` or `capabilities` top-level field -- those terms are legacy wording and should not appear as authored OM primitives.\n\n- `version` -- schema version, currently locked at `1`\n- `domainMetadata` -- per-domain version and `lastModified` tracking\n- `branding` -- organization name, logo, color identity\n- `navigation` -- surfaces, groups, and defaultSurfaceId for shell routing\n- `sales` -- sales domain including pipeline entity references\n- `prospecting` -- lead generation stages, entity references, and pipeline config\n- `projects` -- project, milestone, and task entity references\n- `identity` -- organization identity fields\n- `customers` -- customer segment definitions\n- `offerings` -- product and service definitions linked to customer segments\n- `roles` -- role definitions with reportsToId hierarchy and agentId holder support\n- `goals` -- OKR-style objectives with period ranges and system links\n- `systems` -- the backbone: hierarchical bounded contexts with dotted IDs and parentSystemId\n- `resources` -- governance descriptors for workflows, agents, integrations, triggers, and scripts; resource identity lives here, not in a separate deployment manifest\n- `actions` -- the invokable semantic layer; actions map to resources, affect entities, bind to knowledge, and expose invocation types (slash command, MCP tool, API endpoint, script execution)\n- `entities` -- business objects owned by systems, with table metadata, state catalogs, and typed entity links\n- `policies` -- governance rules applied to systems, actions, resources, and roles\n- `statuses` -- runtime semantic status registry\n- `knowledge` -- first-class OM content backed by inline nodes and MDX source nodes\n\n## Graph Contract\n\nThe OM is projected into a typed graph by `buildOrganizationGraph()` in `packages/core/src/organization-model/graph/build.ts`.\n\n**Node kinds:** `organization`, `system`, `role`, `action`, `entity`, `event`, `policy`, `stage`, `resource`, `knowledge`\n\n**Edge kinds:** `contains`, `references`, `maps_to`, `uses`, `governs`, `links`, `affects`, `emits`, `originates_from`, `triggers`, `applies_to`, `effects`\n\nThe `resourceType` overlay on resource nodes is a separate enum: `workflow`, `agent`, `trigger`, `integration`, `external`, `human_checkpoint`, `script`.\n\n## Authored Primitives vs Projected Graph Nodes\n\nAuthored primitives are what you write directly in the OM: `systems`, `roles`, `resources`, `actions`, `entities`, `policies`, `knowledge`. The graph builder reads these and emits a richer set of typed nodes and edges. Events, for example, are not authored directly -- they are projected from resource `emits` declarations. Stages are projected from prospecting stage catalogs.\n\n## Command View\n\nCommand View is a derived operational projection of the OM graph. It visualizes systems, resources, actions, entities, and relationships using the same node and edge taxonomy as `buildOrganizationGraph()`. It does not have a separate deployment manifest model -- the OM `resources` domain is the single source of resource identity.",
|
|
22931
|
-
links: [{ nodeId: "system:projects" }, { nodeId: "ontology:projects:catalog/task-status-flow" }],
|
|
22922
|
+
links: [{ nodeId: "system:platform.projects" }, { nodeId: "ontology:platform.projects:catalog/task-status-flow" }],
|
|
22932
22923
|
ownerIds: [],
|
|
22933
22924
|
updatedAt: "2026-05-14"
|
|
22934
22925
|
},
|
|
@@ -23382,7 +23373,7 @@ Each stage desensitizes one fear at a time. Never skip ahead. The goal is consis
|
|
|
23382
23373
|
title: "Platform Systems Overview",
|
|
23383
23374
|
summary: "Authoritative overview of the Elevasis AI Orchestration Platform systems -- what's built, what each system does, and how the pieces fit together",
|
|
23384
23375
|
body: "## Overview\n\nElevasis is a production AI orchestration platform that coordinates workflows, autonomous agents, and human approvals into a unified operating layer for SMBs. Everything described below is implemented and running in production.\n\n**Core Architecture:**\n\n| Layer | What It Does | Key Components |\n| --- | --- | --- |\n| **Execution** | Runs workflows and agents with schema validation | Workflow Engine, Agent Framework, Execution Runner |\n| **Control** | Human oversight, approvals, and decision capture | Command Queue (HITL), Dynamic Forms, Action System |\n| **Intelligence** | Autonomous reasoning, tool use, and memory management | ReAct Agents, Knowledge Map, Session Memory |\n| **Observability** | Real-time visibility into cost, performance, and health | Cost Tracking, Metrics, Activity Log, SSE Streaming |\n| **Platform** | Multi-tenancy, security, scheduling, integrations | Registry, RLS, Scheduler, Credential Vault, SDK |\n\n## Execution Engine\n\n### AI Workflows\n\nGraph-based workflow execution with schema-validated steps and conditional routing. Steps define explicit routing: linear, conditional (rule-based branching), or terminal. Context flows through the entire workflow.\n\n### Autonomous Agents\n\nProduction-grade ReAct-style agents with tool use, memory management, and security hardening.\n\n**LLM Provider Support:** OpenAI (GPT-5), Google (Gemini 3 Flash), Anthropic (Claude Sonnet 4.5), OpenRouter (GLM-5)\n\n## Human-in-the-Loop (HITL)\n\nThe Command Queue surfaces pending approvals as structured tasks. Admin reviews, approves or edits, and the workflow continues. Every critical decision \xE2\u20AC\u201D sending emails to prospects, updating customer records, publishing content \xE2\u20AC\u201D requires human approval.\n\n## Knowledge Map\n\nOrganizational knowledge loaded lazily into agent context. 80-95% token savings vs. always-loading full context. Nodes link to features, teams, and other nodes.\n\n## Integrations (13 active)\n\nAttio CRM, Cal.com, Instantly (cold email), Resend, Apify, Google Maps, Tomba, Mails.so, Supabase, Stripe, OpenAI, Google Gemini, Anthropic Claude.\n\n## SDK\n\nTypeScript-based resource development with local testing, validation, and deployment pipeline. External consumers define workflows and agents in their own repos and deploy via `elevasis-sdk deploy`.",
|
|
23385
|
-
links: [{ nodeId: "system:projects" }],
|
|
23376
|
+
links: [{ nodeId: "system:platform.projects" }],
|
|
23386
23377
|
ownerIds: [],
|
|
23387
23378
|
updatedAt: "2026-05-02"
|
|
23388
23379
|
},
|
|
@@ -23599,7 +23590,7 @@ var platformNavigation = {
|
|
|
23599
23590
|
surfaceType: "page",
|
|
23600
23591
|
icon: "projects",
|
|
23601
23592
|
order: 30,
|
|
23602
|
-
targets: { systems: ["projects"] }
|
|
23593
|
+
targets: { systems: ["platform.projects"] }
|
|
23603
23594
|
}
|
|
23604
23595
|
}
|
|
23605
23596
|
},
|
|
@@ -23622,7 +23613,7 @@ var platformNavigation = {
|
|
|
23622
23613
|
path: "/operations/systems",
|
|
23623
23614
|
surfaceType: "page",
|
|
23624
23615
|
order: 20,
|
|
23625
|
-
targets: { systems: ["sales", "client-management", "projects", "seo", "platform"] }
|
|
23616
|
+
targets: { systems: ["sales", "client-management", "platform.projects", "seo", "platform"] }
|
|
23626
23617
|
},
|
|
23627
23618
|
"operations-resources": {
|
|
23628
23619
|
type: "surface",
|
|
@@ -23852,7 +23843,7 @@ function getPlatformOwnerRoleId(systemId) {
|
|
|
23852
23843
|
return "role.client-support-operator";
|
|
23853
23844
|
case "platform":
|
|
23854
23845
|
return "role.operator";
|
|
23855
|
-
case "projects":
|
|
23846
|
+
case "platform.projects":
|
|
23856
23847
|
default:
|
|
23857
23848
|
return "role.operator";
|
|
23858
23849
|
}
|
|
@@ -24714,10 +24705,6 @@ var platformWorkflowCodeRefs = {
|
|
|
24714
24705
|
path: "packages/elevasis-operations/src/sales/crm/actions/move-to-proposal.ts",
|
|
24715
24706
|
role: "entrypoint",
|
|
24716
24707
|
symbol: "moveToProposalWorkflow"
|
|
24717
|
-
},
|
|
24718
|
-
{
|
|
24719
|
-
path: "packages/elevasis-operations/src/sales/crm/shared/proposal-schemas.ts",
|
|
24720
|
-
role: "schema"
|
|
24721
24708
|
}
|
|
24722
24709
|
]
|
|
24723
24710
|
};
|
|
@@ -25091,7 +25078,7 @@ var platformResourceDescriptors = defineResources(
|
|
|
25091
25078
|
id: "command-center-assistant",
|
|
25092
25079
|
order: 1e4,
|
|
25093
25080
|
kind: "agent",
|
|
25094
|
-
systemPath: "projects",
|
|
25081
|
+
systemPath: "platform.projects",
|
|
25095
25082
|
ownerRoleId: "role.operator",
|
|
25096
25083
|
actsAsRoleId: "role.operator",
|
|
25097
25084
|
status: "active",
|
|
@@ -25134,7 +25121,7 @@ var platformRoles = {
|
|
|
25134
25121
|
"Own platform operations knowledge and keep operational playbooks aligned with active systems.",
|
|
25135
25122
|
"Maintain platform utilities, diagnostics, and resource governance health."
|
|
25136
25123
|
],
|
|
25137
|
-
responsibleFor: ["client-management", "sales", "projects", "seo", "platform"]
|
|
25124
|
+
responsibleFor: ["client-management", "sales", "platform.projects", "seo", "platform"]
|
|
25138
25125
|
},
|
|
25139
25126
|
"role.growth-operator": {
|
|
25140
25127
|
id: "role.growth-operator",
|
|
@@ -25477,6 +25464,124 @@ var platformSystems = {
|
|
|
25477
25464
|
path: "/monitoring/requests",
|
|
25478
25465
|
surfaces: []
|
|
25479
25466
|
}
|
|
25467
|
+
},
|
|
25468
|
+
projects: {
|
|
25469
|
+
id: "platform.projects",
|
|
25470
|
+
parentSystemId: "platform",
|
|
25471
|
+
order: 90,
|
|
25472
|
+
label: "Projects",
|
|
25473
|
+
description: "Projects, milestones, and work execution.",
|
|
25474
|
+
kind: "operational",
|
|
25475
|
+
governedByKnowledge: [],
|
|
25476
|
+
drivesGoals: [],
|
|
25477
|
+
lifecycle: "beta",
|
|
25478
|
+
ui: {
|
|
25479
|
+
path: "/projects",
|
|
25480
|
+
surfaces: [],
|
|
25481
|
+
icon: "briefcase"
|
|
25482
|
+
},
|
|
25483
|
+
config: {
|
|
25484
|
+
defaultProjectStatusFlowId: "platform.projects:catalog/project-status-flow",
|
|
25485
|
+
defaultMilestoneStatusFlowId: "platform.projects:catalog/milestone-status-flow",
|
|
25486
|
+
defaultTaskStatusFlowId: "platform.projects:catalog/task-status-flow"
|
|
25487
|
+
},
|
|
25488
|
+
ontology: {
|
|
25489
|
+
objectTypes: {
|
|
25490
|
+
"platform.projects:object/project": {
|
|
25491
|
+
id: "platform.projects:object/project",
|
|
25492
|
+
label: "Project",
|
|
25493
|
+
description: "A project tracked from active work through completion.",
|
|
25494
|
+
ownerSystemId: "platform.projects",
|
|
25495
|
+
properties: {
|
|
25496
|
+
id: { valueType: "global:value-type/uuid", identity: true },
|
|
25497
|
+
status: { catalogType: "platform.projects:catalog/project-status-flow" }
|
|
25498
|
+
}
|
|
25499
|
+
},
|
|
25500
|
+
"platform.projects:object/milestone": {
|
|
25501
|
+
id: "platform.projects:object/milestone",
|
|
25502
|
+
label: "Milestone",
|
|
25503
|
+
description: "A major project checkpoint used to coordinate progress.",
|
|
25504
|
+
ownerSystemId: "platform.projects",
|
|
25505
|
+
properties: {
|
|
25506
|
+
id: { valueType: "global:value-type/uuid", identity: true },
|
|
25507
|
+
projectId: { objectType: "platform.projects:object/project" },
|
|
25508
|
+
status: { catalogType: "platform.projects:catalog/milestone-status-flow" }
|
|
25509
|
+
}
|
|
25510
|
+
},
|
|
25511
|
+
"platform.projects:object/task": {
|
|
25512
|
+
id: "platform.projects:object/task",
|
|
25513
|
+
label: "Task",
|
|
25514
|
+
description: "An actionable unit of project work.",
|
|
25515
|
+
ownerSystemId: "platform.projects",
|
|
25516
|
+
properties: {
|
|
25517
|
+
id: { valueType: "global:value-type/uuid", identity: true },
|
|
25518
|
+
projectId: { objectType: "platform.projects:object/project" },
|
|
25519
|
+
milestoneId: { objectType: "platform.projects:object/milestone" },
|
|
25520
|
+
status: { catalogType: "platform.projects:catalog/task-status-flow" }
|
|
25521
|
+
}
|
|
25522
|
+
}
|
|
25523
|
+
},
|
|
25524
|
+
linkTypes: {
|
|
25525
|
+
"platform.projects:link/project-milestone": {
|
|
25526
|
+
id: "platform.projects:link/project-milestone",
|
|
25527
|
+
label: "Project milestone",
|
|
25528
|
+
ownerSystemId: "platform.projects",
|
|
25529
|
+
from: "platform.projects:object/project",
|
|
25530
|
+
to: "platform.projects:object/milestone",
|
|
25531
|
+
cardinality: "one-to-many",
|
|
25532
|
+
via: "project_id"
|
|
25533
|
+
},
|
|
25534
|
+
"platform.projects:link/project-task": {
|
|
25535
|
+
id: "platform.projects:link/project-task",
|
|
25536
|
+
label: "Project task",
|
|
25537
|
+
ownerSystemId: "platform.projects",
|
|
25538
|
+
from: "platform.projects:object/project",
|
|
25539
|
+
to: "platform.projects:object/task",
|
|
25540
|
+
cardinality: "one-to-many",
|
|
25541
|
+
via: "project_id"
|
|
25542
|
+
}
|
|
25543
|
+
},
|
|
25544
|
+
catalogTypes: {
|
|
25545
|
+
"platform.projects:catalog/project-status-flow": {
|
|
25546
|
+
id: "platform.projects:catalog/project-status-flow",
|
|
25547
|
+
label: "Project Statuses",
|
|
25548
|
+
ownerSystemId: "platform.projects",
|
|
25549
|
+
kind: "status-flow",
|
|
25550
|
+
appliesTo: "platform.projects:object/project",
|
|
25551
|
+
entries: {
|
|
25552
|
+
active: { label: "Active", semanticClass: "active", order: 10 },
|
|
25553
|
+
"on-hold": { label: "On Hold", semanticClass: "blocked", order: 20 },
|
|
25554
|
+
completed: { label: "Completed", semanticClass: "completed", order: 30 },
|
|
25555
|
+
cancelled: { label: "Cancelled", semanticClass: "cancelled", order: 40 }
|
|
25556
|
+
}
|
|
25557
|
+
},
|
|
25558
|
+
"platform.projects:catalog/milestone-status-flow": {
|
|
25559
|
+
id: "platform.projects:catalog/milestone-status-flow",
|
|
25560
|
+
label: "Milestone Statuses",
|
|
25561
|
+
ownerSystemId: "platform.projects",
|
|
25562
|
+
kind: "status-flow",
|
|
25563
|
+
appliesTo: "platform.projects:object/milestone",
|
|
25564
|
+
entries: {
|
|
25565
|
+
pending: { label: "Pending", semanticClass: "open", order: 10 },
|
|
25566
|
+
"in-progress": { label: "In Progress", semanticClass: "active", order: 20 },
|
|
25567
|
+
completed: { label: "Completed", semanticClass: "completed", order: 30 }
|
|
25568
|
+
}
|
|
25569
|
+
},
|
|
25570
|
+
"platform.projects:catalog/task-status-flow": {
|
|
25571
|
+
id: "platform.projects:catalog/task-status-flow",
|
|
25572
|
+
label: "Task Statuses",
|
|
25573
|
+
ownerSystemId: "platform.projects",
|
|
25574
|
+
kind: "status-flow",
|
|
25575
|
+
appliesTo: "platform.projects:object/task",
|
|
25576
|
+
entries: {
|
|
25577
|
+
todo: { label: "To Do", semanticClass: "open", order: 10 },
|
|
25578
|
+
"in-progress": { label: "In Progress", semanticClass: "active", order: 20 },
|
|
25579
|
+
blocked: { label: "Blocked", semanticClass: "blocked", order: 30 },
|
|
25580
|
+
done: { label: "Done", semanticClass: "completed", order: 40 }
|
|
25581
|
+
}
|
|
25582
|
+
}
|
|
25583
|
+
}
|
|
25584
|
+
}
|
|
25480
25585
|
}
|
|
25481
25586
|
}
|
|
25482
25587
|
},
|
|
@@ -26365,123 +26470,6 @@ var platformSystems = {
|
|
|
26365
26470
|
}
|
|
26366
26471
|
}
|
|
26367
26472
|
},
|
|
26368
|
-
projects: {
|
|
26369
|
-
id: "projects",
|
|
26370
|
-
order: 90,
|
|
26371
|
-
label: "Projects",
|
|
26372
|
-
description: "Projects, milestones, and work execution.",
|
|
26373
|
-
kind: "operational",
|
|
26374
|
-
governedByKnowledge: [],
|
|
26375
|
-
drivesGoals: [],
|
|
26376
|
-
lifecycle: "beta",
|
|
26377
|
-
ui: {
|
|
26378
|
-
path: "/projects",
|
|
26379
|
-
surfaces: [],
|
|
26380
|
-
icon: "briefcase"
|
|
26381
|
-
},
|
|
26382
|
-
config: {
|
|
26383
|
-
defaultProjectStatusFlowId: "projects:catalog/project-status-flow",
|
|
26384
|
-
defaultMilestoneStatusFlowId: "projects:catalog/milestone-status-flow",
|
|
26385
|
-
defaultTaskStatusFlowId: "projects:catalog/task-status-flow"
|
|
26386
|
-
},
|
|
26387
|
-
ontology: {
|
|
26388
|
-
objectTypes: {
|
|
26389
|
-
"projects:object/project": {
|
|
26390
|
-
id: "projects:object/project",
|
|
26391
|
-
label: "Project",
|
|
26392
|
-
description: "A project tracked from active work through completion.",
|
|
26393
|
-
ownerSystemId: "projects",
|
|
26394
|
-
properties: {
|
|
26395
|
-
id: { valueType: "global:value-type/uuid", identity: true },
|
|
26396
|
-
status: { catalogType: "projects:catalog/project-status-flow" }
|
|
26397
|
-
}
|
|
26398
|
-
},
|
|
26399
|
-
"projects:object/milestone": {
|
|
26400
|
-
id: "projects:object/milestone",
|
|
26401
|
-
label: "Milestone",
|
|
26402
|
-
description: "A major project checkpoint used to coordinate progress.",
|
|
26403
|
-
ownerSystemId: "projects",
|
|
26404
|
-
properties: {
|
|
26405
|
-
id: { valueType: "global:value-type/uuid", identity: true },
|
|
26406
|
-
projectId: { objectType: "projects:object/project" },
|
|
26407
|
-
status: { catalogType: "projects:catalog/milestone-status-flow" }
|
|
26408
|
-
}
|
|
26409
|
-
},
|
|
26410
|
-
"projects:object/task": {
|
|
26411
|
-
id: "projects:object/task",
|
|
26412
|
-
label: "Task",
|
|
26413
|
-
description: "An actionable unit of project work.",
|
|
26414
|
-
ownerSystemId: "projects",
|
|
26415
|
-
properties: {
|
|
26416
|
-
id: { valueType: "global:value-type/uuid", identity: true },
|
|
26417
|
-
projectId: { objectType: "projects:object/project" },
|
|
26418
|
-
milestoneId: { objectType: "projects:object/milestone" },
|
|
26419
|
-
status: { catalogType: "projects:catalog/task-status-flow" }
|
|
26420
|
-
}
|
|
26421
|
-
}
|
|
26422
|
-
},
|
|
26423
|
-
linkTypes: {
|
|
26424
|
-
"projects:link/project-milestone": {
|
|
26425
|
-
id: "projects:link/project-milestone",
|
|
26426
|
-
label: "Project milestone",
|
|
26427
|
-
ownerSystemId: "projects",
|
|
26428
|
-
from: "projects:object/project",
|
|
26429
|
-
to: "projects:object/milestone",
|
|
26430
|
-
cardinality: "one-to-many",
|
|
26431
|
-
via: "project_id"
|
|
26432
|
-
},
|
|
26433
|
-
"projects:link/project-task": {
|
|
26434
|
-
id: "projects:link/project-task",
|
|
26435
|
-
label: "Project task",
|
|
26436
|
-
ownerSystemId: "projects",
|
|
26437
|
-
from: "projects:object/project",
|
|
26438
|
-
to: "projects:object/task",
|
|
26439
|
-
cardinality: "one-to-many",
|
|
26440
|
-
via: "project_id"
|
|
26441
|
-
}
|
|
26442
|
-
},
|
|
26443
|
-
catalogTypes: {
|
|
26444
|
-
"projects:catalog/project-status-flow": {
|
|
26445
|
-
id: "projects:catalog/project-status-flow",
|
|
26446
|
-
label: "Project Statuses",
|
|
26447
|
-
ownerSystemId: "projects",
|
|
26448
|
-
kind: "status-flow",
|
|
26449
|
-
appliesTo: "projects:object/project",
|
|
26450
|
-
entries: {
|
|
26451
|
-
active: { label: "Active", semanticClass: "active", order: 10 },
|
|
26452
|
-
"on-hold": { label: "On Hold", semanticClass: "blocked", order: 20 },
|
|
26453
|
-
completed: { label: "Completed", semanticClass: "completed", order: 30 },
|
|
26454
|
-
cancelled: { label: "Cancelled", semanticClass: "cancelled", order: 40 }
|
|
26455
|
-
}
|
|
26456
|
-
},
|
|
26457
|
-
"projects:catalog/milestone-status-flow": {
|
|
26458
|
-
id: "projects:catalog/milestone-status-flow",
|
|
26459
|
-
label: "Milestone Statuses",
|
|
26460
|
-
ownerSystemId: "projects",
|
|
26461
|
-
kind: "status-flow",
|
|
26462
|
-
appliesTo: "projects:object/milestone",
|
|
26463
|
-
entries: {
|
|
26464
|
-
pending: { label: "Pending", semanticClass: "open", order: 10 },
|
|
26465
|
-
"in-progress": { label: "In Progress", semanticClass: "active", order: 20 },
|
|
26466
|
-
completed: { label: "Completed", semanticClass: "completed", order: 30 }
|
|
26467
|
-
}
|
|
26468
|
-
},
|
|
26469
|
-
"projects:catalog/task-status-flow": {
|
|
26470
|
-
id: "projects:catalog/task-status-flow",
|
|
26471
|
-
label: "Task Statuses",
|
|
26472
|
-
ownerSystemId: "projects",
|
|
26473
|
-
kind: "status-flow",
|
|
26474
|
-
appliesTo: "projects:object/task",
|
|
26475
|
-
entries: {
|
|
26476
|
-
todo: { label: "To Do", semanticClass: "open", order: 10 },
|
|
26477
|
-
"in-progress": { label: "In Progress", semanticClass: "active", order: 20 },
|
|
26478
|
-
blocked: { label: "Blocked", semanticClass: "blocked", order: 30 },
|
|
26479
|
-
done: { label: "Done", semanticClass: "completed", order: 40 }
|
|
26480
|
-
}
|
|
26481
|
-
}
|
|
26482
|
-
}
|
|
26483
|
-
}
|
|
26484
|
-
},
|
|
26485
26473
|
seo: {
|
|
26486
26474
|
id: "seo",
|
|
26487
26475
|
order: 100,
|
|
@@ -33671,7 +33659,7 @@ var ProjectsSidebar = ({ children } = {}) => {
|
|
|
33671
33659
|
};
|
|
33672
33660
|
var deliveryManifest = {
|
|
33673
33661
|
key: "delivery",
|
|
33674
|
-
systemId:
|
|
33662
|
+
systemId: PROJECTS_SYSTEM_ID,
|
|
33675
33663
|
capabilityIds: [PROJECTS_VIEW_ACTION_ID],
|
|
33676
33664
|
icon: IconBriefcase
|
|
33677
33665
|
};
|
|
@@ -43860,12 +43848,6 @@ function SessionDetailsSidebar({
|
|
|
43860
43848
|
setIsDeleting(false);
|
|
43861
43849
|
}
|
|
43862
43850
|
};
|
|
43863
|
-
const handleArchive = () => {
|
|
43864
|
-
console.log("Archive session:", session.sessionId);
|
|
43865
|
-
};
|
|
43866
|
-
const handleExport = () => {
|
|
43867
|
-
console.log("Export session:", session.sessionId);
|
|
43868
|
-
};
|
|
43869
43851
|
const handleSaveInstructions = async () => {
|
|
43870
43852
|
setIsSavingInstructions(true);
|
|
43871
43853
|
try {
|
|
@@ -44043,38 +44025,7 @@ function SessionDetailsSidebar({
|
|
|
44043
44025
|
] })
|
|
44044
44026
|
] })
|
|
44045
44027
|
] });
|
|
44046
|
-
})()
|
|
44047
|
-
/* @__PURE__ */ jsx(Divider, {}),
|
|
44048
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
44049
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", c: "dimmed", fw: 600, tt: "uppercase", mb: 8, children: "Actions" }),
|
|
44050
|
-
/* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
|
|
44051
|
-
/* @__PURE__ */ jsxs(
|
|
44052
|
-
Button,
|
|
44053
|
-
{
|
|
44054
|
-
size: "sm",
|
|
44055
|
-
variant: "light",
|
|
44056
|
-
leftSection: /* @__PURE__ */ jsx(IconArchive, { size: 16 }),
|
|
44057
|
-
onClick: handleArchive,
|
|
44058
|
-
fullWidth: true,
|
|
44059
|
-
children: [
|
|
44060
|
-
session.isEnded ? "Reopen" : "End",
|
|
44061
|
-
" Session"
|
|
44062
|
-
]
|
|
44063
|
-
}
|
|
44064
|
-
),
|
|
44065
|
-
/* @__PURE__ */ jsx(
|
|
44066
|
-
Button,
|
|
44067
|
-
{
|
|
44068
|
-
size: "sm",
|
|
44069
|
-
variant: "light",
|
|
44070
|
-
leftSection: /* @__PURE__ */ jsx(IconDownload, { size: 16 }),
|
|
44071
|
-
onClick: handleExport,
|
|
44072
|
-
fullWidth: true,
|
|
44073
|
-
children: "Export Session"
|
|
44074
|
-
}
|
|
44075
|
-
)
|
|
44076
|
-
] })
|
|
44077
|
-
] })
|
|
44028
|
+
})()
|
|
44078
44029
|
] }) }),
|
|
44079
44030
|
/* @__PURE__ */ jsx("div", { style: { borderTop: "1px solid var(--color-border)", padding: "var(--mantine-spacing-md)" }, children: /* @__PURE__ */ jsx(
|
|
44080
44031
|
Button,
|
|
@@ -49674,7 +49625,7 @@ function TrailingCopySlot({ command, label, showCopy, favorite, hovered }) {
|
|
|
49674
49625
|
var indexPromise = null;
|
|
49675
49626
|
function loadSearchIndex() {
|
|
49676
49627
|
if (!indexPromise) {
|
|
49677
|
-
indexPromise = import('./knowledge-search-index-
|
|
49628
|
+
indexPromise = import('./knowledge-search-index-MHOBQTT3.js').then(
|
|
49678
49629
|
(mod) => buildSearchIndex(mod.default ?? mod)
|
|
49679
49630
|
);
|
|
49680
49631
|
}
|