@aryacode/dsh-engineering 0.4.4 → 0.4.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.
Files changed (110) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/cordis.patch.yml +3 -2
  3. package/package.json +3 -2
  4. package/vendor/optix/bridge/LICENSE +35 -0
  5. package/vendor/optix/bridge/StudioMCPBridge.cs +7022 -0
  6. package/vendor/optix/bridge/source.json +10 -0
  7. package/vendor/optix/icon.svg +13 -0
  8. package/vendor/optix/lib/index.js +1531 -0
  9. package/vendor/optix/lib/types/bridge.d.ts +77 -0
  10. package/vendor/optix/lib/types/index.d.ts +52 -0
  11. package/vendor/optix/lib/types/ocr.d.ts +46 -0
  12. package/vendor/optix/lib/types/operations.d.ts +42 -0
  13. package/vendor/optix/lib/types/preview.d.ts +33 -0
  14. package/vendor/optix/lib/types/templates.d.ts +18 -0
  15. package/vendor/optix/locale/en.json +6 -0
  16. package/vendor/optix/locale/zh.json +6 -0
  17. package/vendor/optix/templates/arya-optix-ipc/manifest.json +260 -0
  18. package/vendor/optix/templates/arya-optix-ipc/project/AryaNewHMIProject_IPC.optix +81 -0
  19. package/vendor/optix/templates/arya-optix-ipc/project/AryaNewHMIProject_IPC.optix.design +38 -0
  20. package/vendor/optix/templates/arya-optix-ipc/project/IDEVersion.txt +1 -0
  21. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/Alarms/Alarms.yaml +3 -0
  22. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/AryaNewHMIProject_IPC.yaml +67 -0
  23. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/CommDrivers/CommDrivers.yaml +2 -0
  24. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/Converters/Converters.yaml +2 -0
  25. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/DataStores/DataStores.yaml +2 -0
  26. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/Loggers/Loggers.yaml +2 -0
  27. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/MQTT/MQTT.yaml +2 -0
  28. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/Model/Model.yaml +2 -0
  29. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/NetLogic/NetLogic.yaml +28 -0
  30. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/OPC-UA/OPC-UA.yaml +2 -0
  31. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/Recipes/Recipes.yaml +2 -0
  32. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/Reports/Reports.yaml +2 -0
  33. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/Retentivity/Retentivity.yaml +57 -0
  34. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/Security/Groups/Groups.yaml +3 -0
  35. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/Security/Roles/Roles.yaml +3 -0
  36. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/Security/Security.yaml +7 -0
  37. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/Security/Users/Users.yaml +3 -0
  38. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/System/System.yaml +2 -0
  39. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/Translations/Translations.yaml +16 -0
  40. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/UI/Keyboards/Keyboards.yaml +2 -0
  41. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/UI/Screens/Screens.yaml +2 -0
  42. package/vendor/optix/templates/arya-optix-ipc/project/Nodes/UI/UI.yaml +306 -0
  43. package/vendor/optix/templates/arya-optix-ipc/project/ProjectFiles/NetSolution/.vscode/launch.json +19 -0
  44. package/vendor/optix/templates/arya-optix-ipc/project/ProjectFiles/NetSolution/AryaNewHMIProject_IPC.code-workspace +10 -0
  45. package/vendor/optix/templates/arya-optix-ipc/project/ProjectFiles/NetSolution/AryaNewHMIProject_IPC.csproj +19 -0
  46. package/vendor/optix/templates/arya-optix-ipc/project/ProjectFiles/NetSolution/AryaNewHMIProject_IPC.references +172 -0
  47. package/vendor/optix/templates/arya-optix-ipc/project/ProjectFiles/NetSolution/AryaNewHMIProject_IPC.sln +21 -0
  48. package/vendor/optix/templates/arya-optix-ipc/project/ProjectFiles/NetSolution/Private/TypeConstants.cs +20 -0
  49. package/vendor/optix/templates/arya-optix-ipc/project/ProjectFiles/NetSolution/Private/UITypeDefinitions.cs +11 -0
  50. package/vendor/optix/templates/arya-optix-ipc/project/ProjectFiles/NetSolution/StudioMCPBridge.cs +4555 -0
  51. package/vendor/optix/templates/arya-optix-ipc/project/ProjectFiles/UserDefinedModule.xml +26 -0
  52. package/vendor/optix/templates/arya-optix-panel/manifest.json +411 -0
  53. package/vendor/optix/templates/arya-optix-panel/project/AryaNewHMIProject_OptixPanel.optix +97 -0
  54. package/vendor/optix/templates/arya-optix-panel/project/AryaNewHMIProject_OptixPanel.optix.design +38 -0
  55. package/vendor/optix/templates/arya-optix-panel/project/IDEVersion.txt +1 -0
  56. package/vendor/optix/templates/arya-optix-panel/project/Nodes/Alarms/Alarms.yaml +3 -0
  57. package/vendor/optix/templates/arya-optix-panel/project/Nodes/AryaNewHMIProject_OptixPanel.yaml +67 -0
  58. package/vendor/optix/templates/arya-optix-panel/project/Nodes/CommDrivers/CommDrivers.yaml +2 -0
  59. package/vendor/optix/templates/arya-optix-panel/project/Nodes/Converters/Converters.yaml +2 -0
  60. package/vendor/optix/templates/arya-optix-panel/project/Nodes/DataStores/DataStores.yaml +2 -0
  61. package/vendor/optix/templates/arya-optix-panel/project/Nodes/Loggers/Loggers.yaml +2 -0
  62. package/vendor/optix/templates/arya-optix-panel/project/Nodes/MQTT/MQTT.yaml +2 -0
  63. package/vendor/optix/templates/arya-optix-panel/project/Nodes/Model/Model.yaml +2 -0
  64. package/vendor/optix/templates/arya-optix-panel/project/Nodes/NetLogic/NetLogic.yaml +28 -0
  65. package/vendor/optix/templates/arya-optix-panel/project/Nodes/OPC-UA/OPC-UA.yaml +2 -0
  66. package/vendor/optix/templates/arya-optix-panel/project/Nodes/Recipes/Recipes.yaml +2 -0
  67. package/vendor/optix/templates/arya-optix-panel/project/Nodes/Reports/Reports.yaml +2 -0
  68. package/vendor/optix/templates/arya-optix-panel/project/Nodes/Retentivity/Retentivity.yaml +57 -0
  69. package/vendor/optix/templates/arya-optix-panel/project/Nodes/Security/Groups/Groups.yaml +3 -0
  70. package/vendor/optix/templates/arya-optix-panel/project/Nodes/Security/Roles/Roles.yaml +3 -0
  71. package/vendor/optix/templates/arya-optix-panel/project/Nodes/Security/Security.yaml +7 -0
  72. package/vendor/optix/templates/arya-optix-panel/project/Nodes/Security/Users/Users.yaml +3 -0
  73. package/vendor/optix/templates/arya-optix-panel/project/Nodes/System/System.yaml +444 -0
  74. package/vendor/optix/templates/arya-optix-panel/project/Nodes/Translations/Translations.yaml +81 -0
  75. package/vendor/optix/templates/arya-optix-panel/project/Nodes/UI/Keyboards/Keyboards.yaml +2 -0
  76. package/vendor/optix/templates/arya-optix-panel/project/Nodes/UI/Screens/Screens.yaml +2 -0
  77. package/vendor/optix/templates/arya-optix-panel/project/Nodes/UI/SettingsWidgets/DeviceSettingsWidget/DeviceSettingsWidget.yaml +163 -0
  78. package/vendor/optix/templates/arya-optix-panel/project/Nodes/UI/SettingsWidgets/DeviceSettingsWidget/DeviceSettingsWidgetComponents/DeviceSettingsWidgetComponents.yaml +1663 -0
  79. package/vendor/optix/templates/arya-optix-panel/project/Nodes/UI/SettingsWidgets/FactoryTalkRemoteAccessWidget/FTRemoteAccessWidgetComponents/FTRemoteAccessWidgetComponents.yaml +2471 -0
  80. package/vendor/optix/templates/arya-optix-panel/project/Nodes/UI/SettingsWidgets/FactoryTalkRemoteAccessWidget/FactoryTalkRemoteAccessWidget.yaml +218 -0
  81. package/vendor/optix/templates/arya-optix-panel/project/Nodes/UI/SettingsWidgets/NetworkSettingsWidget/NetworkSettingsWidget.yaml +524 -0
  82. package/vendor/optix/templates/arya-optix-panel/project/Nodes/UI/SettingsWidgets/NetworkSettingsWidget/NetworkSettingsWidgetComponents/NetworkSettingsWidgetComponents.yaml +690 -0
  83. package/vendor/optix/templates/arya-optix-panel/project/Nodes/UI/SettingsWidgets/SettingsWidgets.yaml +1265 -0
  84. package/vendor/optix/templates/arya-optix-panel/project/Nodes/UI/UI.yaml +308 -0
  85. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/.vscode/launch.json +19 -0
  86. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/ApplicationNameLogic.cs +19 -0
  87. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/AryaNewHMIProject_OptixPanel.code-workspace +10 -0
  88. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/AryaNewHMIProject_OptixPanel.csproj +19 -0
  89. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/AryaNewHMIProject_OptixPanel.references +172 -0
  90. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/AryaNewHMIProject_OptixPanel.sln +21 -0
  91. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/ConnectionSwitchLogic.cs +74 -0
  92. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/DateAndTimeWidgetLogic.cs +420 -0
  93. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/DeviceSettingsWidgetLogic.cs +34 -0
  94. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/FTOptixStudioVersionLogic.cs +47 -0
  95. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/FTRemoteAccessWidgetSetupLogic.cs +153 -0
  96. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/IncomingConnectionApprovalLogic.cs +118 -0
  97. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/IncomingConnectionReceiverLogic.cs +166 -0
  98. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/NetworkConfiguratorEditModelsLogic.cs +56 -0
  99. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/NetworkInterfaceLogic.cs +138 -0
  100. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/NetworkInterfacesEditModelReaderLogic.cs +87 -0
  101. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/NetworkInterfacesEditModelToSystemWriterLogic.cs +139 -0
  102. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/NetworkSettingsLogic.cs +168 -0
  103. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/Private/FTRemoteAccessWidgetDataObject.cs +106 -0
  104. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/Private/TypeConstants.cs +37 -0
  105. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/Private/UITypeDefinitions.cs +91 -0
  106. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/RequestAssistanceSwitchLogic.cs +93 -0
  107. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/StudioMCPBridge.cs +4555 -0
  108. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/NetSolution/SystemToNetworkInterfacesEditModelWriterLogic.cs +77 -0
  109. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/UserDefinedModule.xml +111 -0
  110. package/vendor/optix/templates/arya-optix-panel/project/ProjectFiles/WarningIcon.svg +4 -0
