Joseph Doherty
ab5d0752d8
fix(scripted-alarms): atomic alarm-condition lookup under Lock (T15 review)
2026-06-10 19:45:24 -04:00
Joseph Doherty
4eb1d65e2b
feat(scripted-alarms): richer AlarmConditionState bridge to the OPC UA node (T15)
2026-06-10 19:41:16 -04:00
Joseph Doherty
b31d7cb03f
fix(scripted-alarms): lock CreateVariable + RemoveRootNotifier on rebuild (T14 review)
2026-06-10 19:26:01 -04:00
Joseph Doherty
60d48a2a0a
feat(scripted-alarms): materialise real Part 9 AlarmConditionState nodes (T14)
2026-06-10 19:19:10 -04:00
Joseph Doherty
4217b213b0
docs(scripted-alarms): F14b OPC UA Part 9 SDK research notes (T13)
2026-06-10 18:19:52 -04:00
Joseph Doherty
a8640a9331
test(scripted-alarms): cover bootstrap-restore path forwarding alarms (T10 review)
2026-06-10 15:24:39 -04:00
Joseph Doherty
fc0d43a3dc
refactor(scripted-alarms): retire orphaned ScriptedAlarmActor + F9b evaluator (T11)
2026-06-10 15:22:26 -04:00
Joseph Doherty
5256761368
feat(scripted-alarms): spawn + apply ScriptedAlarmHostActor in DriverHostActor (T10)
2026-06-10 15:17:29 -04:00
Joseph Doherty
dafaf2faec
fix(scripted-alarms): ScriptedAlarmHostActor review fixes — load-gen guard, quiet cancel, parse guard (T9 review)
2026-06-10 15:08:54 -04:00
Joseph Doherty
3b418a54f1
feat(scripted-alarms): ScriptedAlarmHostActor — engine runtime host (T9)
2026-06-10 14:57:42 -04:00
Joseph Doherty
c9590c03d0
fix(scripted-alarms): harden artifact boolean decode + direct helper tests (T6 review)
...
Default HistorizeToAveva/Retain/Enabled to the entity defaults (true) when a
field is absent/null/non-boolean so a partial blob decodes identically to the
composer's view of a default-constructed ScriptedAlarm (byte-parity), and only
call GetBoolean for a genuine true/false token. Add direct ExtractAlarmDependencyRefs
unit tests (overlap dedup + reserved {{equip}} exclusion).
2026-06-10 14:47:24 -04:00
Joseph Doherty
8e8ca9efe8
feat(scripted-alarms): DeploymentArtifact byte-parity for the alarm plan (T6)
2026-06-10 14:41:46 -04:00
Joseph Doherty
55101baaa4
refactor(scripted-alarms): review-fix polish for T5/T7/T8 (observer isolation, warning hoist, doc)
2026-06-10 14:32:49 -04:00
Joseph Doherty
b28c6bdb62
feat(scripted-alarms): EquipmentScriptedAlarmPlan + Phase7Composer enrichment (T5)
2026-06-10 14:21:28 -04:00
Joseph Doherty
1c96fe0be0
feat(scripted-alarms): EfAlarmConditionStateStore (T8)
2026-06-10 14:21:19 -04:00
Joseph Doherty
945ccd0b85
feat(scripted-alarms): DependencyMuxTagUpstreamSource (T7)
...
Concrete ITagUpstreamSource the scripted-alarm host actor pushes
DependencyValueChanged values into and ScriptedAlarmEngine reads/subscribes
from. Thread-safe: ConcurrentDictionary value cache + per-path ImmutableList
observer lists with atomic add/remove and capture-then-invoke fan-out.
ReadTag of an unknown path returns a Bad-quality (0x80000000) snapshot stamped
via the injected clock. Adds the Core.ScriptedAlarms project reference Runtime
needs to see the interface.
2026-06-10 14:20:02 -04:00
Joseph Doherty
b5748288df
test(scriptlog): prove bridge→broadcaster delivery off the script-logs DPS topic
...
Composes the one Layer-0 hop existing tests left uncovered together:
ScriptLogSignalRBridge subscribing to the script-logs DPS topic and
fanning a ScriptLogEntry out to the IInProcessBroadcaster<ScriptLogEntry>
singleton resolved from the SAME DI container the /script-log page injects.
Mirrors DriverStatusHubE2eTests. Confirms the server-side topic→page chain
delivers end-to-end (only the live Blazor circuit remains manual).
2026-06-10 13:53:34 -04:00
Joseph Doherty
c42a056537
chore(plan): Layer 0 complete (T0-T3) — tracking update
2026-06-10 12:09:56 -04:00
Joseph Doherty
788bb68d1d
fix(scripting): companion sink falls back to ScriptId for the main-log mirror (T3 review)
2026-06-10 12:08:29 -04:00
Joseph Doherty
bd2dd05a0c
feat(scripting): evaluators log through root script logger → script-log page (F8)
2026-06-10 12:03:51 -04:00
Joseph Doherty
bf86b3def6
fix(scripting): explicit companion logger + disposable ScriptRootLogger (T2 review)
2026-06-10 11:56:51 -04:00
Joseph Doherty
73014258ef
feat(scripting): root script logger + DPS publisher wired in Host
2026-06-10 11:50:50 -04:00
Joseph Doherty
14fe88fc80
feat(scripting): ScriptLogTopicSink — script LogEvent → ScriptLogEntry → publisher
2026-06-10 11:38:54 -04:00
Joseph Doherty
12423899aa
docs(plan): script-log emit + scripted-alarm runtime implementation plan + tasks
2026-06-10 11:34:01 -04:00
Joseph Doherty
df4c265753
docs(design): script-log engine emit + scripted-alarm runtime (3-layer)
2026-06-10 11:28:13 -04:00
Joseph Doherty
ac1e1dfd12
fix(adminui): auto-generate ScriptId (SC-…) + drop the Language picker on ScriptEdit
...
v2-ci / build (push) Failing after 39s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
ScriptId is now system-generated on create (mirrors EquipmentId's EQ-{12 hex}
convention, never operator-supplied) and shown read-only when editing. Language
is always CSharp, so the single-option dropdown is removed entirely and set on
save.
2026-06-10 09:07:38 -04:00
Joseph Doherty
27c34a556a
docs(scripting): document {{equip}} equipment-relative tag paths
2026-06-10 08:14:25 -04:00
Joseph Doherty
6c23a6763a
test(adminui): DB-backed tests for ScriptTagCatalog.GetEquipmentRelativeLeavesAsync
2026-06-10 08:12:52 -04:00
Joseph Doherty
a7c1d7f7cb
test(adminui): cover divergent-prefix {{equip}} rejection; use EquipToken constant in message
2026-06-10 08:08:13 -04:00
Joseph Doherty
c7041a24e7
feat(adminui): {{equip}}-aware hover + {{equip}}. leaf completion in the script editor
2026-06-10 08:04:51 -04:00
Joseph Doherty
cadd6c60b7
feat(adminui): reject {{equip}} virtual tags whose equipment has no derivable base
2026-06-10 07:58:38 -04:00
Joseph Doherty
66ea9c56f6
feat(runtime): DeploymentArtifact substitutes {{equip}} (parity with composer)
2026-06-10 07:53:20 -04:00
Joseph Doherty
a4b36c54ba
feat(opcuaserver): Phase7Composer substitutes {{equip}} per equipment
2026-06-10 07:49:28 -04:00
Joseph Doherty
f431504825
feat(commons): EquipmentScriptPaths — derive base + {{equip}} substitution + shared dep extraction
2026-06-10 07:42:14 -04:00
Joseph Doherty
26bccd82e0
test(commons): scaffold Commons.Tests project
2026-06-10 07:38:57 -04:00
Joseph Doherty
084c8a28e7
docs(scripting): implementation plan for equipment-relative tag paths ({{equip}})
2026-06-10 07:36:59 -04:00
Joseph Doherty
5044664379
docs(scripting): design for equipment-relative tag paths ({{equip}})
...
Approved brainstorm: a reserved {{equip}} token in ctx.GetTag/SetVirtualTag
path literals is substituted at the compose seams with the owning equipment's
tag base prefix (derived from child-tag FullNames). Lets one virtual-tag script
be reused across machines. No schema migration, runtime untouched.
2026-06-10 07:27:44 -04:00
Joseph Doherty
142635b402
feat(adminui): tag-path hover (tag kind/type/driver inside ctx.GetTag literals)
v2-ci / build (push) Failing after 47s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-10 05:48:02 -04:00
Joseph Doherty
688a003d1d
fix(adminui): tag-path completion replaces the whole dotted path, not just the last segment
...
v2-ci / build (push) Failing after 43s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
Monaco's word definition splits on '.', so accepting a full tag path while a
partial path was typed (e.g. "X.Protected") duplicated the prefix
(-> "X.X.ProtectedValue"). Tag-path items now replace the whole literal
content from the opening quote to the caret.
2026-06-09 17:06:55 -04:00
Joseph Doherty
da80195599
fix(adminui): render Monaco overflow widgets in a body-level node
...
v2-ci / build (push) Failing after 40s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
The suggest/hover popups were offset far from the caret because the theme's
.rise entrance animation leaves a CSS transform on an ancestor, which becomes
the containing block for the position:fixed overflow widgets. Render them in a
body-level overflowWidgetsDomNode so they stay viewport-correct at the caret.
2026-06-09 17:01:18 -04:00
Joseph Doherty
5c3aa4d211
Merge feat/monaco-script-editor: Roslyn-backed Monaco script editor
...
v2-ci / build (push) Failing after 41s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
Reusable MonacoEditor component (vendored Monaco, air-gap safe) + full
IntelliSense backend (AdminUI/ScriptAnalysis): completions, errors-only
diagnostics, hover, signature help, format, and tag-path completion, all
re-seated on the real evaluator wrapper so the editor matches the runtime.
Wired into the ScriptEdit page and the virtual-tag modal's inline script
panel. 343/343 tests; live-verified in docker-dev.
2026-06-09 15:55:48 -04:00
Joseph Doherty
8aec438cc5
chore(plan): mark Monaco script-editor plan complete (all 14 tasks)
2026-06-09 15:52:57 -04:00
Joseph Doherty
4d12088fa2
docs(scripting): Monaco script-editor guide + refresh Scripts page banner
2026-06-09 15:50:49 -04:00
Joseph Doherty
72fcde5b44
fix(adminui): auto-suggest tag paths inside string literals (quickSuggestions.strings)
2026-06-09 15:46:30 -04:00
Joseph Doherty
9444348c0d
fix(adminui): forward insertTextRules + correct Monaco completion-kind icons
2026-06-09 15:31:16 -04:00
Joseph Doherty
fc7dc3b57d
feat(adminui): inline script-source editor in the virtual-tag modal
2026-06-09 15:23:35 -04:00
Joseph Doherty
088fc50ef2
feat(adminui): ScriptEdit uses MonacoEditor; drop CDN loader
2026-06-09 15:11:13 -04:00
Joseph Doherty
071bed5f94
feat(adminui): wire Monaco language providers to /api/script-analysis
2026-06-09 15:09:06 -04:00
Joseph Doherty
4a2f7e37e5
feat(adminui): script document formatting (NormalizeWhitespace)
2026-06-09 15:06:40 -04:00
Joseph Doherty
9104b6c614
feat(adminui): script hover + signature help
2026-06-09 15:03:40 -04:00