@agenticros/core 0.8.4 → 0.8.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.
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @agenticros/core — Platform-agnostic ROS2 transport, config, and utilities.
3
3
  */
4
- export type { AgenticROSConfig, RobotTransportOverride } from "./config.js";
5
- export { AgenticROSConfigSchema, parseConfig, prepareConfigForPersistence, getTransportConfig, } from "./config.js";
4
+ export type { AgenticROSConfig, RobotTransportOverride, RobotSafetyOverlay, WorkspaceLimits } from "./config.js";
5
+ export { AgenticROSConfigSchema, parseConfig, prepareConfigForPersistence, getTransportConfig, WorkspaceLimitsSchema, RobotSafetyOverlaySchema, } from "./config.js";
6
6
  export { FEATURE_VOCABULARY, FEATURE_VOCABULARY_SET, BINDING_KEYS, BINDING_KEYS_SET, FEATURE_REQUIRED_BINDING, PROFILE_SCHEMA_ID, RobotProfileSchema, isKnownFeature, isKnownBindingKey, unknownFeatures, unknownBindingKeys, featuresMissingBindings, resolveRobotProfile, featuresFromDeprecatedSensors, featuresSatisfied, missingFeatures, resolveBinding, inferProfileDraft, } from "./robot-profile.js";
7
7
  export type { FeatureName, BindingKey, RobotProfile, ProfileRobot, InferProfileOptions } from "./robot-profile.js";
8
8
  export { createTransport } from "./transport/factory.js";
@@ -10,6 +10,8 @@ export type { RosTransport } from "./transport/transport.js";
10
10
  export type { ConnectionStatus, ConnectionHandler, Subscription, PublishOptions, AdvertiseOptions, SubscribeOptions, ServiceCallOptions, ServiceCallResult, ActionGoalOptions, ActionResult, TopicInfo, ServiceInfo, ActionInfo, MessageHandler, TransportConfig, } from "./transport/types.js";
11
11
  export { toNamespacedTopic, toNamespacedTopicFull, toTeleopCameraTopicShort, resolveCameraSubscribeTopic, } from "./topic-utils.js";
12
12
  export { applyCmdVelTwistSignConvention } from "./cmd-vel-twist.js";
13
+ export { TWIST_MSG_TYPE, ZERO_TWIST, resolveSafetyForRobot, isTwistMessage, checkTwistMessage, clampTwistToLimits, checkWorkspacePosition, extractWorkspacePositions, checkWorkspacePayload, checkPublishSafety, checkActionGoalSafety, checkInputsWorkspace, robotHasMobileBase, publishStopForBases, attachDisconnectFailSafe, checkLiveBindings, } from "./safety.js";
14
+ export type { SafetyLimits, SafetyCheckResult, TwistComponents, LiveBindingCheck, LiveCheckSeverity, LiveGraphSnapshot, } from "./safety.js";
13
15
  export { isCdrTypeSupported } from "./transport/zenoh/cdr.js";
14
16
  export { renderAgenticROSBanner, agenticROSBannerLines, type AgenticROSBannerOptions, } from "./banner.js";
15
17
  export { createMemory, resolveMemoryNamespace } from "./memory/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * @agenticros/core — Platform-agnostic ROS2 transport, config, and utilities.
3
3
  */
4
- export { AgenticROSConfigSchema, parseConfig, prepareConfigForPersistence, getTransportConfig, } from "./config.js";
4
+ export { AgenticROSConfigSchema, parseConfig, prepareConfigForPersistence, getTransportConfig, WorkspaceLimitsSchema, RobotSafetyOverlaySchema, } from "./config.js";
5
5
  export { FEATURE_VOCABULARY, FEATURE_VOCABULARY_SET, BINDING_KEYS, BINDING_KEYS_SET, FEATURE_REQUIRED_BINDING, PROFILE_SCHEMA_ID, RobotProfileSchema, isKnownFeature, isKnownBindingKey, unknownFeatures, unknownBindingKeys, featuresMissingBindings, resolveRobotProfile, featuresFromDeprecatedSensors, featuresSatisfied, missingFeatures, resolveBinding, inferProfileDraft, } from "./robot-profile.js";
6
6
  export { createTransport } from "./transport/factory.js";
7
7
  export { toNamespacedTopic, toNamespacedTopicFull, toTeleopCameraTopicShort, resolveCameraSubscribeTopic, } from "./topic-utils.js";
