jfl 0.8.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +30 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/ide.d.ts +2 -1
- package/dist/commands/ide.d.ts.map +1 -1
- package/dist/commands/ide.js +60 -1
- package/dist/commands/ide.js.map +1 -1
- package/dist/commands/init-from-service.d.ts +15 -0
- package/dist/commands/init-from-service.d.ts.map +1 -0
- package/dist/commands/init-from-service.js +541 -0
- package/dist/commands/init-from-service.js.map +1 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +32 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/kanban.d.ts.map +1 -1
- package/dist/commands/kanban.js +13 -4
- package/dist/commands/kanban.js.map +1 -1
- package/dist/commands/linear.d.ts +41 -0
- package/dist/commands/linear.d.ts.map +1 -0
- package/dist/commands/linear.js +715 -0
- package/dist/commands/linear.js.map +1 -0
- package/dist/commands/peter.d.ts.map +1 -1
- package/dist/commands/peter.js +232 -25
- package/dist/commands/peter.js.map +1 -1
- package/dist/commands/services.d.ts.map +1 -1
- package/dist/commands/services.js +146 -0
- package/dist/commands/services.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +173 -13
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/telemetry-monitor.d.ts +11 -0
- package/dist/commands/telemetry-monitor.d.ts.map +1 -0
- package/dist/commands/telemetry-monitor.js +224 -0
- package/dist/commands/telemetry-monitor.js.map +1 -0
- package/dist/commands/telemetry-test.d.ts +11 -0
- package/dist/commands/telemetry-test.d.ts.map +1 -0
- package/dist/commands/telemetry-test.js +67 -0
- package/dist/commands/telemetry-test.js.map +1 -0
- package/dist/commands/tenet-agents.d.ts +13 -0
- package/dist/commands/tenet-agents.d.ts.map +1 -0
- package/dist/commands/tenet-agents.js +191 -0
- package/dist/commands/tenet-agents.js.map +1 -0
- package/dist/commands/tenet-setup.d.ts +19 -0
- package/dist/commands/tenet-setup.d.ts.map +1 -0
- package/dist/commands/tenet-setup.js +131 -0
- package/dist/commands/tenet-setup.js.map +1 -0
- package/dist/commands/train.d.ts +18 -0
- package/dist/commands/train.d.ts.map +1 -1
- package/dist/commands/train.js +182 -0
- package/dist/commands/train.js.map +1 -1
- package/dist/commands/whoami.d.ts +2 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +24 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/index.js +159 -10
- package/dist/index.js.map +1 -1
- package/dist/lib/advanced-setup.d.ts +78 -0
- package/dist/lib/advanced-setup.d.ts.map +1 -0
- package/dist/lib/advanced-setup.js +433 -0
- package/dist/lib/advanced-setup.js.map +1 -0
- package/dist/lib/agent-config.d.ts +33 -0
- package/dist/lib/agent-config.d.ts.map +1 -1
- package/dist/lib/agent-config.js +26 -0
- package/dist/lib/agent-config.js.map +1 -1
- package/dist/lib/counterfactual-training-bridge.d.ts +114 -0
- package/dist/lib/counterfactual-training-bridge.d.ts.map +1 -0
- package/dist/lib/counterfactual-training-bridge.js +322 -0
- package/dist/lib/counterfactual-training-bridge.js.map +1 -0
- package/dist/lib/discovery-agent.d.ts +48 -0
- package/dist/lib/discovery-agent.d.ts.map +1 -0
- package/dist/lib/discovery-agent.js +111 -0
- package/dist/lib/discovery-agent.js.map +1 -0
- package/dist/lib/flow-engine.d.ts.map +1 -1
- package/dist/lib/flow-engine.js +46 -8
- package/dist/lib/flow-engine.js.map +1 -1
- package/dist/lib/gtm-generator.d.ts +29 -0
- package/dist/lib/gtm-generator.d.ts.map +1 -0
- package/dist/lib/gtm-generator.js +252 -0
- package/dist/lib/gtm-generator.js.map +1 -0
- package/dist/lib/hub-health.d.ts +40 -0
- package/dist/lib/hub-health.d.ts.map +1 -0
- package/dist/lib/hub-health.js +89 -0
- package/dist/lib/hub-health.js.map +1 -0
- package/dist/lib/invariant-monitor.d.ts +6 -2
- package/dist/lib/invariant-monitor.d.ts.map +1 -1
- package/dist/lib/invariant-monitor.js +89 -2
- package/dist/lib/invariant-monitor.js.map +1 -1
- package/dist/lib/journal-analyzer.d.ts +71 -0
- package/dist/lib/journal-analyzer.d.ts.map +1 -0
- package/dist/lib/journal-analyzer.js +306 -0
- package/dist/lib/journal-analyzer.js.map +1 -0
- package/dist/lib/linear-client.d.ts +73 -0
- package/dist/lib/linear-client.d.ts.map +1 -0
- package/dist/lib/linear-client.js +112 -0
- package/dist/lib/linear-client.js.map +1 -0
- package/dist/lib/linear-id-map.d.ts +20 -0
- package/dist/lib/linear-id-map.d.ts.map +1 -0
- package/dist/lib/linear-id-map.js +57 -0
- package/dist/lib/linear-id-map.js.map +1 -0
- package/dist/lib/linear-kanban.d.ts +66 -0
- package/dist/lib/linear-kanban.d.ts.map +1 -0
- package/dist/lib/linear-kanban.js +175 -0
- package/dist/lib/linear-kanban.js.map +1 -0
- package/dist/lib/onboarding.d.ts +40 -0
- package/dist/lib/onboarding.d.ts.map +1 -0
- package/dist/lib/onboarding.js +213 -0
- package/dist/lib/onboarding.js.map +1 -0
- package/dist/lib/physical-world-model.d.ts +50 -0
- package/dist/lib/physical-world-model.d.ts.map +1 -0
- package/dist/lib/physical-world-model.js +251 -0
- package/dist/lib/physical-world-model.js.map +1 -0
- package/dist/lib/planning-loop.d.ts +157 -0
- package/dist/lib/planning-loop.d.ts.map +1 -0
- package/dist/lib/planning-loop.js +537 -0
- package/dist/lib/planning-loop.js.map +1 -0
- package/dist/lib/policy-head.d.ts +13 -0
- package/dist/lib/policy-head.d.ts.map +1 -1
- package/dist/lib/policy-head.js +168 -2
- package/dist/lib/policy-head.js.map +1 -1
- package/dist/lib/resource-optimizer-middleware.d.ts +39 -0
- package/dist/lib/resource-optimizer-middleware.d.ts.map +1 -0
- package/dist/lib/resource-optimizer-middleware.js +222 -0
- package/dist/lib/resource-optimizer-middleware.js.map +1 -0
- package/dist/lib/resource-optimizer.d.ts +71 -0
- package/dist/lib/resource-optimizer.d.ts.map +1 -0
- package/dist/lib/resource-optimizer.js +228 -0
- package/dist/lib/resource-optimizer.js.map +1 -0
- package/dist/lib/rl-manager.d.ts +74 -0
- package/dist/lib/rl-manager.d.ts.map +1 -0
- package/dist/lib/rl-manager.js +244 -0
- package/dist/lib/rl-manager.js.map +1 -0
- package/dist/lib/service-analyzer.d.ts +76 -0
- package/dist/lib/service-analyzer.d.ts.map +1 -0
- package/dist/lib/service-analyzer.js +704 -0
- package/dist/lib/service-analyzer.js.map +1 -0
- package/dist/lib/service-gtm.js +2 -2
- package/dist/lib/service-gtm.js.map +1 -1
- package/dist/lib/service-questionnaire.d.ts +11 -0
- package/dist/lib/service-questionnaire.d.ts.map +1 -0
- package/dist/lib/service-questionnaire.js +89 -0
- package/dist/lib/service-questionnaire.js.map +1 -0
- package/dist/lib/setup/agent-generator.d.ts +2 -0
- package/dist/lib/setup/agent-generator.d.ts.map +1 -1
- package/dist/lib/setup/agent-generator.js +128 -4
- package/dist/lib/setup/agent-generator.js.map +1 -1
- package/dist/lib/setup/flow-generator.d.ts +10 -0
- package/dist/lib/setup/flow-generator.d.ts.map +1 -0
- package/dist/lib/setup/flow-generator.js +113 -0
- package/dist/lib/setup/flow-generator.js.map +1 -0
- package/dist/lib/setup/invariant-bridge.d.ts +91 -0
- package/dist/lib/setup/invariant-bridge.d.ts.map +1 -0
- package/dist/lib/setup/invariant-bridge.js +384 -0
- package/dist/lib/setup/invariant-bridge.js.map +1 -0
- package/dist/lib/setup/spec-generator.d.ts +41 -5
- package/dist/lib/setup/spec-generator.d.ts.map +1 -1
- package/dist/lib/setup/spec-generator.js +503 -29
- package/dist/lib/setup/spec-generator.js.map +1 -1
- package/dist/lib/stratus-client.js +1 -1
- package/dist/lib/stratus-client.js.map +1 -1
- package/dist/lib/surface-agent.d.ts +78 -0
- package/dist/lib/surface-agent.d.ts.map +1 -0
- package/dist/lib/surface-agent.js +105 -0
- package/dist/lib/surface-agent.js.map +1 -0
- package/dist/lib/surface-coordination-example.d.ts +30 -0
- package/dist/lib/surface-coordination-example.d.ts.map +1 -0
- package/dist/lib/surface-coordination-example.js +164 -0
- package/dist/lib/surface-coordination-example.js.map +1 -0
- package/dist/lib/telemetry/physical-world-collector.d.ts +15 -0
- package/dist/lib/telemetry/physical-world-collector.d.ts.map +1 -0
- package/dist/lib/telemetry/physical-world-collector.js +177 -0
- package/dist/lib/telemetry/physical-world-collector.js.map +1 -0
- package/dist/lib/telemetry/training-bridge.d.ts +51 -0
- package/dist/lib/telemetry/training-bridge.d.ts.map +1 -0
- package/dist/lib/telemetry/training-bridge.js +185 -0
- package/dist/lib/telemetry/training-bridge.js.map +1 -0
- package/dist/lib/telemetry.d.ts +2 -1
- package/dist/lib/telemetry.d.ts.map +1 -1
- package/dist/lib/telemetry.js +23 -2
- package/dist/lib/telemetry.js.map +1 -1
- package/dist/lib/tenet-board-agent.d.ts +52 -0
- package/dist/lib/tenet-board-agent.d.ts.map +1 -0
- package/dist/lib/tenet-board-agent.js +226 -0
- package/dist/lib/tenet-board-agent.js.map +1 -0
- package/dist/lib/tenet-ide-agent.d.ts +40 -0
- package/dist/lib/tenet-ide-agent.d.ts.map +1 -0
- package/dist/lib/tenet-ide-agent.js +199 -0
- package/dist/lib/tenet-ide-agent.js.map +1 -0
- package/dist/lib/workspace/data-pipeline.d.ts.map +1 -1
- package/dist/lib/workspace/data-pipeline.js +27 -5
- package/dist/lib/workspace/data-pipeline.js.map +1 -1
- package/dist/lib/workspace/sidebar-runner.d.ts +13 -0
- package/dist/lib/workspace/sidebar-runner.d.ts.map +1 -0
- package/dist/lib/workspace/sidebar-runner.js +419 -0
- package/dist/lib/workspace/sidebar-runner.js.map +1 -0
- package/dist/lib/workspace/surface-registry.d.ts.map +1 -1
- package/dist/lib/workspace/surface-registry.js +4 -1
- package/dist/lib/workspace/surface-registry.js.map +1 -1
- package/dist/lib/workspace/surfaces/agent-overview.d.ts +3 -3
- package/dist/lib/workspace/surfaces/agent-overview.d.ts.map +1 -1
- package/dist/lib/workspace/surfaces/agent-overview.js +3 -3
- package/dist/lib/workspace/surfaces/agent-overview.js.map +1 -1
- package/dist/lib/workspace/surfaces/index.d.ts +3 -0
- package/dist/lib/workspace/surfaces/index.d.ts.map +1 -1
- package/dist/lib/workspace/surfaces/index.js +3 -0
- package/dist/lib/workspace/surfaces/index.js.map +1 -1
- package/dist/lib/workspace/surfaces/kanban.d.ts +15 -0
- package/dist/lib/workspace/surfaces/kanban.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/kanban.js +43 -0
- package/dist/lib/workspace/surfaces/kanban.js.map +1 -0
- package/dist/lib/workspace/surfaces/physical-world.d.ts +15 -0
- package/dist/lib/workspace/surfaces/physical-world.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/physical-world.js +37 -0
- package/dist/lib/workspace/surfaces/physical-world.js.map +1 -0
- package/dist/lib/workspace/surfaces/sidebar.d.ts +22 -0
- package/dist/lib/workspace/surfaces/sidebar.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/sidebar.js +90 -0
- package/dist/lib/workspace/surfaces/sidebar.js.map +1 -0
- package/dist/types/flows.d.ts +2 -1
- package/dist/types/flows.d.ts.map +1 -1
- package/dist/types/physical-world-model.d.ts +65 -0
- package/dist/types/physical-world-model.d.ts.map +1 -0
- package/dist/types/physical-world-model.js +43 -0
- package/dist/types/physical-world-model.js.map +1 -0
- package/dist/types/telemetry.d.ts +37 -0
- package/dist/types/telemetry.d.ts.map +1 -1
- package/dist/types/world-model.d.ts.map +1 -1
- package/dist/types/world-model.js +14 -7
- package/dist/types/world-model.js.map +1 -1
- package/dist/utils/context-hub-port.d.ts.map +1 -1
- package/dist/utils/context-hub-port.js +6 -1
- package/dist/utils/context-hub-port.js.map +1 -1
- package/package.json +3 -2
- package/packages/pi/extensions/index.ts +34 -6
- package/scripts/telemetry-dashboard.sh +44 -0
- package/scripts/test-planning-loop-e2e.ts +181 -0
- package/scripts/test-server-inference.ts +49 -0
- package/scripts/test-state-sensitivity.ts +32 -0
- package/scripts/train/v2/benchmark.py +661 -0
- package/scripts/train/v2/generate_balanced.py +439 -0
- package/scripts/train/v2/generate_hard_negatives.py +219 -0
- package/scripts/train/v2/infer.py +149 -36
- package/scripts/train/v2/infer_server.py +224 -0
- package/scripts/train/v2/online_train.py +576 -0
- package/scripts/train/v2/precompute.py +24 -6
- package/template/CLAUDE.md +74 -132
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Linear ↔ Kanban Normalizers
|
|
3
|
+
*
|
|
4
|
+
* Converts between Linear issues, TenetCards, and GitHub issue inputs.
|
|
5
|
+
* TenetCard is the common intermediate representation.
|
|
6
|
+
*
|
|
7
|
+
* State mapping:
|
|
8
|
+
* Linear backlog/unstarted → jfl/backlog
|
|
9
|
+
* Linear started → jfl/in-progress (or jfl/eval if "review" in name)
|
|
10
|
+
* Linear completed → jfl/done
|
|
11
|
+
*
|
|
12
|
+
* @purpose Normalize Linear issues ↔ TenetCard ↔ GitHub Issues
|
|
13
|
+
*/
|
|
14
|
+
import type { LinearIssue, LinearState, CreateIssueInput } from "./linear-client.js";
|
|
15
|
+
import type { KanbanCard, Column } from "./kanban-github.js";
|
|
16
|
+
export type { Column };
|
|
17
|
+
export interface TenetCard {
|
|
18
|
+
id: string;
|
|
19
|
+
linearId?: string;
|
|
20
|
+
githubNumber?: number;
|
|
21
|
+
title: string;
|
|
22
|
+
description: string;
|
|
23
|
+
status: Column;
|
|
24
|
+
priority: number;
|
|
25
|
+
assignee?: string;
|
|
26
|
+
labels: string[];
|
|
27
|
+
source: "human" | "agent" | "ci" | "flow" | "linear";
|
|
28
|
+
links: {
|
|
29
|
+
pr?: number;
|
|
30
|
+
pr_url?: string;
|
|
31
|
+
eval?: string;
|
|
32
|
+
journal?: string;
|
|
33
|
+
linear_url?: string;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export declare function linearStateToColumn(state: LinearState): Column;
|
|
37
|
+
export declare function linearPriorityToJfl(priority: number): number;
|
|
38
|
+
export declare function jflPriorityToLinear(priority: number): number;
|
|
39
|
+
/**
|
|
40
|
+
* Find the best matching Linear state ID for a given jfl column.
|
|
41
|
+
* Searches the team's workflow states.
|
|
42
|
+
*/
|
|
43
|
+
export declare function findLinearStateId(states: LinearState[], column: Column): string | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Convert a Linear issue to a TenetCard
|
|
46
|
+
*/
|
|
47
|
+
export declare function linearToTenet(issue: LinearIssue): TenetCard;
|
|
48
|
+
/**
|
|
49
|
+
* Convert a KanbanCard (from kanban-github.ts) to a TenetCard
|
|
50
|
+
*/
|
|
51
|
+
export declare function kanbanToTenet(card: KanbanCard): TenetCard;
|
|
52
|
+
/**
|
|
53
|
+
* Convert a TenetCard to Linear issue creation input.
|
|
54
|
+
* Requires states from the team to map column → stateId.
|
|
55
|
+
*/
|
|
56
|
+
export declare function tenetToLinearCreate(card: TenetCard, teamId: string, projectId: string, states: LinearState[]): CreateIssueInput;
|
|
57
|
+
/**
|
|
58
|
+
* Build GitHub issue body for a TenetCard synced from Linear
|
|
59
|
+
*/
|
|
60
|
+
export declare function tenetToGitHubBody(card: TenetCard): string;
|
|
61
|
+
/**
|
|
62
|
+
* Get GitHub labels for a TenetCard.
|
|
63
|
+
* Pass scope to add scope:service-name label (for centralized kanban layout).
|
|
64
|
+
*/
|
|
65
|
+
export declare function tenetToGitHubLabels(card: TenetCard, scope?: string): string[];
|
|
66
|
+
//# sourceMappingURL=linear-kanban.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear-kanban.d.ts","sourceRoot":"","sources":["../../src/lib/linear-kanban.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACpF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE5D,YAAY,EAAE,MAAM,EAAE,CAAA;AAGtB,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAA;IACpD,KAAK,EAAE;QACL,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;CACF;AAsBD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAI9D;AAGD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM5D;AAGD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM5D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EAAE,EACrB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS,CAoBpB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,CAgB3D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAmBzD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,EAAE,GACpB,gBAAgB,CAUlB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAQzD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAiB7E"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Linear ↔ Kanban Normalizers
|
|
3
|
+
*
|
|
4
|
+
* Converts between Linear issues, TenetCards, and GitHub issue inputs.
|
|
5
|
+
* TenetCard is the common intermediate representation.
|
|
6
|
+
*
|
|
7
|
+
* State mapping:
|
|
8
|
+
* Linear backlog/unstarted → jfl/backlog
|
|
9
|
+
* Linear started → jfl/in-progress (or jfl/eval if "review" in name)
|
|
10
|
+
* Linear completed → jfl/done
|
|
11
|
+
*
|
|
12
|
+
* @purpose Normalize Linear issues ↔ TenetCard ↔ GitHub Issues
|
|
13
|
+
*/
|
|
14
|
+
// State type → jfl column
|
|
15
|
+
const STATE_TYPE_MAP = {
|
|
16
|
+
triage: "backlog",
|
|
17
|
+
backlog: "backlog",
|
|
18
|
+
unstarted: "backlog",
|
|
19
|
+
started: "in_progress",
|
|
20
|
+
completed: "done",
|
|
21
|
+
cancelled: "done",
|
|
22
|
+
};
|
|
23
|
+
const EVAL_KEYWORDS = ["review", "testing", "qa", "eval", "in review"];
|
|
24
|
+
// jfl column → Linear state type to search for
|
|
25
|
+
const COLUMN_TO_STATE_TYPE = {
|
|
26
|
+
backlog: ["backlog", "unstarted"],
|
|
27
|
+
in_progress: ["started"],
|
|
28
|
+
eval: ["started"],
|
|
29
|
+
done: ["completed"],
|
|
30
|
+
};
|
|
31
|
+
export function linearStateToColumn(state) {
|
|
32
|
+
const nameLower = state.name.toLowerCase();
|
|
33
|
+
if (EVAL_KEYWORDS.some(kw => nameLower.includes(kw)))
|
|
34
|
+
return "eval";
|
|
35
|
+
return STATE_TYPE_MAP[state.type] ?? "backlog";
|
|
36
|
+
}
|
|
37
|
+
// Linear priority (1=urgent, 4=low) → jfl priority (higher=more urgent)
|
|
38
|
+
export function linearPriorityToJfl(priority) {
|
|
39
|
+
if (priority === 1)
|
|
40
|
+
return 9;
|
|
41
|
+
if (priority === 2)
|
|
42
|
+
return 6;
|
|
43
|
+
if (priority === 3)
|
|
44
|
+
return 3;
|
|
45
|
+
if (priority === 4)
|
|
46
|
+
return 2;
|
|
47
|
+
return 0;
|
|
48
|
+
}
|
|
49
|
+
// jfl priority → Linear priority
|
|
50
|
+
export function jflPriorityToLinear(priority) {
|
|
51
|
+
if (priority >= 9)
|
|
52
|
+
return 1;
|
|
53
|
+
if (priority >= 6)
|
|
54
|
+
return 2;
|
|
55
|
+
if (priority >= 3)
|
|
56
|
+
return 3;
|
|
57
|
+
if (priority >= 1)
|
|
58
|
+
return 4;
|
|
59
|
+
return 0;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Find the best matching Linear state ID for a given jfl column.
|
|
63
|
+
* Searches the team's workflow states.
|
|
64
|
+
*/
|
|
65
|
+
export function findLinearStateId(states, column) {
|
|
66
|
+
const targetTypes = COLUMN_TO_STATE_TYPE[column];
|
|
67
|
+
const nameLower = (name) => name.toLowerCase();
|
|
68
|
+
if (column === "eval") {
|
|
69
|
+
// Look for a state with "review" in the name first
|
|
70
|
+
const evalState = states.find(s => s.type === "started" && EVAL_KEYWORDS.some(kw => nameLower(s.name).includes(kw)));
|
|
71
|
+
if (evalState)
|
|
72
|
+
return evalState.id;
|
|
73
|
+
// Fall back to any started state
|
|
74
|
+
return states.find(s => s.type === "started")?.id;
|
|
75
|
+
}
|
|
76
|
+
// Find state matching target types, sorted by position
|
|
77
|
+
const candidates = states
|
|
78
|
+
.filter(s => targetTypes.includes(s.type))
|
|
79
|
+
.sort((a, b) => a.position - b.position);
|
|
80
|
+
return candidates[0]?.id;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Convert a Linear issue to a TenetCard
|
|
84
|
+
*/
|
|
85
|
+
export function linearToTenet(issue) {
|
|
86
|
+
return {
|
|
87
|
+
id: issue.id,
|
|
88
|
+
linearId: issue.id,
|
|
89
|
+
githubNumber: undefined,
|
|
90
|
+
title: issue.title,
|
|
91
|
+
description: issue.description ?? "",
|
|
92
|
+
status: linearStateToColumn(issue.state),
|
|
93
|
+
priority: linearPriorityToJfl(issue.priority),
|
|
94
|
+
assignee: issue.assignee?.name,
|
|
95
|
+
labels: issue.labels.map(l => l.name),
|
|
96
|
+
source: "linear",
|
|
97
|
+
links: {
|
|
98
|
+
linear_url: issue.url,
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Convert a KanbanCard (from kanban-github.ts) to a TenetCard
|
|
104
|
+
*/
|
|
105
|
+
export function kanbanToTenet(card) {
|
|
106
|
+
return {
|
|
107
|
+
id: card.id,
|
|
108
|
+
linearId: undefined,
|
|
109
|
+
githubNumber: card.number,
|
|
110
|
+
title: card.title,
|
|
111
|
+
description: card.description,
|
|
112
|
+
status: card.column,
|
|
113
|
+
priority: card.priority,
|
|
114
|
+
assignee: card.agent || undefined,
|
|
115
|
+
labels: card.labels,
|
|
116
|
+
source: card.source,
|
|
117
|
+
links: {
|
|
118
|
+
pr: card.links.pr,
|
|
119
|
+
pr_url: card.links.pr_url,
|
|
120
|
+
eval: card.links.eval,
|
|
121
|
+
journal: card.links.journal,
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Convert a TenetCard to Linear issue creation input.
|
|
127
|
+
* Requires states from the team to map column → stateId.
|
|
128
|
+
*/
|
|
129
|
+
export function tenetToLinearCreate(card, teamId, projectId, states) {
|
|
130
|
+
const stateId = findLinearStateId(states, card.status);
|
|
131
|
+
return {
|
|
132
|
+
title: card.title,
|
|
133
|
+
description: card.description || undefined,
|
|
134
|
+
teamId,
|
|
135
|
+
projectId,
|
|
136
|
+
stateId,
|
|
137
|
+
priority: jflPriorityToLinear(card.priority),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Build GitHub issue body for a TenetCard synced from Linear
|
|
142
|
+
*/
|
|
143
|
+
export function tenetToGitHubBody(card) {
|
|
144
|
+
let body = card.description || "";
|
|
145
|
+
const meta = [`linear_id: ${card.linearId}`];
|
|
146
|
+
if (card.links.linear_url)
|
|
147
|
+
meta.push(`linear_url: ${card.links.linear_url}`);
|
|
148
|
+
if (meta.length > 0) {
|
|
149
|
+
body += `\n\n<!-- jfl:\n${meta.join("\n")}\n-->`;
|
|
150
|
+
}
|
|
151
|
+
return body;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get GitHub labels for a TenetCard.
|
|
155
|
+
* Pass scope to add scope:service-name label (for centralized kanban layout).
|
|
156
|
+
*/
|
|
157
|
+
export function tenetToGitHubLabels(card, scope) {
|
|
158
|
+
const COLUMN_LABELS = {
|
|
159
|
+
backlog: "jfl/backlog",
|
|
160
|
+
in_progress: "jfl/in-progress",
|
|
161
|
+
eval: "jfl/eval",
|
|
162
|
+
done: "jfl/done",
|
|
163
|
+
};
|
|
164
|
+
const labels = [COLUMN_LABELS[card.status], "source:linear"];
|
|
165
|
+
if (scope)
|
|
166
|
+
labels.push(`scope:${scope}`);
|
|
167
|
+
if (card.priority >= 9)
|
|
168
|
+
labels.push("priority:critical");
|
|
169
|
+
else if (card.priority >= 6)
|
|
170
|
+
labels.push("priority:high");
|
|
171
|
+
else if (card.priority >= 1)
|
|
172
|
+
labels.push("priority:low");
|
|
173
|
+
return labels;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=linear-kanban.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear-kanban.js","sourceRoot":"","sources":["../../src/lib/linear-kanban.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Onboarding system for Tenet IDE
|
|
3
|
+
*
|
|
4
|
+
* Detects project capabilities, creates workspace, and manages progressive feature disclosure
|
|
5
|
+
*/
|
|
6
|
+
import { UserEngagement, FeatureReveal } from './discovery-agent.js';
|
|
7
|
+
export declare class Onboarding {
|
|
8
|
+
private projectRoot;
|
|
9
|
+
private capabilities;
|
|
10
|
+
constructor(projectRoot: string);
|
|
11
|
+
/**
|
|
12
|
+
* Auto-detect project capabilities for stealth workspace creation
|
|
13
|
+
*/
|
|
14
|
+
private detectCapabilities;
|
|
15
|
+
/**
|
|
16
|
+
* Create .tenet workspace with intelligent defaults
|
|
17
|
+
*/
|
|
18
|
+
createWorkspace(): Promise<boolean>;
|
|
19
|
+
/**
|
|
20
|
+
* Generate AI assistants based on detected project capabilities
|
|
21
|
+
*/
|
|
22
|
+
private generateAssistants;
|
|
23
|
+
/**
|
|
24
|
+
* Check if user should see a feature revelation
|
|
25
|
+
*/
|
|
26
|
+
checkForReveal(): Promise<FeatureReveal | null>;
|
|
27
|
+
/**
|
|
28
|
+
* Display feature reveal to user in friendly way
|
|
29
|
+
*/
|
|
30
|
+
displayReveal(reveal: FeatureReveal): void;
|
|
31
|
+
/**
|
|
32
|
+
* Update user engagement metrics
|
|
33
|
+
*/
|
|
34
|
+
updateEngagement(actions: Partial<UserEngagement>): void;
|
|
35
|
+
/**
|
|
36
|
+
* Get user-friendly project name
|
|
37
|
+
*/
|
|
38
|
+
private getProjectName;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=onboarding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/lib/onboarding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAkB,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAYpF,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,YAAY,CAAqB;gBAE7B,WAAW,EAAE,MAAM;IAK/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsD1B;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAkDzC;;OAEG;YACW,kBAAkB;IA4ChC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAerD;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAY1C;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAkBxD;;OAEG;IACH,OAAO,CAAC,cAAc;CAYvB"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Onboarding system for Tenet IDE
|
|
3
|
+
*
|
|
4
|
+
* Detects project capabilities, creates workspace, and manages progressive feature disclosure
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
7
|
+
import { join } from 'path';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import { DiscoveryAgent } from './discovery-agent.js';
|
|
10
|
+
export class Onboarding {
|
|
11
|
+
projectRoot;
|
|
12
|
+
capabilities;
|
|
13
|
+
constructor(projectRoot) {
|
|
14
|
+
this.projectRoot = projectRoot;
|
|
15
|
+
this.capabilities = this.detectCapabilities();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Auto-detect project capabilities for stealth workspace creation
|
|
19
|
+
*/
|
|
20
|
+
detectCapabilities() {
|
|
21
|
+
const hasGit = existsSync(join(this.projectRoot, '.git'));
|
|
22
|
+
const hasPackageJson = existsSync(join(this.projectRoot, 'package.json'));
|
|
23
|
+
const hasNodeModules = existsSync(join(this.projectRoot, 'node_modules'));
|
|
24
|
+
const hasTsConfig = existsSync(join(this.projectRoot, 'tsconfig.json'));
|
|
25
|
+
let hasTypeScript = hasTsConfig;
|
|
26
|
+
let hasTesting = false;
|
|
27
|
+
let projectType = 'unknown';
|
|
28
|
+
const detectedServices = [];
|
|
29
|
+
if (hasPackageJson) {
|
|
30
|
+
try {
|
|
31
|
+
const pkg = JSON.parse(readFileSync(join(this.projectRoot, 'package.json'), 'utf8'));
|
|
32
|
+
// Detect TypeScript
|
|
33
|
+
if (pkg.devDependencies?.typescript || pkg.dependencies?.typescript) {
|
|
34
|
+
hasTypeScript = true;
|
|
35
|
+
}
|
|
36
|
+
// Detect testing frameworks
|
|
37
|
+
const testFrameworks = ['jest', 'vitest', 'mocha', 'cypress', 'playwright'];
|
|
38
|
+
hasTesting = testFrameworks.some(fw => pkg.devDependencies?.[fw] || pkg.dependencies?.[fw] ||
|
|
39
|
+
pkg.scripts?.test || pkg.scripts?.['test:unit']);
|
|
40
|
+
// Detect project type
|
|
41
|
+
if (pkg.dependencies?.express || pkg.dependencies?.fastify)
|
|
42
|
+
projectType = 'node';
|
|
43
|
+
else if (pkg.dependencies?.react || pkg.dependencies?.vue || pkg.dependencies?.[`@angular/core`])
|
|
44
|
+
projectType = 'web';
|
|
45
|
+
else if (!pkg.dependencies && pkg.devDependencies)
|
|
46
|
+
projectType = 'library';
|
|
47
|
+
else
|
|
48
|
+
projectType = 'node';
|
|
49
|
+
// Detect services
|
|
50
|
+
if (hasGit)
|
|
51
|
+
detectedServices.push('GitHub');
|
|
52
|
+
if (hasTesting)
|
|
53
|
+
detectedServices.push('Testing');
|
|
54
|
+
if (hasTypeScript)
|
|
55
|
+
detectedServices.push('TypeScript');
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.warn('Could not parse package.json:', error);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
hasGit,
|
|
63
|
+
hasPackageJson,
|
|
64
|
+
hasTypeScript,
|
|
65
|
+
hasTesting,
|
|
66
|
+
hasNodeModules,
|
|
67
|
+
projectType,
|
|
68
|
+
detectedServices
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Create .tenet workspace with intelligent defaults
|
|
73
|
+
*/
|
|
74
|
+
async createWorkspace() {
|
|
75
|
+
const tenenetDir = join(this.projectRoot, '.tenet');
|
|
76
|
+
try {
|
|
77
|
+
// Create .tenet directory if it doesn't exist
|
|
78
|
+
if (!existsSync(tenenetDir)) {
|
|
79
|
+
mkdirSync(tenenetDir, { recursive: true });
|
|
80
|
+
}
|
|
81
|
+
// Write project configuration
|
|
82
|
+
const config = {
|
|
83
|
+
name: this.getProjectName(),
|
|
84
|
+
type: this.capabilities.projectType,
|
|
85
|
+
detectedServices: this.capabilities.detectedServices,
|
|
86
|
+
capabilities: this.capabilities,
|
|
87
|
+
createdAt: new Date().toISOString(),
|
|
88
|
+
progressive: true // Flag indicating progressive disclosure mode
|
|
89
|
+
};
|
|
90
|
+
writeFileSync(join(tenenetDir, 'project.json'), JSON.stringify(config, null, 2));
|
|
91
|
+
// Create engagement tracking
|
|
92
|
+
const engagement = {
|
|
93
|
+
sessionsCount: 1,
|
|
94
|
+
totalTimeMinutes: 0,
|
|
95
|
+
featuresUsed: [],
|
|
96
|
+
positiveSignals: ['workspace_created'],
|
|
97
|
+
confusionSignals: [],
|
|
98
|
+
lastSeen: new Date(),
|
|
99
|
+
installDate: new Date()
|
|
100
|
+
};
|
|
101
|
+
writeFileSync(join(tenenetDir, 'engagement.json'), JSON.stringify(engagement, null, 2));
|
|
102
|
+
// Generate intelligent assistants based on project capabilities
|
|
103
|
+
await this.generateAssistants(tenenetDir);
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
console.warn('Could not create Tenet workspace:', error);
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Generate AI assistants based on detected project capabilities
|
|
113
|
+
*/
|
|
114
|
+
async generateAssistants(tenenetDir) {
|
|
115
|
+
const assistants = [];
|
|
116
|
+
if (this.capabilities.hasTypeScript) {
|
|
117
|
+
assistants.push({
|
|
118
|
+
name: 'type-helper',
|
|
119
|
+
description: 'Monitors TypeScript compilation and suggests improvements',
|
|
120
|
+
capability: 'code-quality',
|
|
121
|
+
active: true
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
if (this.capabilities.hasTesting) {
|
|
125
|
+
assistants.push({
|
|
126
|
+
name: 'test-assistant',
|
|
127
|
+
description: 'Analyzes test coverage and suggests additional tests',
|
|
128
|
+
capability: 'test-coverage',
|
|
129
|
+
active: true
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
if (this.capabilities.hasGit) {
|
|
133
|
+
assistants.push({
|
|
134
|
+
name: 'workflow-optimizer',
|
|
135
|
+
description: 'Learns from your git patterns to optimize development workflow',
|
|
136
|
+
capability: 'workflow-optimization',
|
|
137
|
+
active: true
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
// Always include basic system assistant
|
|
141
|
+
assistants.push({
|
|
142
|
+
name: 'system-monitor',
|
|
143
|
+
description: 'Tracks build performance and development environment health',
|
|
144
|
+
capability: 'system-intelligence',
|
|
145
|
+
active: true
|
|
146
|
+
});
|
|
147
|
+
writeFileSync(join(tenenetDir, 'assistants.json'), JSON.stringify(assistants, null, 2));
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Check if user should see a feature revelation
|
|
151
|
+
*/
|
|
152
|
+
async checkForReveal() {
|
|
153
|
+
const engagementPath = join(this.projectRoot, '.tenet', 'engagement.json');
|
|
154
|
+
if (!existsSync(engagementPath))
|
|
155
|
+
return null;
|
|
156
|
+
try {
|
|
157
|
+
const engagement = JSON.parse(readFileSync(engagementPath, 'utf8'));
|
|
158
|
+
const agent = new DiscoveryAgent(engagement);
|
|
159
|
+
return agent.decideNextReveal();
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Display feature reveal to user in friendly way
|
|
167
|
+
*/
|
|
168
|
+
displayReveal(reveal) {
|
|
169
|
+
console.log();
|
|
170
|
+
console.log(chalk.cyan('💡 ') + chalk.bold(reveal.message));
|
|
171
|
+
if (reveal.subtitle) {
|
|
172
|
+
console.log(chalk.gray(` ${reveal.subtitle}`));
|
|
173
|
+
}
|
|
174
|
+
if (reveal.demoCommand) {
|
|
175
|
+
console.log(chalk.gray(` Try: ${reveal.demoCommand}`));
|
|
176
|
+
}
|
|
177
|
+
console.log();
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Update user engagement metrics
|
|
181
|
+
*/
|
|
182
|
+
updateEngagement(actions) {
|
|
183
|
+
const engagementPath = join(this.projectRoot, '.tenet', 'engagement.json');
|
|
184
|
+
if (!existsSync(engagementPath))
|
|
185
|
+
return;
|
|
186
|
+
try {
|
|
187
|
+
const engagement = JSON.parse(readFileSync(engagementPath, 'utf8'));
|
|
188
|
+
// Update metrics
|
|
189
|
+
Object.assign(engagement, actions);
|
|
190
|
+
engagement.lastSeen = new Date();
|
|
191
|
+
writeFileSync(engagementPath, JSON.stringify(engagement, null, 2));
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
console.warn('Could not update engagement:', error);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Get user-friendly project name
|
|
199
|
+
*/
|
|
200
|
+
getProjectName() {
|
|
201
|
+
if (this.capabilities.hasPackageJson) {
|
|
202
|
+
try {
|
|
203
|
+
const pkg = JSON.parse(readFileSync(join(this.projectRoot, 'package.json'), 'utf8'));
|
|
204
|
+
return pkg.name || 'My Project';
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
// Fall through
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return this.projectRoot.split('/').pop() || 'My Project';
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=onboarding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/lib/onboarding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Physical-World World Model
|
|
3
|
+
* Integrates physical system dynamics with Stratus reasoning for RL training
|
|
4
|
+
*/
|
|
5
|
+
import type { PhysicalWorldState, PhysicalWorldAction, PhysicalWorldTransition, PhysicalWorldPrediction, PhysicalWorldInvariant } from '../types/physical-world-model.js';
|
|
6
|
+
export declare class PhysicalWorldModel {
|
|
7
|
+
private transitions;
|
|
8
|
+
private readonly MAX_TRANSITIONS;
|
|
9
|
+
private stratusClient;
|
|
10
|
+
constructor();
|
|
11
|
+
/**
|
|
12
|
+
* Capture current physical world state
|
|
13
|
+
*/
|
|
14
|
+
captureCurrentState(): Promise<PhysicalWorldState>;
|
|
15
|
+
/**
|
|
16
|
+
* Predict outcome of an action using Stratus reasoning
|
|
17
|
+
*/
|
|
18
|
+
predictOutcome(currentState: PhysicalWorldState, action: PhysicalWorldAction): Promise<PhysicalWorldPrediction>;
|
|
19
|
+
/**
|
|
20
|
+
* Record actual outcome and learn from it
|
|
21
|
+
*/
|
|
22
|
+
recordTransition(transition: PhysicalWorldTransition): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Check physical world safety invariants
|
|
25
|
+
*/
|
|
26
|
+
checkSafetyInvariants(state: PhysicalWorldState): Array<{
|
|
27
|
+
invariant: PhysicalWorldInvariant;
|
|
28
|
+
violated: boolean;
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* Generate counterfactual scenarios
|
|
32
|
+
*/
|
|
33
|
+
generateCounterfactuals(actualTransition: PhysicalWorldTransition, alternativeActions: PhysicalWorldAction[]): Promise<PhysicalWorldPrediction[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Get physical world insights for agent decision making
|
|
36
|
+
*/
|
|
37
|
+
getPhysicalWorldInsights(): {
|
|
38
|
+
current_health: string;
|
|
39
|
+
optimization_opportunities: string[];
|
|
40
|
+
risk_factors: string[];
|
|
41
|
+
recent_trends: string[];
|
|
42
|
+
};
|
|
43
|
+
private findSimilarTransitions;
|
|
44
|
+
private fallbackPrediction;
|
|
45
|
+
private assessSystemHealth;
|
|
46
|
+
private identifyOptimizationOpportunities;
|
|
47
|
+
private analyzeTrends;
|
|
48
|
+
}
|
|
49
|
+
export declare const physicalWorldModel: PhysicalWorldModel;
|
|
50
|
+
//# sourceMappingURL=physical-world-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physical-world-model.d.ts","sourceRoot":"","sources":["../../src/lib/physical-world-model.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EAEvB,MAAM,kCAAkC,CAAA;AAEzC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAO;IACvC,OAAO,CAAC,aAAa,CAAe;;IAMpC;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA6BxD;;OAEG;IACG,cAAc,CAClB,YAAY,EAAE,kBAAkB,EAChC,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,uBAAuB,CAAC;IAkEnC;;OAEG;IACG,gBAAgB,CAAC,UAAU,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC1E;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,KAAK,CAAC;QAAC,SAAS,EAAE,sBAAsB,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAC,CAAC;IAS/G;;OAEG;IACG,uBAAuB,CAC3B,gBAAgB,EAAE,uBAAuB,EACzC,kBAAkB,EAAE,mBAAmB,EAAE,GACxC,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAWrC;;OAEG;IACH,wBAAwB,IAAI;QAC1B,cAAc,EAAE,MAAM,CAAA;QACtB,0BAA0B,EAAE,MAAM,EAAE,CAAA;QACpC,YAAY,EAAE,MAAM,EAAE,CAAA;QACtB,aAAa,EAAE,MAAM,EAAE,CAAA;KACxB;IA0BD,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,iCAAiC;IAYzC,OAAO,CAAC,aAAa;CAuBtB;AAGD,eAAO,MAAM,kBAAkB,oBAA2B,CAAA"}
|