@@ -0,0 +1,77 @@
1
+ /** Bounded direct HTTP transport to the in-Studio Optix bridge. @module dsh-tool-ft-optix/bridge */
2
+ import type { JsonValue } from '@deepseek-ai/dsh-util-values';
3
+ /** Transport and acquisition limits resolved at plugin load. */
4
+ export interface BridgeConfig {
5
+ /** Explicit loopback bridge endpoints; discovery does not scan other ports. */
6
+ bridgeUrls: string[];
7
+ /** Optional bridge bearer token; never included in tool values or errors. */
8
+ bridgeToken: string;
9
+ /** Per-request deadline in milliseconds. */
10
+ requestTimeoutMs: number;
11
+ /** Maximum UTF-8 bytes acquired for each response or request. */
12
+ maxResponseBytes: number;
13
+ }
14
+ /** A failure after dispatch may leave a mutation's outcome uncertain. */
15
+ export declare class BridgeError extends Error {
16
+ /** Whether an authoring request may have reached Studio. */
17
+ readonly mayHaveApplied: boolean;
18
+ /**
19
+ * Describe a transport or bridge refusal.
20
+ * @param message - Credential-free diagnostic.
21
+ * @param mayHaveApplied - Whether inspecting the live model is required before retrying.
22
+ */
23
+ constructor(message: string, mayHaveApplied: boolean);
24
+ }
25
+ /**
26
+ * Validate a local endpoint and normalize its trailing slash.
27
+ * @param input - Configured URL.
28
+ * @returns The normalized loopback origin.
29
+ */
30
+ export declare function bridgeOrigin(input: string): string;
31
+ /**
32
+ * Check for a JSON object in an external response.
33
+ * @param value - Parsed bridge JSON.
34
+ * @returns Whether the value is a non-null object rather than an array.
35
+ */
36
+ export declare function jsonObject(value: JsonValue): value is Record<string, JsonValue>;
37
+ /** Direct bridge transport; writes are never automatically retried or redirected. */
38
+ export declare class OptixBridgeGateway {
39
+ private readonly config;
40
+ private readonly disposed;
41
+ private readonly pending;
42
+ /**
43
+ * Bind validated limits and the plugin-disposal signal.
44
+ * @param config - Resolved transport configuration.
45
+ * @param disposed - Aborts all transport work when the plugin unloads.
46
+ */
47
+ constructor(config: BridgeConfig, disposed: AbortSignal);
48
+ /**
49
+ * Acquire one bounded JSON response without exposing query values in errors.
50
+ * @param origin - Validated configured origin.
51
+ * @param route - Plugin-owned bridge route.
52
+ * @param signal - Caller cancellation.
53
+ * @param query - Operation parameters.
54
+ * @param method - HTTP verb.
55
+ * @param body - Validation batch, when present.
56
+ * @returns Validated lossless JSON; HTTP and bridge errors throw.
57
+ */
58
+ request(origin: string, route: string, signal: AbortSignal, query?: Record<string, string>, method?: 'GET' | 'POST', body?: JsonValue): Promise<Record<string, JsonValue>>;
59
+ /**
60
+ * Wait for aborted requests to release response readers.
61
+ * @returns Completion after every current transport request settles.
62
+ */
63
+ drain(): Promise<void>;
64
+ /** Acquire and release one response reader within the configured byte and time limits. */
65
+ private acquire;
66
+ /**
67
+ * Select exactly one loaded Studio project by its bridge-reported BrowseName.
68
+ * @param project - Exact name returned by health discovery.
69
+ * @param signal - Caller cancellation.
70
+ * @returns The serving origin and its health facts.
71
+ */
72
+ select(project: string, signal: AbortSignal): Promise<{
73
+ origin: string;
74
+ health: Record<string, JsonValue>;
75
+ }>;
76
+ }
77
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1,52 @@
1
+ /** Native FactoryTalk Optix discovery and live authoring tools. @module dsh-tool-ft-optix */
2
+ import type { Context } from '@deepseek-ai/cordis';
3
+ import z from '@deepseek-ai/schemastery';
4
+ import type { OcrConfig } from './ocr.ts';
5
+ /** Cordis plugin name. */
6
+ export declare const name = "tool-ft-optix";
7
+ /** Tools are dispatched through the harness policy and session pipeline. */
8
+ export declare const inject: string[];
9
+ /** Deployment-specific connection, authoring, and acquisition settings. */
10
+ export interface Config {
11
+ /** Exact loopback origins to probe for Studio projects. */
12
+ bridgeUrls?: string[];
13
+ /** Optional bearer token configured on the Studio bridge. */
14
+ bridgeToken?: string;
15
+ /** Enable live authoring; dry-run validation remains available when false. */
16
+ allowWrites?: boolean;
17
+ /** Enable deletion, moves, reordering, retyping, replacement, and conversion. */
18
+ allowDestructive?: boolean;
19
+ /** Enable exported method invocation on session-safe bridge builds. */
20
+ allowInvoke?: boolean;
21
+ /** Per-request deadline in milliseconds. */
22
+ requestTimeoutMs?: number;
23
+ /** Maximum acquired UTF-8 bytes per response, request body, or query. */
24
+ maxResponseBytes?: number;
25
+ /** Maximum operations admitted in one batch. */
26
+ maxBatchOps?: number;
27
+ /** Maximum nodes requested in a project map. */
28
+ maxMapNodes?: number;
29
+ /** Maximum project-map traversal depth. */
30
+ maxMapDepth?: number;
31
+ /** Register direct CDP preview and screenshot tools. */
32
+ preview?: boolean;
33
+ /** Existing Chromium CDP endpoint, used only when preview is enabled. */
34
+ cdpUrl?: string;
35
+ /** Already-open emulator browser tab, selected by exact origin, pathname, and query. */
36
+ previewUrl?: string;
37
+ /** Enable pointer and keyboard input into the selected emulator preview. */
38
+ allowPreviewInput?: boolean;
39
+ /** Maximum viewport pixel count admitted for a screenshot. */
40
+ maxPreviewPixels?: number;
41
+ /** Optional host Tesseract installation for recognizing canvas text in preview screenshots. */
42
+ ocr?: OcrConfig | null;
43
+ }
44
+ /** Runtime configuration; no connection is opened during plugin registration. */
45
+ export declare const Config: z<Config>;
46
+ /**
47
+ * Register native tools and abort transport work on plugin disposal.
48
+ * @param ctx - Cordis context with the harness tool runtime.
49
+ * @param config - Connection and authoring settings.
50
+ */
51
+ export declare function apply(ctx: Context, config?: Config): void;
52
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,46 @@
1
+ /** Local Tesseract canvas recognition without an MCP server. @module dsh-tool-ft-optix/ocr */
2
+ /** Explicit host OCR installation and language selection. */
3
+ export interface OcrConfig {
4
+ /** Absolute executable path or executable name resolved by the host PATH. */
5
+ executable: string;
6
+ /** Installed Tesseract language names, joined with + for multiple languages. */
7
+ language: string;
8
+ /** Directory containing traineddata files; empty uses Tesseract's installation default. */
9
+ tessdataDirectory: string;
10
+ }
11
+ /** A recognized word in screenshot pixels; confidence is a fraction between zero and one. */
12
+ export interface OcrWord {
13
+ text: string;
14
+ confidence: number;
15
+ x: number;
16
+ y: number;
17
+ width: number;
18
+ height: number;
19
+ /** Page, block, paragraph, and line identifiers joined with colons. */
20
+ line: string;
21
+ }
22
+ /** Recognized frame text and word-level evidence; empty frames have null mean confidence. */
23
+ export interface OcrResult {
24
+ text: string;
25
+ words: OcrWord[];
26
+ confidence: number | null;
27
+ }
28
+ /**
29
+ * Parse Tesseract TSV output, rejecting malformed rows rather than trusting their coordinates.
30
+ * @param tsv - Bounded external OCR output.
31
+ * @returns Recognized words with normalized confidence and screenshot coordinates.
32
+ */
33
+ export declare function parseOcr(tsv: string): OcrWord[];
34
+ /**
35
+ * Recognize screenshot bytes through a configured host Tesseract installation.
36
+ * Cancellation and deadlines kill the owned process; completion awaits process close before removing its private image.
37
+ * @param config - Explicit OCR installation.
38
+ * @param image - Bounded viewport PNG bytes.
39
+ * @param psm - Tesseract page segmentation mode.
40
+ * @param timeoutMs - Process deadline.
41
+ * @param maxBytes - Maximum collected stdout and stderr bytes.
42
+ * @param signal - Caller and plugin cancellation.
43
+ * @returns Text, words, and mean word confidence; an empty frame has null confidence.
44
+ */
45
+ export declare function recognize(config: OcrConfig, image: Uint8Array, psm: number, timeoutMs: number, maxBytes: number, signal: AbortSignal): Promise<OcrResult>;
46
+ //# sourceMappingURL=ocr.d.ts.map
@@ -0,0 +1,42 @@
1
+ /** Closed authoring requests and their Optix bridge routes. @module dsh-tool-ft-optix/operations */
2
+ import type { ParameterSchemaSpec, ValueSchemaSpec } from '@deepseek-ai/dsh-tools';
3
+ /** One allowlisted mutation; fields use the upstream batch spelling. */
4
+ export interface Operation {
5
+ /** Closed operation name validated at the model JSON boundary. */
6
+ op: string;
7
+ /** JSON fields interpreted only by the selected operation. */
8
+ [key: string]: string | number | boolean;
9
+ }
10
+ /** Authoring schema, HTTP query aliases, and destructive classification. */
11
+ interface OperationSpec {
12
+ route: string;
13
+ fields: ParameterSchemaSpec;
14
+ aliases?: Record<string, string>;
15
+ destructive?: boolean;
16
+ }
17
+ /** Bridge-supported batch operations; unknown fields are rejected before validation or writes. */
18
+ export declare const operations: Record<string, OperationSpec>;
19
+ /** Exact-one operation schema for the native tool registry. */
20
+ export declare const operationSchema: ValueSchemaSpec;
21
+ /**
22
+ * Check cross-field rules not expressible by the schema DSL.
23
+ * @param ops - Schema-validated batch operations.
24
+ */
25
+ export declare function checkOperations(ops: readonly Operation[]): void;
26
+ /**
27
+ * Resolve a batch operation into a bridge route and query parameters.
28
+ * @param op - Validated operation.
29
+ * @returns The closed route and encoded field values.
30
+ */
31
+ export declare function operationRequest(op: Operation): {
32
+ route: string;
33
+ query: Record<string, string>;
34
+ };
35
+ /**
36
+ * Determine whether a batch needs destructive-operation enablement.
37
+ * @param ops - Validated batch.
38
+ * @returns Whether any operation deletes, replaces, moves, reorders, or retypes existing model state.
39
+ */
40
+ export declare function isDestructive(ops: readonly Operation[]): boolean;
41
+ export {};
42
+ //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1,33 @@
1
+ /** Direct Chromium CDP preview without an MCP transport. @module dsh-tool-ft-optix/preview */
2
+ import type { Context } from '@deepseek-ai/cordis';
3
+ import type { OcrConfig } from './ocr.ts';
4
+ /** Validated browser target and preview acquisition limits. */
5
+ export interface PreviewConfig {
6
+ /** Existing Chromium CDP loopback endpoint. */
7
+ cdpUrl: string;
8
+ /** Exact preview origin, pathname, and query identifying an already-open tab. */
9
+ previewUrl: string;
10
+ /** Enable pointer and keyboard input into the explicitly configured preview. */
11
+ allowPreviewInput: boolean;
12
+ /** Connection and browser-operation timeout in milliseconds. */
13
+ requestTimeoutMs: number;
14
+ /** Maximum screenshot encoded bytes or returned text UTF-8 bytes. */
15
+ maxResponseBytes: number;
16
+ /** Maximum screenshot viewport pixel count. */
17
+ maxPreviewPixels: number;
18
+ /** Optional configured host Tesseract installation; null leaves OCR unregistered. */
19
+ ocr: OcrConfig | null;
20
+ }
21
+ /**
22
+ * Resolve a preview URL without permitting remote or credential-bearing targets.
23
+ * @param input - Configured preview URL.
24
+ * @returns The normalized loopback URL.
25
+ */
26
+ export declare function previewTarget(input: string): string;
27
+ /**
28
+ * Register optional direct-CDP preview tools; disposal disconnects owned clients and awaits their completion.
29
+ * @param ctx - Tool context with durable attachments for screenshots.
30
+ * @param config - Explicit browser target and limits.
31
+ */
32
+ export declare function applyPreview(ctx: Context, config: PreviewConfig): void;
33
+ //# sourceMappingURL=preview.d.ts.map
@@ -0,0 +1,18 @@
1
+ /** Immutable user-supplied Optix starters and NetLogic acquisition. @module dsh-tool-ft-optix/templates */
2
+ import type { Context } from '@deepseek-ai/cordis';
3
+ import type { JsonValue } from '@deepseek-ai/dsh-util-values';
4
+ /**
5
+ * Parse the shipped manifest before exposing project file access.
6
+ * @param text - Manifest JSON acquired from the package assets.
7
+ * @returns JSON object containing the file list; rejects invalid manifests.
8
+ */
9
+ export declare function parseTemplateManifest(text: string): Record<string, JsonValue> & {
10
+ files: JsonValue[];
11
+ };
12
+ /**
13
+ * Register access to packaged starters without modifying an existing project.
14
+ * @param ctx - Harness tool runtime context.
15
+ * @param maxBytes - Maximum bytes returned by a file acquisition.
16
+ */
17
+ export declare function applyTemplates(ctx: Context, maxBytes: number): void;
18
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "FactoryTalk Optix",
4
+ "description": "Read, validate, and author Optix Studio projects directly."
5
+ }
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "FactoryTalk Optix",
4
+ "description": "直接读取、验证和编辑 Optix Studio 项目。"
5
+ }
6
+ }
@@ -0,0 +1,260 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "id": "arya-optix-ipc",
4
+ "version": "1.2.0",
5
+ "title": "Arya Optix IPC Project",
6
+ "description": "Ready-to-use industrial-PC starter with StudioMCPBridge and loopback web-emulator support.",
7
+ "target": "industrial-pc",
8
+ "optixStudioVersion": "1.7.4.32-Stable",
9
+ "sourceProjectName": "AryaNewHMIProject_IPC",
10
+ "contentHash": "57cabafdbffc9884e11c5f62f6caed3bd6f8e0a47cd45aa24651172751b9f6d6",
11
+ "bridgeSourceHash": "c8e1d441409e6bc02099ac07452d8c23e4143eb041c2f82fbb67912e4d4decc6",
12
+ "fileCount": 34,
13
+ "totalBytes": 274225,
14
+ "readOnly": true,
15
+ "directories": [
16
+ "ApplicationFiles",
17
+ "Nodes",
18
+ "Nodes/Alarms",
19
+ "Nodes/CommDrivers",
20
+ "Nodes/Converters",
21
+ "Nodes/DataStores",
22
+ "Nodes/Loggers",
23
+ "Nodes/Model",
24
+ "Nodes/MQTT",
25
+ "Nodes/NetLogic",
26
+ "Nodes/OPC-UA",
27
+ "Nodes/Recipes",
28
+ "Nodes/Reports",
29
+ "Nodes/Retentivity",
30
+ "Nodes/Security",
31
+ "Nodes/Security/Groups",
32
+ "Nodes/Security/Roles",
33
+ "Nodes/Security/Users",
34
+ "Nodes/System",
35
+ "Nodes/Translations",
36
+ "Nodes/UI",
37
+ "Nodes/UI/Keyboards",
38
+ "Nodes/UI/Screens",
39
+ "ProjectFiles",
40
+ "ProjectFiles/NetSolution",
41
+ "ProjectFiles/NetSolution/.vscode",
42
+ "ProjectFiles/NetSolution/Private",
43
+ "ProjectFiles/PKI",
44
+ "ProjectFiles/PKI/Issuers",
45
+ "ProjectFiles/PKI/Issuers/Certs",
46
+ "ProjectFiles/PKI/Issuers/Crl",
47
+ "ProjectFiles/PKI/Own",
48
+ "ProjectFiles/PKI/Own/Certs",
49
+ "ProjectFiles/PKI/Own/Crl",
50
+ "ProjectFiles/PKI/Trusted",
51
+ "ProjectFiles/PKI/Trusted/Certs",
52
+ "ProjectFiles/PKI/Trusted/Crl"
53
+ ],
54
+ "files": [
55
+ {
56
+ "path": "AryaNewHMIProject_IPC.optix",
57
+ "size": 1707,
58
+ "sha256": "49673c013dd6dccc4dfec47c60f44067f9e52e91ac55599c656ffb959329d3a6",
59
+ "text": true
60
+ },
61
+ {
62
+ "path": "ProjectFiles/NetSolution/.vscode/launch.json",
63
+ "size": 377,
64
+ "sha256": "9c8b3adcff7e5e47ce5c7c13553b88b8afbc795b686410ea1429bcd133e3c600",
65
+ "text": true
66
+ },
67
+ {
68
+ "path": "ProjectFiles/NetSolution/StudioMCPBridge.cs",
69
+ "size": 242578,
70
+ "sha256": "c8e1d441409e6bc02099ac07452d8c23e4143eb041c2f82fbb67912e4d4decc6",
71
+ "text": true
72
+ },
73
+ {
74
+ "path": "ProjectFiles/NetSolution/AryaNewHMIProject_IPC.sln",
75
+ "size": 1068,
76
+ "sha256": "23ee3567fb17e51ea8e3874deded999ae22482bfba1fc63ce876a136374ebb94",
77
+ "text": true
78
+ },
79
+ {
80
+ "path": "ProjectFiles/NetSolution/AryaNewHMIProject_IPC.references",
81
+ "size": 11323,
82
+ "sha256": "ba4341af8520973ea3f7cb88a001f70e8e14439c2d155ffd5aba6e31479ed9ec",
83
+ "text": true
84
+ },
85
+ {
86
+ "path": "ProjectFiles/NetSolution/AryaNewHMIProject_IPC.csproj",
87
+ "size": 834,
88
+ "sha256": "a208e29c5e15687803748d398179aab32dbd5c27150919bcd05ee10fd055decd",
89
+ "text": true
90
+ },
91
+ {
92
+ "path": "ProjectFiles/NetSolution/AryaNewHMIProject_IPC.code-workspace",
93
+ "size": 114,
94
+ "sha256": "dadc86a4a1f7ec9b79721f4b4af3563949d18364e48ffafd00c0347aec64e986",
95
+ "text": true
96
+ },
97
+ {
98
+ "path": "ProjectFiles/UserDefinedModule.xml",
99
+ "size": 734,
100
+ "sha256": "deae06cab3c96b793faa97b0e1a66ebf7dbdbd57c3d6d5914eb744af079f7e8a",
101
+ "text": true
102
+ },
103
+ {
104
+ "path": "Nodes/UI/Screens/Screens.yaml",
105
+ "size": 44,
106
+ "sha256": "cb5621dd13cdd9efb73422c72f58ad1501557f5ed273b39267dc5e1f269b25b2",
107
+ "text": true
108
+ },
109
+ {
110
+ "path": "Nodes/UI/Keyboards/Keyboards.yaml",
111
+ "size": 48,
112
+ "sha256": "a8a4cb1b56175fab975ca8c38cb4cdea8e620ea7a800d897857ad44cf4499d7b",
113
+ "text": true
114
+ },
115
+ {
116
+ "path": "Nodes/UI/UI.yaml",
117
+ "size": 8078,
118
+ "sha256": "faad08d6a60fbbbc924979f35050e85c5c64a13564630ccb2557469d8e184fee",
119
+ "text": true
120
+ },
121
+ {
122
+ "path": "Nodes/Translations/Translations.yaml",
123
+ "size": 315,
124
+ "sha256": "f79c62c0b7be199275ef09efaed5f0bdd604a708c7f819f17c15f7e74ed5b9f4",
125
+ "text": true
126
+ },
127
+ {
128
+ "path": "Nodes/System/System.yaml",
129
+ "size": 42,
130
+ "sha256": "907b11402c87cc5fdb9c4c58339d56494307e1ccbd8a631725d64d1dde22ccb6",
131
+ "text": true
132
+ },
133
+ {
134
+ "path": "Nodes/Security/Users/Users.yaml",
135
+ "size": 80,
136
+ "sha256": "06806437dd0e025939cdcc0683885692922863b4fcd9dfd4e63cf5cec34635c4",
137
+ "text": true
138
+ },
139
+ {
140
+ "path": "Nodes/Security/Roles/Roles.yaml",
141
+ "size": 80,
142
+ "sha256": "3f11ead6e8dff5a6d66487f68b2fc154c22f31080f8d2cd3c81d774ca57df9d9",
143
+ "text": true
144
+ },
145
+ {
146
+ "path": "Nodes/Security/Groups/Groups.yaml",
147
+ "size": 82,
148
+ "sha256": "ccb40fed3d62eb1f532350876fdfd7397d25dda74f46fb4302c33d8878166e3c",
149
+ "text": true
150
+ },
151
+ {
152
+ "path": "Nodes/Security/Security.yaml",
153
+ "size": 177,
154
+ "sha256": "85f64f04c6c39eb3399dfdf5464d1ee0bfb5fbf2197e1c7305b3c41e04d2114a",
155
+ "text": true
156
+ },
157
+ {
158
+ "path": "Nodes/Retentivity/Retentivity.yaml",
159
+ "size": 1473,
160
+ "sha256": "59264f7f0929d9f60f14f202b6c95215f0322d56732b6562ce84373e32c58601",
161
+ "text": true
162
+ },
163
+ {
164
+ "path": "AryaNewHMIProject_IPC.optix.design",
165
+ "size": 754,
166
+ "sha256": "98b173efd7f670fde03b2eedf43a5b985833b04849be4cdbba0fd114e0ac1559",
167
+ "text": true
168
+ },
169
+ {
170
+ "path": "IDEVersion.txt",
171
+ "size": 15,
172
+ "sha256": "7099783fd2a812af0594ba788ed954f7189fbb4903855eae866e9267e0e0734d",
173
+ "text": true
174
+ },
175
+ {
176
+ "path": "Nodes/AryaNewHMIProject_IPC.yaml",
177
+ "size": 1801,
178
+ "sha256": "0d77e3e20e1058a081da379fd9ede86c7a806107dd2a889d8abdb969facb1d61",
179
+ "text": true
180
+ },
181
+ {
182
+ "path": "Nodes/Alarms/Alarms.yaml",
183
+ "size": 82,
184
+ "sha256": "c6f3fe8d0f126af36bd79cdd0ea5069c87ec1bff3f1d4d5c4a7b9f8864a579f9",
185
+ "text": true
186
+ },
187
+ {
188
+ "path": "Nodes/CommDrivers/CommDrivers.yaml",
189
+ "size": 52,
190
+ "sha256": "9641581a4c8a3eabbbb6471c7e38cbcf50ac8aeba65e8ba492b1d59be8521d3a",
191
+ "text": true
192
+ },
193
+ {
194
+ "path": "Nodes/Converters/Converters.yaml",
195
+ "size": 50,
196
+ "sha256": "cba8b3baee310a508f1373d3ff10cbb0cd1c216b3fcdbb1f930f489b38985b2e",
197
+ "text": true
198
+ },
199
+ {
200
+ "path": "ProjectFiles/NetSolution/Private/TypeConstants.cs",
201
+ "size": 691,
202
+ "sha256": "3d6cca182c7a9df4ad98009f9664a9d86be1b6e0096be520270315ac812cb3b4",
203
+ "text": true
204
+ },
205
+ {
206
+ "path": "Nodes/DataStores/DataStores.yaml",
207
+ "size": 50,
208
+ "sha256": "fc01692c1cf1567bf09dad3143b4c572fdd81d498bf9c344c3b8fea64750eb56",
209
+ "text": true
210
+ },
211
+ {
212
+ "path": "Nodes/Model/Model.yaml",
213
+ "size": 40,
214
+ "sha256": "b5ccba96c15748c8c3089187132c483542c7a3fdd4c62b1004432ec158454711",
215
+ "text": true
216
+ },
217
+ {
218
+ "path": "Nodes/MQTT/MQTT.yaml",
219
+ "size": 38,
220
+ "sha256": "70bde6fab5c88f77ec1c265a0412874c8c016385d4f45cde0262df0ba31bcff2",
221
+ "text": true
222
+ },
223
+ {
224
+ "path": "Nodes/NetLogic/NetLogic.yaml",
225
+ "size": 996,
226
+ "sha256": "603799e9895c37f120ef3acc56515cba1c79604886f5b6da85c17f20a7f2cdc8",
227
+ "text": true
228
+ },
229
+ {
230
+ "path": "Nodes/OPC-UA/OPC-UA.yaml",
231
+ "size": 43,
232
+ "sha256": "ac1bf577c15d8172ed21b10d83e034a6954a96d8c41963056e1a5ff8acac3149",
233
+ "text": true
234
+ },
235
+ {
236
+ "path": "Nodes/Recipes/Recipes.yaml",
237
+ "size": 44,
238
+ "sha256": "591178462a3154796ce1a15d1b0c8f12010b6709952481cae5f5406095495e89",
239
+ "text": true
240
+ },
241
+ {
242
+ "path": "Nodes/Reports/Reports.yaml",
243
+ "size": 44,
244
+ "sha256": "1ec3965861a2368f9552b3c7b899341f3f874320725f7a63be855d5aa26b892e",
245
+ "text": true
246
+ },
247
+ {
248
+ "path": "Nodes/Loggers/Loggers.yaml",
249
+ "size": 44,
250
+ "sha256": "61629d78ec411d8896a32cc036545749cf34386e1d4e045aa5b2bd61c905ccb6",
251
+ "text": true
252
+ },
253
+ {
254
+ "path": "ProjectFiles/NetSolution/Private/UITypeDefinitions.cs",
255
+ "size": 327,
256
+ "sha256": "9dde0be68063caa2ab2ede670b0f95d3166f5ad08fba1f034d3b335a8ed927e6",
257
+ "text": true
258
+ }
259
+ ]
260
+ }
@@ -0,0 +1,81 @@
1
+ Project:
2
+ Name: AryaNewHMIProject_IPC
3
+ GUID: 46175f0168fa001e37673b205e50e6cd
4
+ ProjectNamespaceIndex: 7
5
+ DisplayName: ''
6
+ Description: ''
7
+ Company: ''
8
+ Copyright: ''
9
+ FormatVersion: 1
10
+ ProductVersion: 1.7
11
+ CoreVersion: 5.0
12
+ Dependencies:
13
+ 2:
14
+ Uri: 'urn:FTOptix:CoreBase'
15
+ Module: FTOptix.CoreBase
16
+ Version: 6.1
17
+ 3:
18
+ Uri: 'urn:FTOptix:UI'
19
+ Module: FTOptix.UI
20
+ Version: 21.2
21
+ 4:
22
+ Uri: 'urn:FTOptix:HMIProject'
23
+ Module: FTOptix.HMIProject
24
+ Version: 9.0
25
+ 5:
26
+ Uri: 'urn:FTOptix:NativeUI'
27
+ Module: FTOptix.NativeUI
28
+ Version: 3.3
29
+ 6:
30
+ Uri: 'urn:FTOptix:Retentivity'
31
+ Module: FTOptix.Retentivity
32
+ Version: 1.0
33
+ 8:
34
+ Uri: 'urn:FTOptix:Core:Net'
35
+ Module: FTOptix.Core.Net
36
+ Version: 3.0
37
+ 9:
38
+ Uri: 'urn:FTOptix:CoreBase:Net'
39
+ Module: FTOptix.CoreBase.Net
40
+ Version: 2.1
41
+ 10:
42
+ Uri: 'urn:FTOptix:UI:Net'
43
+ Module: FTOptix.UI.Net
44
+ Version: 21.2
45
+ 11:
46
+ Uri: 'urn:FTOptix:Retentivity:Net'
47
+ Module: FTOptix.Retentivity.Net
48
+ Version: 1.0
49
+ 12:
50
+ Uri: 'urn:FTOptix:HMIProject:Net'
51
+ Module: FTOptix.HMIProject.Net
52
+ Version: 5.0
53
+ 13:
54
+ Uri: 'urn:FTOptix:NativeUI:Net'
55
+ Module: FTOptix.NativeUI.Net
56
+ Version: 3.3
57
+ 14:
58
+ Uri: 'urn:FTOptix:NetLogic'
59
+ Module: FTOptix.NetLogic
60
+ Version: 4.0
61
+ 15:
62
+ Uri: 'urn:FTOptix:WebUI'
63
+ Module: FTOptix.WebUI
64
+ Version: 2.0
65
+ 16:
66
+ Uri: 'urn:FTOptix:WebUI:Net'
67
+ Module: FTOptix.WebUI.Net
68
+ Version: 2.0
69
+ Statistics:
70
+ TotalNodeCount: 146
71
+ Objects: 76
72
+ ObjectTypes: 1
73
+ Variables: 65
74
+ VariableTypes: 0
75
+ DataTypes: 0
76
+ Methods: 4
77
+ References: 0
78
+ ReferenceTypes: 0
79
+ Files: 22
80
+ Nodes:
81
+ - File: Nodes/AryaNewHMIProject_IPC.yaml
@@ -0,0 +1,38 @@
1
+ Project:
2
+ Name: AryaNewHMIProject_IPC_Design
3
+ ProjectNamespaceIndex: 4
4
+ DisplayName: ''
5
+ Description: ''
6
+ Company: ''
7
+ Copyright: ''
8
+ FormatVersion: 1
9
+ ProductVersion: 1.7
10
+ CoreVersion: 5.0
11
+ Dependencies:
12
+ 2:
13
+ Uri: AryaNewHMIProject_IPC
14
+ RelativePath: AryaNewHMIProject_IPC.optix
15
+ 3:
16
+ Uri: 'urn:FTOptix:CoreBase'
17
+ Module: FTOptix.CoreBase
18
+ Version: 6.1
19
+ 5:
20
+ Uri: 'urn:FTOptix:CoreBase:Net'
21
+ Module: FTOptix.CoreBase.Net
22
+ Version: 2.1
23
+ 6:
24
+ Uri: 'urn:FTOptix:NetLogic'
25
+ Module: FTOptix.NetLogic
26
+ Version: 4.0
27
+ Statistics:
28
+ TotalNodeCount: 0
29
+ Objects: 0
30
+ ObjectTypes: 0
31
+ Variables: 0
32
+ VariableTypes: 0
33
+ DataTypes: 0
34
+ Methods: 0
35
+ References: 0
36
+ ReferenceTypes: 0
37
+ Files: 0
38
+ Nodes: []
@@ -0,0 +1,3 @@
1
+ Name: Alarms
2
+ Id: g=3293e7cd8de0bb06cc725e017a984470
3
+ Type: AlarmsCategoryFolder