8
8
  export { applyCmdVelTwistSignConvention } from "./cmd-vel-twist.js";
9
+ export { TWIST_MSG_TYPE, ZERO_TWIST, resolveSafetyForRobot, isTwistMessage, checkTwistMessage, clampTwistToLimits, checkWorkspacePosition, extractWorkspacePositions, checkWorkspacePayload, checkPublishSafety, checkActionGoalSafety, checkInputsWorkspace, robotHasMobileBase, publishStopForBases, attachDisconnectFailSafe, checkLiveBindings, } from "./safety.js";
9
10
  export { isCdrTypeSupported } from "./transport/zenoh/cdr.js";
10
11
  export { renderAgenticROSBanner, agenticROSBannerLines, } from "./banner.js";
11
12
  export { createMemory, resolveMemoryNamespace } from "./memory/index.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/robots.d.ts CHANGED
@@ -21,7 +21,7 @@
21
21
  * mental model keep working unchanged. The synthesised entry is marked
22
22
  * default so it's selected by `getActiveRobotId()`.
23
23
  */
24
- import type { AgenticROSConfig } from "./config.js";
24
+ import type { AgenticROSConfig, RobotSafetyOverlay } from "./config.js";
25
25
  import type { TransportConfig } from "./transport/types.js";
26
26
  import type { RobotProfile } from "./robot-profile.js";
27
27
  /** Sensor/hardware tags on a robot (Phase 1.e). */
