@bopen-io/tortuga-plugin 0.0.3 → 0.0.5

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.
@@ -0,0 +1,48 @@
1
+ const PLUGIN_ID = "bopen-io.tortuga-plugin";
2
+ const PLUGIN_VERSION = "0.0.3";
3
+ const PAGE_ROUTE = "tortuga";
4
+ const SLOT_IDS = {
5
+ dashboardWidget: "tortuga-dashboard-widget",
6
+ page: "tortuga-page",
7
+ sidebar: "tortuga-sidebar-link"
8
+ };
9
+ const EXPORT_NAMES = {
10
+ dashboardWidget: "FleetStatusWidget",
11
+ page: "FleetMonitorPage",
12
+ sidebar: "TortugaSidebarLink"
13
+ };
14
+ const JOB_KEYS = {
15
+ fleetHealth: "fleet-health"
16
+ };
17
+ const STREAM_CHANNELS = {
18
+ fleetStatus: "fleet-status"
19
+ };
20
+ const DATA_KEYS = {
21
+ fleetOverview: "fleet-overview",
22
+ agentDetail: "agent-detail"
23
+ };
24
+ const ACTION_KEYS = {
25
+ pauseAgent: "pause-agent",
26
+ resumeAgent: "resume-agent",
27
+ invokeAgent: "invoke-agent"
28
+ };
29
+ const STATE_KEYS = {
30
+ agentHealth: "agent-health",
31
+ lastHealthCheck: "last-health-check",
32
+ runCount: "run-count",
33
+ lastRunAt: "last-run-at",
34
+ failureCount: "failure-count"
35
+ };
36
+ export {
37
+ ACTION_KEYS,
38
+ DATA_KEYS,
39
+ EXPORT_NAMES,
40
+ JOB_KEYS,
41
+ PAGE_ROUTE,
42
+ PLUGIN_ID,
43
+ PLUGIN_VERSION,
44
+ SLOT_IDS,
45
+ STATE_KEYS,
46
+ STREAM_CHANNELS
47
+ };
48
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/constants.ts"],
4
+ "sourcesContent": ["export const PLUGIN_ID = \"bopen-io.tortuga-plugin\";\nexport const PLUGIN_VERSION = \"0.0.3\";\nexport const PAGE_ROUTE = \"tortuga\";\n\nexport const SLOT_IDS = {\n dashboardWidget: \"tortuga-dashboard-widget\",\n page: \"tortuga-page\",\n sidebar: \"tortuga-sidebar-link\",\n} as const;\n\nexport const EXPORT_NAMES = {\n dashboardWidget: \"FleetStatusWidget\",\n page: \"FleetMonitorPage\",\n sidebar: \"TortugaSidebarLink\",\n} as const;\n\nexport const JOB_KEYS = {\n fleetHealth: \"fleet-health\",\n} as const;\n\nexport const STREAM_CHANNELS = {\n fleetStatus: \"fleet-status\",\n} as const;\n\nexport const DATA_KEYS = {\n fleetOverview: \"fleet-overview\",\n agentDetail: \"agent-detail\",\n} as const;\n\nexport const ACTION_KEYS = {\n pauseAgent: \"pause-agent\",\n resumeAgent: \"resume-agent\",\n invokeAgent: \"invoke-agent\",\n} as const;\n\nexport const STATE_KEYS = {\n agentHealth: \"agent-health\",\n lastHealthCheck: \"last-health-check\",\n runCount: \"run-count\",\n lastRunAt: \"last-run-at\",\n failureCount: \"failure-count\",\n} as const;\n"],
5
+ "mappings": "AAAO,MAAM,YAAY;AAClB,MAAM,iBAAiB;AACvB,MAAM,aAAa;AAEnB,MAAM,WAAW;AAAA,EACtB,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,SAAS;AACX;AAEO,MAAM,eAAe;AAAA,EAC1B,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,SAAS;AACX;AAEO,MAAM,WAAW;AAAA,EACtB,aAAa;AACf;AAEO,MAAM,kBAAkB;AAAA,EAC7B,aAAa;AACf;AAEO,MAAM,YAAY;AAAA,EACvB,eAAe;AAAA,EACf,aAAa;AACf;AAEO,MAAM,cAAc;AAAA,EACzB,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AACf;AAEO,MAAM,aAAa;AAAA,EACxB,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,WAAW;AAAA,EACX,cAAc;AAChB;",
6
+ "names": []
7
+ }
package/dist/manifest.js CHANGED
@@ -1,28 +1,71 @@
1
+ import {
2
+ EXPORT_NAMES,
3
+ JOB_KEYS,
4
+ PAGE_ROUTE,
5
+ PLUGIN_ID,
6
+ PLUGIN_VERSION,
7
+ SLOT_IDS
8
+ } from "./constants.js";
1
9
  const manifest = {
2
- id: "bopen-io.tortuga-plugin",
10
+ id: PLUGIN_ID,
3
11
  apiVersion: 1,
4
- version: "0.1.0",
12
+ version: PLUGIN_VERSION,
5
13
  displayName: "Tortuga",
6
- description: "bOpen agent fleet bridge: syncs agents from ClawNet registry, exposes skills as tools, fleet monitoring, webhook integrations",
14
+ description: "bOpen fleet monitoring and operations: real-time agent health, heartbeat tracking, cost analytics",
7
15
  author: "bOpen",
8
- categories: ["connector"],
16
+ categories: ["ui", "automation"],
9
17
  capabilities: [
10
- "events.subscribe",
18
+ // Fleet monitoring & control
19
+ "agents.read",
20
+ "agents.pause",
21
+ "agents.resume",
22
+ "agents.invoke",
23
+ // Company discovery for fleet-wide health checks
24
+ "companies.read",
25
+ // Plugin state for fleet data
11
26
  "plugin.state.read",
12
27
  "plugin.state.write",
13
- "ui.dashboardWidget.register"
28
+ // Agent lifecycle events
29
+ "events.subscribe",
30
+ // Scheduled fleet health check
31
+ "jobs.schedule",
32
+ // UI surfaces
33
+ "ui.dashboardWidget.register",
34
+ "ui.page.register",
35
+ "ui.sidebar.register"
14
36
  ],
15
37
  entrypoints: {
16
38
  worker: "./dist/worker.js",
17
39
  ui: "./dist/ui"
18
40
  },
41
+ jobs: [
42
+ {
43
+ jobKey: JOB_KEYS.fleetHealth,
44
+ displayName: "Fleet Health Check",
45
+ description: "Cross-references Paperclip agents with fleet state to detect unhealthy or missing agents.",
46
+ schedule: "*/5 * * * *"
47
+ }
48
+ ],
19
49
  ui: {
20
50
  slots: [
21
51
  {
22
52
  type: "dashboardWidget",
23
- id: "health-widget",
24
- displayName: "Tortuga Health",
25
- exportName: "DashboardWidget"
53
+ id: SLOT_IDS.dashboardWidget,
54
+ displayName: "Fleet Status",
55
+ exportName: EXPORT_NAMES.dashboardWidget
56
+ },
57
+ {
58
+ type: "page",
59
+ id: SLOT_IDS.page,
60
+ displayName: "Fleet Monitor",
61
+ exportName: EXPORT_NAMES.page,
62
+ routePath: PAGE_ROUTE
63
+ },
64
+ {
65
+ type: "sidebar",
66
+ id: SLOT_IDS.sidebar,
67
+ displayName: "Tortuga",
68
+ exportName: EXPORT_NAMES.sidebar
26
69
  }
27
70
  ]
28
71
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/manifest.ts"],
4
- "sourcesContent": ["import type { PaperclipPluginManifestV1 } from \"@paperclipai/plugin-sdk\";\n\nconst manifest: PaperclipPluginManifestV1 = {\n id: \"bopen-io.tortuga-plugin\",\n apiVersion: 1,\n version: \"0.1.0\",\n displayName: \"Tortuga\",\n description: \"bOpen agent fleet bridge: syncs agents from ClawNet registry, exposes skills as tools, fleet monitoring, webhook integrations\",\n author: \"bOpen\",\n categories: [\"connector\"],\n capabilities: [\n \"events.subscribe\",\n \"plugin.state.read\",\n \"plugin.state.write\",\n \"ui.dashboardWidget.register\"\n ],\n entrypoints: {\n worker: \"./dist/worker.js\",\n ui: \"./dist/ui\"\n },\n ui: {\n slots: [\n {\n type: \"dashboardWidget\",\n id: \"health-widget\",\n displayName: \"Tortuga Health\",\n exportName: \"DashboardWidget\"\n }\n ]\n }\n};\n\nexport default manifest;\n"],
5
- "mappings": "AAEA,MAAM,WAAsC;AAAA,EAC1C,IAAI;AAAA,EACJ,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,aAAa;AAAA,EACb,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,YAAY,CAAC,WAAW;AAAA,EACxB,cAAc;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,QAAQ;AAAA,IACR,IAAI;AAAA,EACN;AAAA,EACA,IAAI;AAAA,IACF,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,aAAa;AAAA,QACb,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAO,mBAAQ;",
4
+ "sourcesContent": ["import type { PaperclipPluginManifestV1 } from \"@paperclipai/plugin-sdk\";\nimport {\n EXPORT_NAMES,\n JOB_KEYS,\n PAGE_ROUTE,\n PLUGIN_ID,\n PLUGIN_VERSION,\n SLOT_IDS,\n} from \"./constants.js\";\n\nconst manifest: PaperclipPluginManifestV1 = {\n id: PLUGIN_ID,\n apiVersion: 1,\n version: PLUGIN_VERSION,\n displayName: \"Tortuga\",\n description:\n \"bOpen fleet monitoring and operations: real-time agent health, heartbeat tracking, cost analytics\",\n author: \"bOpen\",\n categories: [\"ui\", \"automation\"],\n capabilities: [\n // Fleet monitoring & control\n \"agents.read\",\n \"agents.pause\",\n \"agents.resume\",\n \"agents.invoke\",\n // Company discovery for fleet-wide health checks\n \"companies.read\",\n // Plugin state for fleet data\n \"plugin.state.read\",\n \"plugin.state.write\",\n // Agent lifecycle events\n \"events.subscribe\",\n // Scheduled fleet health check\n \"jobs.schedule\",\n // UI surfaces\n \"ui.dashboardWidget.register\",\n \"ui.page.register\",\n \"ui.sidebar.register\",\n ],\n entrypoints: {\n worker: \"./dist/worker.js\",\n ui: \"./dist/ui\",\n },\n jobs: [\n {\n jobKey: JOB_KEYS.fleetHealth,\n displayName: \"Fleet Health Check\",\n description:\n \"Cross-references Paperclip agents with fleet state to detect unhealthy or missing agents.\",\n schedule: \"*/5 * * * *\",\n },\n ],\n ui: {\n slots: [\n {\n type: \"dashboardWidget\",\n id: SLOT_IDS.dashboardWidget,\n displayName: \"Fleet Status\",\n exportName: EXPORT_NAMES.dashboardWidget,\n },\n {\n type: \"page\",\n id: SLOT_IDS.page,\n displayName: \"Fleet Monitor\",\n exportName: EXPORT_NAMES.page,\n routePath: PAGE_ROUTE,\n },\n {\n type: \"sidebar\",\n id: SLOT_IDS.sidebar,\n displayName: \"Tortuga\",\n exportName: EXPORT_NAMES.sidebar,\n },\n ],\n },\n};\n\nexport default manifest;\n"],
5
+ "mappings": "AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,MAAM,WAAsC;AAAA,EAC1C,IAAI;AAAA,EACJ,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,aAAa;AAAA,EACb,aACE;AAAA,EACF,QAAQ;AAAA,EACR,YAAY,CAAC,MAAM,YAAY;AAAA,EAC/B,cAAc;AAAA;AAAA,IAEZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,QAAQ;AAAA,IACR,IAAI;AAAA,EACN;AAAA,EACA,MAAM;AAAA,IACJ;AAAA,MACE,QAAQ,SAAS;AAAA,MACjB,aAAa;AAAA,MACb,aACE;AAAA,MACF,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,IAAI;AAAA,IACF,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,IAAI,SAAS;AAAA,QACb,aAAa;AAAA,QACb,YAAY,aAAa;AAAA,MAC3B;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,IAAI,SAAS;AAAA,QACb,aAAa;AAAA,QACb,YAAY,aAAa;AAAA,QACzB,WAAW;AAAA,MACb;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,IAAI,SAAS;AAAA,QACb,aAAa;AAAA,QACb,YAAY,aAAa;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAO,mBAAQ;",
6
6
  "names": []
7
7
  }