@@ -63,6 +63,11 @@ export interface ResolvedRobot {
63
63
  * — callers must not invent one; verb filtering is skipped.
64
64
  */
65
65
  profile?: RobotProfile;
66
+ /**
67
+ * Optional per-robot safety overlay. Undefined → inherit gateway
68
+ * `config.safety` via `resolveSafetyForRobot`.
69
+ */
70
+ safety?: RobotSafetyOverlay;
66
71
  /**
67
72
  * Source tag — handy for diagnostics ("Why is this robot in the list?").
68
73
  * - "config": from config.robots[]
@@ -1 +1 @@
1
- {"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../src/robots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,6BAA6B;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,+DAA+D;AAC/D,MAAM,WAAW,aAAa;IAC5B,+EAA+E;IAC/E,EAAE,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,OAAO,EAAE,YAAY,CAAC;IACtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;OAIG;IACH,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC7B;AAiBD,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,EAAE,CAwCpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAUpF;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,aAAa,CAIf;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAiBtF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,eAAe,CAuCjB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAUT"}
1
+ {"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../src/robots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,6BAA6B;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,+DAA+D;AAC/D,MAAM,WAAW,aAAa;IAC5B,+EAA+E;IAC/E,EAAE,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,OAAO,EAAE,YAAY,CAAC;IACtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B;;;;OAIG;IACH,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC7B;AAiBD,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,EAAE,CAyCpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAUpF;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,aAAa,CAIf;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAiBtF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,eAAe,CAuCjB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAUT"}
package/dist/robots.js CHANGED
@@ -52,6 +52,7 @@ export function listRobots(config) {
52
52
  sensors: { ...DEFAULT_SENSORS, ...(r.sensors ?? {}) },
53
53
  capabilities: r.capabilities,
54
54
  profile: r.profile,
55
+ safety: r.safety,
55
56
  source: "config",
56
57
  }));
57
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"robots.js","sourceRoot":"","sources":["../src/robots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAmDvD;;;;;;;GAOG;AACH,kDAAkD;AAClD,MAAM,eAAe,GAAiB;IACpC,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,KAAK;CACf,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,MAAwB;IACjD,uEAAuE;IACvE,iDAAiD;IACjD,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,OAAO;YACvB,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;YAC5B,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;YAChC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK;YACrB,OAAO,EAAE,EAAE,GAAG,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;YACrD,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,QAAiB;SAC1B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,gEAAgE;IAChE,+DAA+D;IAC/D,oEAAoE;IACpE,iEAAiE;IACjE,4DAA4D;IAC5D,oEAAoE;IACpE,6DAA6D;IAC7D,YAAY;IACZ,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IACpF,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;IACnD,OAAO;QACL;YACE,EAAE;YACF,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,OAAO;YAC5B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;YACjC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;YACrC,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,EAAE,GAAG,eAAe,EAAE;YAC/B,MAAM,EAAE,QAAQ;SACjB;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAwB,EAAE,QAAiB;IAC1E,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IACzD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAwB,EACxB,IAA6B;IAE7B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,OAAO,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,MAAwB,EAAE,OAAgB;IACrE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,+CAA+C,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,iBAAiB,KAAK,IAAI,QAAQ,qCAAqC,CAAC,CAAC;IACvH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAwB,EACxB,OAAgB;IAEhB,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE7D,wEAAwE;IACxE,qEAAqE;IACrE,4DAA4D;IAC5D,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS;QAAE,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE9D,iEAAiE;IACjE,kEAAkE;IAClE,qEAAqE;IACrE,wDAAwD;IACxD,sCAAsC;IACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC;IAC/B,MAAM,SAAS,GAAqB;QAClC,GAAG,MAAM;QACT,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;QAClC,SAAS,EACP,QAAQ,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,SAAS;YACjD,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE;YAChD,CAAC,CAAC,MAAM,CAAC,SAAS;QACtB,KAAK,EACH,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,KAAK;YACzC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE;YACxC,CAAC,CAAC,MAAM,CAAC,KAAK;QAClB,KAAK,EACH,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,KAAK;YACzC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE;YACxC,CAAC,CAAC,MAAM,CAAC,KAAK;QAClB,MAAM,EACJ,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM;YAC3C,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE;YAC1C,CAAC,CAAC,MAAM,CAAC,MAAM;KACpB,CAAC;IACF,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAwB,EACxB,OAAgB;IAEhB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"robots.js","sourceRoot":"","sources":["../src/robots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAwDvD;;;;;;;GAOG;AACH,kDAAkD;AAClD,MAAM,eAAe,GAAiB;IACpC,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,KAAK;CACf,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,MAAwB;IACjD,uEAAuE;IACvE,iDAAiD;IACjD,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,OAAO;YACvB,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;YAC5B,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;YAChC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK;YACrB,OAAO,EAAE,EAAE,GAAG,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;YACrD,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,QAAiB;SAC1B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,gEAAgE;IAChE,+DAA+D;IAC/D,oEAAoE;IACpE,iEAAiE;IACjE,4DAA4D;IAC5D,oEAAoE;IACpE,6DAA6D;IAC7D,YAAY;IACZ,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IACpF,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;IACnD,OAAO;QACL;YACE,EAAE;YACF,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,OAAO;YAC5B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;YACjC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;YACrC,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,EAAE,GAAG,eAAe,EAAE;YAC/B,MAAM,EAAE,QAAQ;SACjB;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAwB,EAAE,QAAiB;IAC1E,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IACzD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAwB,EACxB,IAA6B;IAE7B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,OAAO,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,MAAwB,EAAE,OAAgB;IACrE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,+CAA+C,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,iBAAiB,KAAK,IAAI,QAAQ,qCAAqC,CAAC,CAAC;IACvH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAwB,EACxB,OAAgB;IAEhB,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE7D,wEAAwE;IACxE,qEAAqE;IACrE,4DAA4D;IAC5D,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS;QAAE,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE9D,iEAAiE;IACjE,kEAAkE;IAClE,qEAAqE;IACrE,wDAAwD;IACxD,sCAAsC;IACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC;IAC/B,MAAM,SAAS,GAAqB;QAClC,GAAG,MAAM;QACT,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;QAClC,SAAS,EACP,QAAQ,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,SAAS;YACjD,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE;YAChD,CAAC,CAAC,MAAM,CAAC,SAAS;QACtB,KAAK,EACH,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,KAAK;YACzC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE;YACxC,CAAC,CAAC,MAAM,CAAC,KAAK;QAClB,KAAK,EACH,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,KAAK;YACzC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE;YACxC,CAAC,CAAC,MAAM,CAAC,KAAK;QAClB,MAAM,EACJ,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM;YAC3C,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE;YAC1C,CAAC,CAAC,MAAM,CAAC,MAAM;KACpB,CAAC;IACF,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAwB,EACxB,OAAgB;IAEhB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Shared safety gates: per-robot velocity limits, optional workspace
3
+ * geofence, and fail-safe zero-Twist on transport loss.
4
+ *
5
+ * Adapters (MCP, OpenClaw, Gemini, teleop, skills) must call these
6
+ * helpers rather than reading `config.safety` directly so a mixed
7
+ * fleet does not share one clamp.
8
+ */
9
+ import type { AgenticROSConfig, RobotSafetyOverlay, WorkspaceLimits } from "./config.js";
10
+ import type { ProfileRobot } from "./robot-profile.js";
11
+ import type { RosTransport } from "./transport/transport.js";
12
+ export declare const TWIST_MSG_TYPE = "geometry_msgs/msg/Twist";
13
+ export declare const ZERO_TWIST: {
14
+ linear: {
15
+ x: number;
16
+ y: number;
17
+ z: number;
18
+ };
19
+ angular: {
20
+ x: number;
21
+ y: number;
22
+ z: number;
23
+ };
24
+ };
25
+ export interface SafetyLimits {
26
+ maxLinearVelocity: number;
27
+ maxAngularVelocity: number;
28
+ workspaceLimits?: WorkspaceLimits;
29
+ }
30
+ export interface SafetyCheckResult {
31
+ block: boolean;
32
+ blockReason?: string;
33
+ }
34
+ export interface TwistComponents {
35
+ linear: {
36
+ x: number;
37
+ y: number;
38
+ z: number;
39
+ };
40
+ angular: {
41
+ x: number;
42
+ y: number;
43
+ z: number;
44
+ };
45
+ }
46
+ /**
47
+ * Resolve velocity + workspace limits for a robot. Robot overlay fields
48
+ * win; unset fields inherit the gateway `config.safety` defaults.
49
+ */
50
+ export declare function resolveSafetyForRobot(config: AgenticROSConfig, robot?: {
51
+ safety?: RobotSafetyOverlay;
52
+ } | null): SafetyLimits;
53
+ /** True when the payload looks like geometry_msgs/Twist. */
54
+ export declare function isTwistMessage(msg: unknown): boolean;
55
+ export declare function checkTwistMessage(limits: SafetyLimits, msg: unknown): SafetyCheckResult;
56
+ /** Scale a Twist down to the velocity ceilings (teleop / skills). */
57
+ export declare function clampTwistToLimits(limits: SafetyLimits, linearX: number, linearY: number, linearZ: number, angularX: number, angularY: number, angularZ: number): TwistComponents;
58
+ export declare function checkWorkspacePosition(limits: SafetyLimits, x: number, y: number): SafetyCheckResult;
59
+ /**
60
+ * Pull map-frame (x, y) pairs from Twist-unrelated nav payloads:
61
+ * `{x,y}`, Pose, PoseStamped, NavigateToPose goal, NavigateThroughPoses.
62
+ */
63
+ export declare function extractWorkspacePositions(payload: unknown): Array<{
64
+ x: number;
65
+ y: number;
66
+ }>;
67
+ export declare function checkWorkspacePayload(limits: SafetyLimits, payload: unknown): SafetyCheckResult;
68
+ export declare function checkPublishSafety(config: AgenticROSConfig, params: Record<string, unknown>, robot?: {
69
+ safety?: RobotSafetyOverlay;
70
+ } | null): SafetyCheckResult;
71
+ export declare function checkActionGoalSafety(config: AgenticROSConfig, params: Record<string, unknown>, robot?: {
72
+ safety?: RobotSafetyOverlay;
73
+ } | null): SafetyCheckResult;
74
+ export declare function checkInputsWorkspace(config: AgenticROSConfig, inputs: Record<string, unknown>, robot?: {
75
+ safety?: RobotSafetyOverlay;
76
+ } | null): SafetyCheckResult;
77
+ /**
78
+ * A body that accepts Twist. Profile `base` wins; with no profile,
79
+ * anything except an arm-only cell is treated as having a base
80
+ * (legacy configs default kind to "amr").
81
+ */
82
+ export declare function robotHasMobileBase(robot: ProfileRobot): boolean;
83
+ /** Best-effort zero Twist on every mobile-base robot sharing this transport. */
84
+ export declare function publishStopForBases(transport: RosTransport, robots: readonly ProfileRobot[]): Promise<void>;
85
+ /**
86
+ * Publish zero Twist when the transport drops (and again on reconnect
87
+ * so a stale last-command cannot resume). Returns an unsubscribe.
88
+ */
89
+ export declare function attachDisconnectFailSafe(transport: RosTransport, robots: readonly ProfileRobot[]): () => void;
90
+ export type LiveCheckSeverity = "green" | "yellow" | "red";
91
+ export interface LiveBindingCheck {
92
+ id: string;
93
+ robotId: string;
94
+ key: string;
95
+ name: string;
96
+ severity: LiveCheckSeverity;
97
+ reason: string;
98
+ }
99
+ export interface LiveGraphSnapshot {
100
+ topics: ReadonlyArray<{
101
+ name: string;
102
+ type?: string;
103
+ }>;
104
+ actions?: ReadonlyArray<{
105
+ name: string;
106
+ type?: string;
107
+ }>;
108
+ }
109
+ /**
110
+ * Compare declared profile bindings against a live topic/action list.
111
+ * Missing declared hardware is red; type mismatch is yellow.
112
+ */
113
+ export declare function checkLiveBindings(robots: ReadonlyArray<ProfileRobot & {
114
+ id: string;
115
+ }>, graph: LiveGraphSnapshot): LiveBindingCheck[];
116
+ //# sourceMappingURL=safety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../src/safety.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,eAAO,MAAM,cAAc,4BAA4B,CAAC;AAExD,eAAO,MAAM,UAAU,EAAE;IACvB,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,OAAO,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAI9C,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,OAAO,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAUD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,KAAK,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAAG,IAAI,GAC7C,YAAY,CAWd;AAYD,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAIpD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,GAAG,iBAAiB,CA2BvF;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,eAAe,CAmBjB;AAYD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAcpG;AAcD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA+B3F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,iBAAiB,CAO/F;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAAG,IAAI,GAC7C,iBAAiB,CAMnB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAAG,IAAI,GAC7C,iBAAiB,CAInB;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAAG,IAAI,GAC7C,iBAAiB,CAEnB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAM/D;AAID,gFAAgF;AAChF,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,MAAM,IAAI,CAeZ;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1D;AA6BD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,CAAC,YAAY,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,EACpD,KAAK,EAAE,iBAAiB,GACvB,gBAAgB,EAAE,CAuEpB"}
package/dist/safety.js ADDED
@@ -0,0 +1,365 @@
1
+ /**
2
+ * Shared safety gates: per-robot velocity limits, optional workspace
3
+ * geofence, and fail-safe zero-Twist on transport loss.
4
+ *
5
+ * Adapters (MCP, OpenClaw, Gemini, teleop, skills) must call these
6
+ * helpers rather than reading `config.safety` directly so a mixed
7
+ * fleet does not share one clamp.
8
+ */
9
+ import { resolveBinding } from "./robot-profile.js";
10
+ export const TWIST_MSG_TYPE = "geometry_msgs/msg/Twist";
11
+ export const ZERO_TWIST = {
12
+ linear: { x: 0, y: 0, z: 0 },
13
+ angular: { x: 0, y: 0, z: 0 },
14
+ };
15
+ const PASS = { block: false };
16
+ function overlayOf(robot) {
17
+ return robot?.safety;
18
+ }
19
+ /**
20
+ * Resolve velocity + workspace limits for a robot. Robot overlay fields
21
+ * win; unset fields inherit the gateway `config.safety` defaults.
22
+ */
23
+ export function resolveSafetyForRobot(config, robot) {
24
+ const gateway = config.safety ?? {
25
+ maxLinearVelocity: 1.0,
26
+ maxAngularVelocity: 1.5,
27
+ };
28
+ const overlay = overlayOf(robot);
29
+ return {
30
+ maxLinearVelocity: overlay?.maxLinearVelocity ?? gateway.maxLinearVelocity ?? 1.0,
31
+ maxAngularVelocity: overlay?.maxAngularVelocity ?? gateway.maxAngularVelocity ?? 1.5,
32
+ workspaceLimits: overlay?.workspaceLimits ?? gateway.workspaceLimits,
33
+ };
34
+ }
35
+ function asRecord(value) {
36
+ if (!value || typeof value !== "object" || Array.isArray(value))
37
+ return undefined;
38
+ return value;
39
+ }
40
+ function num(value, fallback = 0) {
41
+ const n = Number(value);
42
+ return Number.isFinite(n) ? n : fallback;
43
+ }
44
+ /** True when the payload looks like geometry_msgs/Twist. */
45
+ export function isTwistMessage(msg) {
46
+ const rec = asRecord(msg);
47
+ if (!rec)
48
+ return false;
49
+ return asRecord(rec["linear"]) !== undefined || asRecord(rec["angular"]) !== undefined;
50
+ }
51
+ export function checkTwistMessage(limits, msg) {
52
+ if (!isTwistMessage(msg))
53
+ return PASS;
54
+ const rec = asRecord(msg);
55
+ const linear = asRecord(rec["linear"]);
56
+ const angular = asRecord(rec["angular"]);
57
+ if (linear) {
58
+ const speed = Math.sqrt(num(linear["x"]) ** 2 + num(linear["y"]) ** 2 + num(linear["z"]) ** 2);
59
+ if (speed > limits.maxLinearVelocity) {
60
+ return {
61
+ block: true,
62
+ blockReason: `Linear velocity ${speed.toFixed(2)} m/s exceeds safety limit of ${limits.maxLinearVelocity} m/s`,
63
+ };
64
+ }
65
+ }
66
+ if (angular) {
67
+ const rate = Math.abs(num(angular["z"]));
68
+ if (rate > limits.maxAngularVelocity) {
69
+ return {
70
+ block: true,
71
+ blockReason: `Angular velocity ${rate.toFixed(2)} rad/s exceeds safety limit of ${limits.maxAngularVelocity} rad/s`,
72
+ };
73
+ }
74
+ }
75
+ return PASS;
76
+ }
77
+ /** Scale a Twist down to the velocity ceilings (teleop / skills). */
78
+ export function clampTwistToLimits(limits, linearX, linearY, linearZ, angularX, angularY, angularZ) {
79
+ const maxLin = limits.maxLinearVelocity;
80
+ const maxAng = limits.maxAngularVelocity;
81
+ const linMag = Math.sqrt(linearX * linearX + linearY * linearY + linearZ * linearZ);
82
+ const scaleLin = linMag > maxLin && linMag > 0 ? maxLin / linMag : 1;
83
+ const angMag = Math.abs(angularZ);
84
+ const scaleAng = angMag > maxAng && angMag > 0 ? maxAng / angMag : 1;
85
+ return {
86
+ linear: {
87
+ x: linearX * scaleLin,
88
+ y: linearY * scaleLin,
89
+ z: linearZ * scaleLin,
90
+ },
91
+ angular: {
92
+ x: angularX * scaleAng,
93
+ y: angularY * scaleAng,
94
+ z: Math.max(-maxAng, Math.min(maxAng, angularZ)),
95
+ },
96
+ };
97
+ }
98
+ function workspaceMalformed(bounds) {
99
+ if (bounds.xMin > bounds.xMax) {
100
+ return `Malformed workspaceLimits: xMin (${bounds.xMin}) > xMax (${bounds.xMax})`;
101
+ }
102
+ if (bounds.yMin > bounds.yMax) {
103
+ return `Malformed workspaceLimits: yMin (${bounds.yMin}) > yMax (${bounds.yMax})`;
104
+ }
105
+ return undefined;
106
+ }
107
+ export function checkWorkspacePosition(limits, x, y) {
108
+ const bounds = limits.workspaceLimits;
109
+ if (!bounds)
110
+ return PASS;
111
+ const malformed = workspaceMalformed(bounds);
112
+ if (malformed)
113
+ return { block: true, blockReason: malformed };
114
+ if (x < bounds.xMin || x > bounds.xMax || y < bounds.yMin || y > bounds.yMax) {
115
+ return {
116
+ block: true,
117
+ blockReason: `Position (${x.toFixed(2)}, ${y.toFixed(2)}) is outside workspaceLimits ` +
118
+ `[x ${bounds.xMin}..${bounds.xMax}, y ${bounds.yMin}..${bounds.yMax}]`,
119
+ };
120
+ }
121
+ return PASS;
122
+ }
123
+ function pushPosition(out, rec) {
124
+ if (!rec)
125
+ return;
126
+ if ("x" in rec && "y" in rec) {
127
+ out.push({ x: num(rec["x"]), y: num(rec["y"]) });
128
+ return;
129
+ }
130
+ const position = asRecord(rec["position"]);
131
+ if (position && "x" in position && "y" in position) {
132
+ out.push({ x: num(position["x"]), y: num(position["y"]) });
133
+ }
134
+ }
135
+ /**
136
+ * Pull map-frame (x, y) pairs from Twist-unrelated nav payloads:
137
+ * `{x,y}`, Pose, PoseStamped, NavigateToPose goal, NavigateThroughPoses.
138
+ */
139
+ export function extractWorkspacePositions(payload) {
140
+ const out = [];
141
+ const rec = asRecord(payload);
142
+ if (!rec)
143
+ return out;
144
+ if (Array.isArray(rec["poses"])) {
145
+ for (const p of rec["poses"]) {
146
+ out.push(...extractWorkspacePositions(p));
147
+ }
148
+ }
149
+ const nestedGoal = rec["goal"] ?? rec["request"] ?? rec["message"];
150
+ if (nestedGoal && nestedGoal !== payload) {
151
+ out.push(...extractWorkspacePositions(nestedGoal));
152
+ }
153
+ const pose = asRecord(rec["pose"]);
154
+ if (pose) {
155
+ const inner = asRecord(pose["pose"]);
156
+ if (inner) {
157
+ pushPosition(out, inner);
158
+ }
159
+ else {
160
+ pushPosition(out, pose);
161
+ }
162
+ }
163
+ if ("x" in rec && "y" in rec && !asRecord(rec["linear"]) && !asRecord(rec["angular"])) {
164
+ pushPosition(out, rec);
165
+ }
166
+ return out;
167
+ }
168
+ export function checkWorkspacePayload(limits, payload) {
169
+ if (!limits.workspaceLimits)
170
+ return PASS;
171
+ for (const pos of extractWorkspacePositions(payload)) {
172
+ const hit = checkWorkspacePosition(limits, pos.x, pos.y);
173
+ if (hit.block)
174
+ return hit;
175
+ }
176
+ return PASS;
177
+ }
178
+ export function checkPublishSafety(config, params, robot) {
179
+ const limits = resolveSafetyForRobot(config, robot);
180
+ const msg = params["message"];
181
+ const twist = checkTwistMessage(limits, msg);
182
+ if (twist.block)
183
+ return twist;
184
+ return checkWorkspacePayload(limits, msg);
185
+ }
186
+ export function checkActionGoalSafety(config, params, robot) {
187
+ const limits = resolveSafetyForRobot(config, robot);
188
+ const goal = params["goal"] ?? params["args"] ?? params["inputs"] ?? params;
189
+ return checkWorkspacePayload(limits, goal);
190
+ }
191
+ export function checkInputsWorkspace(config, inputs, robot) {
192
+ return checkWorkspacePayload(resolveSafetyForRobot(config, robot), inputs);
193
+ }
194
+ /**
195
+ * A body that accepts Twist. Profile `base` wins; with no profile,
196
+ * anything except an arm-only cell is treated as having a base
197
+ * (legacy configs default kind to "amr").
198
+ */
199
+ export function robotHasMobileBase(robot) {
200
+ if (robot.profile) {
201
+ return robot.profile.features.includes("base");
202
+ }
203
+ const kind = (robot.kind ?? "amr").trim().toLowerCase();
204
+ return kind !== "arm";
205
+ }
206
+ const STOP_PUBLISH_BUDGET_MS = 500;
207
+ /** Best-effort zero Twist on every mobile-base robot sharing this transport. */
208
+ export async function publishStopForBases(transport, robots) {
209
+ const pubs = [];
210
+ for (const robot of robots) {
211
+ if (!robotHasMobileBase(robot))
212
+ continue;
213
+ const topic = resolveBinding(robot, "cmd_vel");
214
+ if (!topic)
215
+ continue;
216
+ try {
217
+ transport.advertise?.({ topic, type: TWIST_MSG_TYPE });
218
+ }
219
+ catch {
220
+ /* rosbridge advertise is optional */
221
+ }
222
+ try {
223
+ const result = transport.publish({
224
+ topic,
225
+ type: TWIST_MSG_TYPE,
226
+ msg: {
227
+ linear: { ...ZERO_TWIST.linear },
228
+ angular: { ...ZERO_TWIST.angular },
229
+ },
230
+ });
231
+ if (result && typeof result.then === "function") {
232
+ pubs.push(Promise.resolve(result).catch(() => { }));
233
+ }
234
+ }
235
+ catch {
236
+ /* socket may already be half-closed */
237
+ }
238
+ }
239
+ if (pubs.length === 0)
240
+ return;
241
+ await Promise.race([
242
+ Promise.all(pubs),
243
+ new Promise((resolve) => setTimeout(resolve, STOP_PUBLISH_BUDGET_MS)),
244
+ ]);
245
+ }
246
+ /**
247
+ * Publish zero Twist when the transport drops (and again on reconnect
248
+ * so a stale last-command cannot resume). Returns an unsubscribe.
249
+ */
250
+ export function attachDisconnectFailSafe(transport, robots) {
251
+ if (typeof transport.onConnection !== "function")
252
+ return () => { };
253
+ let everConnected = transport.getStatus() === "connected";
254
+ return transport.onConnection((status) => {
255
+ if (status === "connected") {
256
+ if (everConnected) {
257
+ void publishStopForBases(transport, robots);
258
+ }
259
+ everConnected = true;
260
+ return;
261
+ }
262
+ if (status === "disconnected" && everConnected) {
263
+ void publishStopForBases(transport, robots);
264
+ }
265
+ });
266
+ }
267
+ const ACTION_BINDING_KEYS = new Set(["navigate_to_pose", "dock"]);
268
+ const EXPECTED_TYPE_FRAGMENT = {
269
+ cmd_vel: /Twist/i,
270
+ odom: /Odometry/i,
271
+ "camera.rgb": /Image/i,
272
+ "camera.depth": /Image/i,
273
+ lidar: /LaserScan|PointCloud/i,
274
+ joint_states: /JointState/i,
275
+ battery: /BatteryState/i,
276
+ };
277
+ function normalizeGraphName(name) {
278
+ const trimmed = name.trim();
279
+ if (!trimmed)
280
+ return trimmed;
281
+ const withSlash = trimmed.startsWith("/") ? trimmed : `/${trimmed}`;
282
+ return withSlash.replace(/\/+$/, "") || "/";
283
+ }
284
+ function findGraphEntry(names, wanted) {
285
+ const target = normalizeGraphName(wanted);
286
+ return names.find((n) => normalizeGraphName(n.name) === target);
287
+ }
288
+ /**
289
+ * Compare declared profile bindings against a live topic/action list.
290
+ * Missing declared hardware is red; type mismatch is yellow.
291
+ */
292
+ export function checkLiveBindings(robots, graph) {
293
+ const checks = [];
294
+ for (const robot of robots) {
295
+ const profile = robot.profile;
296
+ if (!profile)
297
+ continue;
298
+ const entries = Object.entries(profile.bindings);
299
+ if (entries.length === 0) {
300
+ checks.push({
301
+ id: `live-${robot.id}-no-bindings`,
302
+ robotId: robot.id,
303
+ key: "",
304
+ name: "",
305
+ severity: "yellow",
306
+ reason: `Robot "${robot.id}" has a profile but no bindings to verify`,
307
+ });
308
+ continue;
309
+ }
310
+ for (const [key, raw] of entries) {
311
+ const resolved = resolveBinding(robot, key) ??
312
+ (typeof raw === "string" ? raw.trim() : "");
313
+ if (!resolved)
314
+ continue;
315
+ const isAction = ACTION_BINDING_KEYS.has(key);
316
+ const pool = isAction ? (graph.actions ?? []) : graph.topics;
317
+ const found = findGraphEntry(pool, resolved);
318
+ const checkId = `live-${robot.id}-${key}`;
319
+ if (!found) {
320
+ if (isAction && (graph.actions === undefined || graph.actions.length === 0)) {
321
+ checks.push({
322
+ id: checkId,
323
+ robotId: robot.id,
324
+ key,
325
+ name: resolved,
326
+ severity: "yellow",
327
+ reason: `Could not verify action ${key}=${resolved} (transport returned no action list)`,
328
+ });
329
+ continue;
330
+ }
331
+ checks.push({
332
+ id: checkId,
333
+ robotId: robot.id,
334
+ key,
335
+ name: resolved,
336
+ severity: "red",
337
+ reason: `Declared ${key}=${resolved} is not on the live graph`,
338
+ });
339
+ continue;
340
+ }
341
+ const expected = EXPECTED_TYPE_FRAGMENT[key];
342
+ if (expected && found.type && !expected.test(found.type)) {
343
+ checks.push({
344
+ id: checkId,
345
+ robotId: robot.id,
346
+ key,
347
+ name: resolved,
348
+ severity: "yellow",
349
+ reason: `${key}=${resolved} type is ${found.type} (expected ${expected})`,
350
+ });
351
+ continue;
352
+ }
353
+ checks.push({
354
+ id: checkId,
355
+ robotId: robot.id,
356
+ key,
357
+ name: resolved,
358
+ severity: "green",
359
+ reason: `${key}=${resolved} present`,
360
+ });
361
+ }
362
+ }
363
+ return checks;
364
+ }
365
+ //# sourceMappingURL=safety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.js","sourceRoot":"","sources":["../src/safety.ts"],"names":[],"mappings":"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"}