@pellux/goodvibes-sdk 0.28.9 → 0.28.11

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 (62) hide show
  1. package/dist/_internal/contracts/artifacts/operator-contract.json +96 -4
  2. package/dist/_internal/contracts/generated/foundation-metadata.d.ts +2 -2
  3. package/dist/_internal/contracts/generated/foundation-metadata.js +2 -2
  4. package/dist/_internal/contracts/generated/operator-contract.d.ts.map +1 -1
  5. package/dist/_internal/contracts/generated/operator-contract.js +96 -4
  6. package/dist/_internal/contracts/generated/operator-method-ids.d.ts +1 -1
  7. package/dist/_internal/contracts/generated/operator-method-ids.d.ts.map +1 -1
  8. package/dist/_internal/contracts/generated/operator-method-ids.js +1 -0
  9. package/dist/_internal/platform/control-plane/method-catalog-homegraph.d.ts.map +1 -1
  10. package/dist/_internal/platform/control-plane/method-catalog-homegraph.js +13 -1
  11. package/dist/_internal/platform/control-plane/operator-contract-schemas-homegraph.d.ts +2 -0
  12. package/dist/_internal/platform/control-plane/operator-contract-schemas-homegraph.d.ts.map +1 -1
  13. package/dist/_internal/platform/control-plane/operator-contract-schemas-homegraph.js +13 -0
  14. package/dist/_internal/platform/daemon/http/home-graph-routes.d.ts.map +1 -1
  15. package/dist/_internal/platform/daemon/http/home-graph-routes.js +3 -0
  16. package/dist/_internal/platform/knowledge/home-graph/ask.d.ts +1 -1
  17. package/dist/_internal/platform/knowledge/home-graph/ask.d.ts.map +1 -1
  18. package/dist/_internal/platform/knowledge/home-graph/ask.js +113 -7
  19. package/dist/_internal/platform/knowledge/home-graph/index.d.ts +1 -1
  20. package/dist/_internal/platform/knowledge/home-graph/index.d.ts.map +1 -1
  21. package/dist/_internal/platform/knowledge/home-graph/link-node.d.ts +21 -0
  22. package/dist/_internal/platform/knowledge/home-graph/link-node.d.ts.map +1 -0
  23. package/dist/_internal/platform/knowledge/home-graph/link-node.js +45 -0
  24. package/dist/_internal/platform/knowledge/home-graph/reset.d.ts +4 -0
  25. package/dist/_internal/platform/knowledge/home-graph/reset.d.ts.map +1 -0
  26. package/dist/_internal/platform/knowledge/home-graph/reset.js +8 -0
  27. package/dist/_internal/platform/knowledge/home-graph/service.d.ts +2 -2
  28. package/dist/_internal/platform/knowledge/home-graph/service.d.ts.map +1 -1
  29. package/dist/_internal/platform/knowledge/home-graph/service.js +6 -22
  30. package/dist/_internal/platform/knowledge/home-graph/types.d.ts +24 -1
  31. package/dist/_internal/platform/knowledge/home-graph/types.d.ts.map +1 -1
  32. package/dist/_internal/platform/knowledge/home-graph/types.js +1 -0
  33. package/dist/_internal/platform/knowledge/index.d.ts +1 -1
  34. package/dist/_internal/platform/knowledge/index.d.ts.map +1 -1
  35. package/dist/_internal/platform/knowledge/map.d.ts.map +1 -1
  36. package/dist/_internal/platform/knowledge/map.js +3 -2
  37. package/dist/_internal/platform/knowledge/semantic/answer-space.d.ts +8 -0
  38. package/dist/_internal/platform/knowledge/semantic/answer-space.d.ts.map +1 -0
  39. package/dist/_internal/platform/knowledge/semantic/answer-space.js +15 -0
  40. package/dist/_internal/platform/knowledge/semantic/answer.d.ts.map +1 -1
  41. package/dist/_internal/platform/knowledge/semantic/answer.js +5 -2
  42. package/dist/_internal/platform/knowledge/semantic/homeassistant-scope.d.ts +1 -0
  43. package/dist/_internal/platform/knowledge/semantic/homeassistant-scope.d.ts.map +1 -1
  44. package/dist/_internal/platform/knowledge/semantic/homeassistant-scope.js +69 -8
  45. package/dist/_internal/platform/knowledge/semantic/self-improvement.d.ts.map +1 -1
  46. package/dist/_internal/platform/knowledge/semantic/self-improvement.js +18 -1
  47. package/dist/_internal/platform/knowledge/semantic/service.d.ts +5 -0
  48. package/dist/_internal/platform/knowledge/semantic/service.d.ts.map +1 -1
  49. package/dist/_internal/platform/knowledge/semantic/service.js +41 -6
  50. package/dist/_internal/platform/knowledge/semantic/types.d.ts +1 -0
  51. package/dist/_internal/platform/knowledge/semantic/types.d.ts.map +1 -1
  52. package/dist/_internal/platform/knowledge/store-schedules.d.ts +5 -0
  53. package/dist/_internal/platform/knowledge/store-schedules.d.ts.map +1 -0
  54. package/dist/_internal/platform/knowledge/store-schedules.js +46 -0
  55. package/dist/_internal/platform/knowledge/store-space-delete.d.ts +31 -0
  56. package/dist/_internal/platform/knowledge/store-space-delete.d.ts.map +1 -0
  57. package/dist/_internal/platform/knowledge/store-space-delete.js +88 -0
  58. package/dist/_internal/platform/knowledge/store.d.ts +6 -0
  59. package/dist/_internal/platform/knowledge/store.d.ts.map +1 -1
  60. package/dist/_internal/platform/knowledge/store.js +30 -42
  61. package/dist/_internal/platform/version.js +1 -1
  62. package/package.json +1 -1
@@ -3,7 +3,7 @@
3
3
  "product": {
4
4
  "id": "goodvibes",
5
5
  "surface": "operator",
6
- "version": "0.28.9"
6
+ "version": "0.28.11"
7
7
  },
8
8
  "auth": {
9
9
  "modes": [
@@ -30046,6 +30046,98 @@
30046
30046
  },
30047
30047
  "invokable": true
30048
30048
  },
30049
+ {
30050
+ "id": "homeassistant.homeGraph.reset",
30051
+ "title": "Reset Home Graph Space",
30052
+ "description": "Clear one Home Assistant Home Graph knowledge space after callers export any diagnostic backup they need.",
30053
+ "category": "knowledge",
30054
+ "source": "builtin",
30055
+ "access": "admin",
30056
+ "transport": [
30057
+ "http",
30058
+ "ws"
30059
+ ],
30060
+ "scopes": [
30061
+ "write:knowledge"
30062
+ ],
30063
+ "http": {
30064
+ "method": "POST",
30065
+ "path": "/api/homeassistant/home-graph/reset"
30066
+ },
30067
+ "inputSchema": {
30068
+ "type": "object",
30069
+ "properties": {
30070
+ "installationId": {
30071
+ "type": "string"
30072
+ },
30073
+ "knowledgeSpaceId": {
30074
+ "type": "string"
30075
+ },
30076
+ "dryRun": {
30077
+ "type": "boolean"
30078
+ }
30079
+ },
30080
+ "additionalProperties": true
30081
+ },
30082
+ "outputSchema": {
30083
+ "type": "object",
30084
+ "properties": {
30085
+ "ok": {
30086
+ "type": "boolean"
30087
+ },
30088
+ "spaceId": {
30089
+ "type": "string"
30090
+ },
30091
+ "installationId": {
30092
+ "type": "string"
30093
+ },
30094
+ "dryRun": {
30095
+ "type": "boolean"
30096
+ },
30097
+ "deleted": {
30098
+ "type": "object",
30099
+ "additionalProperties": {
30100
+ "anyOf": [
30101
+ {
30102
+ "type": "string"
30103
+ },
30104
+ {
30105
+ "type": "number"
30106
+ },
30107
+ {
30108
+ "type": "boolean"
30109
+ },
30110
+ {
30111
+ "type": "null"
30112
+ },
30113
+ {
30114
+ "type": "object",
30115
+ "additionalProperties": {}
30116
+ },
30117
+ {
30118
+ "type": "array",
30119
+ "items": {}
30120
+ }
30121
+ ]
30122
+ }
30123
+ },
30124
+ "artifactsDeleted": {
30125
+ "type": "boolean"
30126
+ }
30127
+ },
30128
+ "required": [
30129
+ "ok",
30130
+ "spaceId",
30131
+ "installationId",
30132
+ "dryRun",
30133
+ "deleted",
30134
+ "artifactsDeleted"
30135
+ ],
30136
+ "additionalProperties": true
30137
+ },
30138
+ "dangerous": true,
30139
+ "invokable": true
30140
+ },
30049
30141
  {
30050
30142
  "id": "homeassistant.homeGraph.reviewHomeGraphFact",
30051
30143
  "title": "Review Home Graph Fact",
@@ -68662,10 +68754,10 @@
68662
68754
  }
68663
68755
  ],
68664
68756
  "schemaCoverage": {
68665
- "methods": 264,
68666
- "typedInputs": 264,
68757
+ "methods": 265,
68758
+ "typedInputs": 265,
68667
68759
  "genericInputs": 0,
68668
- "typedOutputs": 264,
68760
+ "typedOutputs": 265,
68669
68761
  "genericOutputs": 0
68670
68762
  },
68671
68763
  "eventCoverage": {
@@ -1,7 +1,7 @@
1
1
  export declare const FOUNDATION_METADATA: {
2
2
  readonly productId: "goodvibes";
3
- readonly productVersion: "0.28.9";
4
- readonly operatorMethodCount: 264;
3
+ readonly productVersion: "0.28.11";
4
+ readonly operatorMethodCount: 265;
5
5
  readonly operatorEventCount: 30;
6
6
  readonly peerEndpointCount: 6;
7
7
  };
@@ -1,8 +1,8 @@
1
1
  // Synced from packages/contracts/src/generated/foundation-metadata.ts
2
2
  export const FOUNDATION_METADATA = {
3
3
  "productId": "goodvibes",
4
- "productVersion": "0.28.9",
5
- "operatorMethodCount": 264,
4
+ "productVersion": "0.28.11",
5
+ "operatorMethodCount": 265,
6
6
  "operatorEventCount": 30,
7
7
  "peerEndpointCount": 6
8
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"operator-contract.d.ts","sourceRoot":"","sources":["../../../../src/_internal/contracts/generated/operator-contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,eAAO,MAAM,iBAAiB,EAAE,wBA2kmEtB,CAAC"}
1
+ {"version":3,"file":"operator-contract.d.ts","sourceRoot":"","sources":["../../../../src/_internal/contracts/generated/operator-contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,eAAO,MAAM,iBAAiB,EAAE,wBAuqmEtB,CAAC"}
@@ -3,7 +3,7 @@ export const OPERATOR_CONTRACT = {
3
3
  "product": {
4
4
  "id": "goodvibes",
5
5
  "surface": "operator",
6
- "version": "0.28.9"
6
+ "version": "0.28.11"
7
7
  },
8
8
  "auth": {
9
9
  "modes": [
@@ -30046,6 +30046,98 @@ export const OPERATOR_CONTRACT = {
30046
30046
  },
30047
30047
  "invokable": true
30048
30048
  },
30049
+ {
30050
+ "id": "homeassistant.homeGraph.reset",
30051
+ "title": "Reset Home Graph Space",
30052
+ "description": "Clear one Home Assistant Home Graph knowledge space after callers export any diagnostic backup they need.",
30053
+ "category": "knowledge",
30054
+ "source": "builtin",
30055
+ "access": "admin",
30056
+ "transport": [
30057
+ "http",
30058
+ "ws"
30059
+ ],
30060
+ "scopes": [
30061
+ "write:knowledge"
30062
+ ],
30063
+ "http": {
30064
+ "method": "POST",
30065
+ "path": "/api/homeassistant/home-graph/reset"
30066
+ },
30067
+ "inputSchema": {
30068
+ "type": "object",
30069
+ "properties": {
30070
+ "installationId": {
30071
+ "type": "string"
30072
+ },
30073
+ "knowledgeSpaceId": {
30074
+ "type": "string"
30075
+ },
30076
+ "dryRun": {
30077
+ "type": "boolean"
30078
+ }
30079
+ },
30080
+ "additionalProperties": true
30081
+ },
30082
+ "outputSchema": {
30083
+ "type": "object",
30084
+ "properties": {
30085
+ "ok": {
30086
+ "type": "boolean"
30087
+ },
30088
+ "spaceId": {
30089
+ "type": "string"
30090
+ },
30091
+ "installationId": {
30092
+ "type": "string"
30093
+ },
30094
+ "dryRun": {
30095
+ "type": "boolean"
30096
+ },
30097
+ "deleted": {
30098
+ "type": "object",
30099
+ "additionalProperties": {
30100
+ "anyOf": [
30101
+ {
30102
+ "type": "string"
30103
+ },
30104
+ {
30105
+ "type": "number"
30106
+ },
30107
+ {
30108
+ "type": "boolean"
30109
+ },
30110
+ {
30111
+ "type": "null"
30112
+ },
30113
+ {
30114
+ "type": "object",
30115
+ "additionalProperties": {}
30116
+ },
30117
+ {
30118
+ "type": "array",
30119
+ "items": {}
30120
+ }
30121
+ ]
30122
+ }
30123
+ },
30124
+ "artifactsDeleted": {
30125
+ "type": "boolean"
30126
+ }
30127
+ },
30128
+ "required": [
30129
+ "ok",
30130
+ "spaceId",
30131
+ "installationId",
30132
+ "dryRun",
30133
+ "deleted",
30134
+ "artifactsDeleted"
30135
+ ],
30136
+ "additionalProperties": true
30137
+ },
30138
+ "dangerous": true,
30139
+ "invokable": true
30140
+ },
30049
30141
  {
30050
30142
  "id": "homeassistant.homeGraph.reviewHomeGraphFact",
30051
30143
  "title": "Review Home Graph Fact",
@@ -68662,10 +68754,10 @@ export const OPERATOR_CONTRACT = {
68662
68754
  }
68663
68755
  ],
68664
68756
  "schemaCoverage": {
68665
- "methods": 264,
68666
- "typedInputs": 264,
68757
+ "methods": 265,
68758
+ "typedInputs": 265,
68667
68759
  "genericInputs": 0,
68668
- "typedOutputs": 264,
68760
+ "typedOutputs": 265,
68669
68761
  "genericOutputs": 0
68670
68762
  },
68671
68763
  "eventCoverage": {
@@ -1,3 +1,3 @@
1
- export declare const OPERATOR_METHOD_IDS: readonly ["accounts.snapshot", "approvals.approve", "approvals.cancel", "approvals.claim", "approvals.deny", "approvals.list", "artifacts.content.get", "artifacts.create", "artifacts.get", "artifacts.list", "automation.heartbeat.list", "automation.heartbeat.run", "automation.integration.snapshot", "automation.jobs.create", "automation.jobs.delete", "automation.jobs.disable", "automation.jobs.enable", "automation.jobs.list", "automation.jobs.patch", "automation.jobs.pause", "automation.jobs.resume", "automation.jobs.run", "automation.runs.cancel", "automation.runs.get", "automation.runs.list", "automation.runs.retry", "channels.accounts.action.default", "channels.accounts.action.named", "channels.accounts.get", "channels.accounts.list", "channels.accounts.surface.list", "channels.actions.invoke", "channels.actions.list", "channels.actions.surface.list", "channels.agent_tools.list", "channels.agent_tools.surface.list", "channels.allowlist.edit", "channels.allowlist.resolve", "channels.authorize", "channels.capabilities.list", "channels.capabilities.surface.list", "channels.directory.query", "channels.doctor.get", "channels.lifecycle.get", "channels.lifecycle.migrate", "channels.policies.audit", "channels.policies.list", "channels.policies.update", "channels.repairs.list", "channels.setup.get", "channels.status", "channels.targets.resolve", "channels.tools.invoke", "channels.tools.list", "channels.tools.surface.list", "companion.chat.events.stream", "companion.chat.messages.create", "companion.chat.messages.list", "companion.chat.sessions.create", "companion.chat.sessions.delete", "companion.chat.sessions.get", "companion.chat.sessions.update", "config.get", "config.set", "continuity.snapshot", "control.auth.current", "control.auth.login", "control.clients.list", "control.contract", "control.events.catalog", "control.events.stream", "control.messages.list", "control.methods.get", "control.methods.list", "control.snapshot", "control.status", "control.web", "deliveries.get", "deliveries.list", "health.snapshot", "homeassistant.homeGraph.askHomeGraph", "homeassistant.homeGraph.browse", "homeassistant.homeGraph.export", "homeassistant.homeGraph.generateHomeGraphPacket", "homeassistant.homeGraph.generateRoomPage", "homeassistant.homeGraph.import", "homeassistant.homeGraph.ingestHomeGraphArtifact", "homeassistant.homeGraph.ingestHomeGraphNote", "homeassistant.homeGraph.ingestHomeGraphUrl", "homeassistant.homeGraph.linkHomeGraphKnowledge", "homeassistant.homeGraph.listHomeGraphIssues", "homeassistant.homeGraph.map", "homeassistant.homeGraph.pages.list", "homeassistant.homeGraph.refinement.run", "homeassistant.homeGraph.refinement.task.cancel", "homeassistant.homeGraph.refinement.task.get", "homeassistant.homeGraph.refinement.tasks.list", "homeassistant.homeGraph.refreshDevicePassport", "homeassistant.homeGraph.reindex", "homeassistant.homeGraph.reviewHomeGraphFact", "homeassistant.homeGraph.sources.list", "homeassistant.homeGraph.status", "homeassistant.homeGraph.syncHomeGraph", "homeassistant.homeGraph.unlinkHomeGraphKnowledge", "intelligence.snapshot", "knowledge.ask", "knowledge.candidate.decide", "knowledge.candidate.get", "knowledge.candidates.list", "knowledge.connector.doctor", "knowledge.connector.get", "knowledge.connectors.list", "knowledge.extraction.get", "knowledge.extractions.list", "knowledge.graphql.execute", "knowledge.graphql.schema", "knowledge.ingest.artifact", "knowledge.ingest.bookmarks", "knowledge.ingest.browserHistory", "knowledge.ingest.connector", "knowledge.ingest.url", "knowledge.ingest.urls", "knowledge.issue.review", "knowledge.issues.list", "knowledge.item.get", "knowledge.job-runs.list", "knowledge.job.get", "knowledge.job.run", "knowledge.jobs.list", "knowledge.lint", "knowledge.map", "knowledge.nodes.list", "knowledge.packet", "knowledge.projection.materialize", "knowledge.projection.render", "knowledge.projections.list", "knowledge.refinement.run", "knowledge.refinement.task.cancel", "knowledge.refinement.task.get", "knowledge.refinement.tasks.list", "knowledge.reindex", "knowledge.report.get", "knowledge.reports.list", "knowledge.schedule.delete", "knowledge.schedule.enable", "knowledge.schedule.get", "knowledge.schedule.save", "knowledge.schedules.list", "knowledge.search", "knowledge.source.extraction.get", "knowledge.sources.list", "knowledge.status", "knowledge.usage.list", "local_auth.bootstrap.delete", "local_auth.sessions.delete", "local_auth.status", "local_auth.users.create", "local_auth.users.delete", "local_auth.users.password.rotate", "media.analyze", "media.generate", "media.providers.list", "media.transform", "memory.doctor", "memory.embeddings.default.set", "memory.vector.rebuild", "memory.vector.stats", "multimodal.analyze", "multimodal.packet", "multimodal.providers.list", "multimodal.status", "multimodal.writeback", "panels.list", "panels.open", "projectPlanning.decisions.list", "projectPlanning.decisions.record", "projectPlanning.evaluate", "projectPlanning.language.get", "projectPlanning.language.upsert", "projectPlanning.state.get", "projectPlanning.state.upsert", "projectPlanning.status", "providers.get", "providers.list", "providers.usage.get", "remote.node_host.contract", "remote.pair.requests.approve", "remote.pair.requests.list", "remote.pair.requests.reject", "remote.peers.disconnect", "remote.peers.invoke", "remote.peers.list", "remote.peers.token.revoke", "remote.peers.token.rotate", "remote.snapshot", "remote.work.cancel", "remote.work.list", "review.snapshot", "routes.bindings.create", "routes.bindings.delete", "routes.bindings.list", "routes.bindings.patch", "routes.snapshot", "scheduler.capacity", "schedules.create", "schedules.delete", "schedules.disable", "schedules.enable", "schedules.list", "schedules.run", "security.settings", "services.install", "services.restart", "services.start", "services.status", "services.stop", "services.uninstall", "sessions.close", "sessions.create", "sessions.followUp", "sessions.get", "sessions.inputs.cancel", "sessions.inputs.create", "sessions.inputs.list", "sessions.integration.snapshot", "sessions.list", "sessions.messages.create", "sessions.messages.list", "sessions.reopen", "sessions.steer", "settings.snapshot", "surfaces.list", "tasks.cancel", "tasks.create", "tasks.get", "tasks.list", "tasks.retry", "tasks.status", "telemetry.errors.list", "telemetry.events.list", "telemetry.metrics.get", "telemetry.otlp.logs", "telemetry.otlp.metrics", "telemetry.otlp.traces", "telemetry.snapshot", "telemetry.stream", "telemetry.traces.list", "voice.providers.list", "voice.realtime.session", "voice.status", "voice.stt", "voice.tts", "voice.tts.stream", "voice.voices.list", "watchers.create", "watchers.delete", "watchers.list", "watchers.patch", "watchers.run", "watchers.start", "watchers.stop", "web_search.providers.list", "web_search.query", "worktrees.snapshot"];
1
+ export declare const OPERATOR_METHOD_IDS: readonly ["accounts.snapshot", "approvals.approve", "approvals.cancel", "approvals.claim", "approvals.deny", "approvals.list", "artifacts.content.get", "artifacts.create", "artifacts.get", "artifacts.list", "automation.heartbeat.list", "automation.heartbeat.run", "automation.integration.snapshot", "automation.jobs.create", "automation.jobs.delete", "automation.jobs.disable", "automation.jobs.enable", "automation.jobs.list", "automation.jobs.patch", "automation.jobs.pause", "automation.jobs.resume", "automation.jobs.run", "automation.runs.cancel", "automation.runs.get", "automation.runs.list", "automation.runs.retry", "channels.accounts.action.default", "channels.accounts.action.named", "channels.accounts.get", "channels.accounts.list", "channels.accounts.surface.list", "channels.actions.invoke", "channels.actions.list", "channels.actions.surface.list", "channels.agent_tools.list", "channels.agent_tools.surface.list", "channels.allowlist.edit", "channels.allowlist.resolve", "channels.authorize", "channels.capabilities.list", "channels.capabilities.surface.list", "channels.directory.query", "channels.doctor.get", "channels.lifecycle.get", "channels.lifecycle.migrate", "channels.policies.audit", "channels.policies.list", "channels.policies.update", "channels.repairs.list", "channels.setup.get", "channels.status", "channels.targets.resolve", "channels.tools.invoke", "channels.tools.list", "channels.tools.surface.list", "companion.chat.events.stream", "companion.chat.messages.create", "companion.chat.messages.list", "companion.chat.sessions.create", "companion.chat.sessions.delete", "companion.chat.sessions.get", "companion.chat.sessions.update", "config.get", "config.set", "continuity.snapshot", "control.auth.current", "control.auth.login", "control.clients.list", "control.contract", "control.events.catalog", "control.events.stream", "control.messages.list", "control.methods.get", "control.methods.list", "control.snapshot", "control.status", "control.web", "deliveries.get", "deliveries.list", "health.snapshot", "homeassistant.homeGraph.askHomeGraph", "homeassistant.homeGraph.browse", "homeassistant.homeGraph.export", "homeassistant.homeGraph.generateHomeGraphPacket", "homeassistant.homeGraph.generateRoomPage", "homeassistant.homeGraph.import", "homeassistant.homeGraph.ingestHomeGraphArtifact", "homeassistant.homeGraph.ingestHomeGraphNote", "homeassistant.homeGraph.ingestHomeGraphUrl", "homeassistant.homeGraph.linkHomeGraphKnowledge", "homeassistant.homeGraph.listHomeGraphIssues", "homeassistant.homeGraph.map", "homeassistant.homeGraph.pages.list", "homeassistant.homeGraph.refinement.run", "homeassistant.homeGraph.refinement.task.cancel", "homeassistant.homeGraph.refinement.task.get", "homeassistant.homeGraph.refinement.tasks.list", "homeassistant.homeGraph.refreshDevicePassport", "homeassistant.homeGraph.reindex", "homeassistant.homeGraph.reset", "homeassistant.homeGraph.reviewHomeGraphFact", "homeassistant.homeGraph.sources.list", "homeassistant.homeGraph.status", "homeassistant.homeGraph.syncHomeGraph", "homeassistant.homeGraph.unlinkHomeGraphKnowledge", "intelligence.snapshot", "knowledge.ask", "knowledge.candidate.decide", "knowledge.candidate.get", "knowledge.candidates.list", "knowledge.connector.doctor", "knowledge.connector.get", "knowledge.connectors.list", "knowledge.extraction.get", "knowledge.extractions.list", "knowledge.graphql.execute", "knowledge.graphql.schema", "knowledge.ingest.artifact", "knowledge.ingest.bookmarks", "knowledge.ingest.browserHistory", "knowledge.ingest.connector", "knowledge.ingest.url", "knowledge.ingest.urls", "knowledge.issue.review", "knowledge.issues.list", "knowledge.item.get", "knowledge.job-runs.list", "knowledge.job.get", "knowledge.job.run", "knowledge.jobs.list", "knowledge.lint", "knowledge.map", "knowledge.nodes.list", "knowledge.packet", "knowledge.projection.materialize", "knowledge.projection.render", "knowledge.projections.list", "knowledge.refinement.run", "knowledge.refinement.task.cancel", "knowledge.refinement.task.get", "knowledge.refinement.tasks.list", "knowledge.reindex", "knowledge.report.get", "knowledge.reports.list", "knowledge.schedule.delete", "knowledge.schedule.enable", "knowledge.schedule.get", "knowledge.schedule.save", "knowledge.schedules.list", "knowledge.search", "knowledge.source.extraction.get", "knowledge.sources.list", "knowledge.status", "knowledge.usage.list", "local_auth.bootstrap.delete", "local_auth.sessions.delete", "local_auth.status", "local_auth.users.create", "local_auth.users.delete", "local_auth.users.password.rotate", "media.analyze", "media.generate", "media.providers.list", "media.transform", "memory.doctor", "memory.embeddings.default.set", "memory.vector.rebuild", "memory.vector.stats", "multimodal.analyze", "multimodal.packet", "multimodal.providers.list", "multimodal.status", "multimodal.writeback", "panels.list", "panels.open", "projectPlanning.decisions.list", "projectPlanning.decisions.record", "projectPlanning.evaluate", "projectPlanning.language.get", "projectPlanning.language.upsert", "projectPlanning.state.get", "projectPlanning.state.upsert", "projectPlanning.status", "providers.get", "providers.list", "providers.usage.get", "remote.node_host.contract", "remote.pair.requests.approve", "remote.pair.requests.list", "remote.pair.requests.reject", "remote.peers.disconnect", "remote.peers.invoke", "remote.peers.list", "remote.peers.token.revoke", "remote.peers.token.rotate", "remote.snapshot", "remote.work.cancel", "remote.work.list", "review.snapshot", "routes.bindings.create", "routes.bindings.delete", "routes.bindings.list", "routes.bindings.patch", "routes.snapshot", "scheduler.capacity", "schedules.create", "schedules.delete", "schedules.disable", "schedules.enable", "schedules.list", "schedules.run", "security.settings", "services.install", "services.restart", "services.start", "services.status", "services.stop", "services.uninstall", "sessions.close", "sessions.create", "sessions.followUp", "sessions.get", "sessions.inputs.cancel", "sessions.inputs.create", "sessions.inputs.list", "sessions.integration.snapshot", "sessions.list", "sessions.messages.create", "sessions.messages.list", "sessions.reopen", "sessions.steer", "settings.snapshot", "surfaces.list", "tasks.cancel", "tasks.create", "tasks.get", "tasks.list", "tasks.retry", "tasks.status", "telemetry.errors.list", "telemetry.events.list", "telemetry.metrics.get", "telemetry.otlp.logs", "telemetry.otlp.metrics", "telemetry.otlp.traces", "telemetry.snapshot", "telemetry.stream", "telemetry.traces.list", "voice.providers.list", "voice.realtime.session", "voice.status", "voice.stt", "voice.tts", "voice.tts.stream", "voice.voices.list", "watchers.create", "watchers.delete", "watchers.list", "watchers.patch", "watchers.run", "watchers.start", "watchers.stop", "web_search.providers.list", "web_search.query", "worktrees.snapshot"];
2
2
  export type OperatorMethodId = typeof OPERATOR_METHOD_IDS[number];
3
3
  //# sourceMappingURL=operator-method-ids.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"operator-method-ids.d.ts","sourceRoot":"","sources":["../../../../src/_internal/contracts/generated/operator-method-ids.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,mBAAmB,guNAyQtB,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"operator-method-ids.d.ts","sourceRoot":"","sources":["../../../../src/_internal/contracts/generated/operator-method-ids.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,mBAAmB,iwNA0QtB,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC"}
@@ -99,6 +99,7 @@ export const OPERATOR_METHOD_IDS = [
99
99
  "homeassistant.homeGraph.refinement.tasks.list",
100
100
  "homeassistant.homeGraph.refreshDevicePassport",
101
101
  "homeassistant.homeGraph.reindex",
102
+ "homeassistant.homeGraph.reset",
102
103
  "homeassistant.homeGraph.reviewHomeGraphFact",
103
104
  "homeassistant.homeGraph.sources.list",
104
105
  "homeassistant.homeGraph.status",
@@ -1 +1 @@
1
- {"version":3,"file":"method-catalog-homegraph.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/control-plane/method-catalog-homegraph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAqE1E,eAAO,MAAM,wCAAwC,EAAE,SAAS,uBAAuB,EAyTtF,CAAC"}
1
+ {"version":3,"file":"method-catalog-homegraph.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/control-plane/method-catalog-homegraph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAyE1E,eAAO,MAAM,wCAAwC,EAAE,SAAS,uBAAuB,EAoUtF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { BOOLEAN_SCHEMA, NUMBER_SCHEMA, STRING_SCHEMA, bodyEnvelopeSchema, methodDescriptor, objectSchema, } from './method-catalog-shared.js';
2
2
  import { GENERIC_LIST_SCHEMA, JSON_RECORD_SCHEMA, METADATA_SCHEMA, STRING_LIST_SCHEMA, } from './operator-contract-schemas-shared.js';
3
- import { HOME_GRAPH_ASK_OUTPUT_SCHEMA, HOME_GRAPH_BROWSE_OUTPUT_SCHEMA, HOME_GRAPH_EXPORT_OUTPUT_SCHEMA, HOME_GRAPH_IMPORT_OUTPUT_SCHEMA, HOME_GRAPH_INGEST_OUTPUT_SCHEMA, HOME_GRAPH_ISSUES_OUTPUT_SCHEMA, HOME_GRAPH_LINK_OUTPUT_SCHEMA, HOME_GRAPH_MAP_OUTPUT_SCHEMA, HOME_GRAPH_PAGES_OUTPUT_SCHEMA, HOME_GRAPH_PROJECTION_OUTPUT_SCHEMA, HOME_GRAPH_REINDEX_OUTPUT_SCHEMA, HOME_GRAPH_REFINEMENT_RUN_OUTPUT_SCHEMA, HOME_GRAPH_REFINEMENT_TASK_OUTPUT_SCHEMA, HOME_GRAPH_REFINEMENT_TASKS_OUTPUT_SCHEMA, HOME_GRAPH_REVIEW_OUTPUT_SCHEMA, HOME_GRAPH_SOURCES_OUTPUT_SCHEMA, HOME_GRAPH_SPACE_INPUT_SCHEMA, HOME_GRAPH_STATUS_SCHEMA, HOME_GRAPH_SYNC_OUTPUT_SCHEMA, } from './operator-contract-schemas-homegraph.js';
3
+ import { HOME_GRAPH_ASK_OUTPUT_SCHEMA, HOME_GRAPH_BROWSE_OUTPUT_SCHEMA, HOME_GRAPH_EXPORT_OUTPUT_SCHEMA, HOME_GRAPH_IMPORT_OUTPUT_SCHEMA, HOME_GRAPH_INGEST_OUTPUT_SCHEMA, HOME_GRAPH_ISSUES_OUTPUT_SCHEMA, HOME_GRAPH_LINK_OUTPUT_SCHEMA, HOME_GRAPH_MAP_OUTPUT_SCHEMA, HOME_GRAPH_PAGES_OUTPUT_SCHEMA, HOME_GRAPH_PROJECTION_OUTPUT_SCHEMA, HOME_GRAPH_REINDEX_OUTPUT_SCHEMA, HOME_GRAPH_REFINEMENT_RUN_OUTPUT_SCHEMA, HOME_GRAPH_REFINEMENT_TASK_OUTPUT_SCHEMA, HOME_GRAPH_REFINEMENT_TASKS_OUTPUT_SCHEMA, HOME_GRAPH_RESET_INPUT_SCHEMA, HOME_GRAPH_RESET_OUTPUT_SCHEMA, HOME_GRAPH_REVIEW_OUTPUT_SCHEMA, HOME_GRAPH_SOURCES_OUTPUT_SCHEMA, HOME_GRAPH_SPACE_INPUT_SCHEMA, HOME_GRAPH_STATUS_SCHEMA, HOME_GRAPH_SYNC_OUTPUT_SCHEMA, } from './operator-contract-schemas-homegraph.js';
4
4
  function homeGraphDescriptor(input) {
5
5
  return methodDescriptor({
6
6
  id: input.id,
@@ -12,6 +12,7 @@ function homeGraphDescriptor(input) {
12
12
  http: { method: input.method, path: input.path },
13
13
  inputSchema: input.inputSchema,
14
14
  outputSchema: input.outputSchema,
15
+ ...(input.dangerous ? { dangerous: true } : {}),
15
16
  ...(input.metadata ? { metadata: input.metadata } : {}),
16
17
  });
17
18
  }
@@ -334,6 +335,17 @@ export const builtinGatewayHomeGraphMethodDescriptors = [
334
335
  inputSchema: bodyEnvelopeSchema({ installationId: STRING_SCHEMA, knowledgeSpaceId: STRING_SCHEMA, data: JSON_RECORD_SCHEMA }, ['data']),
335
336
  outputSchema: HOME_GRAPH_IMPORT_OUTPUT_SCHEMA,
336
337
  }),
338
+ homeGraphDescriptor({
339
+ id: 'homeassistant.homeGraph.reset',
340
+ title: 'Reset Home Graph Space',
341
+ description: 'Clear one Home Assistant Home Graph knowledge space after callers export any diagnostic backup they need.',
342
+ method: 'POST',
343
+ path: '/api/homeassistant/home-graph/reset',
344
+ write: true,
345
+ dangerous: true,
346
+ inputSchema: HOME_GRAPH_RESET_INPUT_SCHEMA,
347
+ outputSchema: HOME_GRAPH_RESET_OUTPUT_SCHEMA,
348
+ }),
337
349
  ];
338
350
  function linkBodySchema() {
339
351
  return bodyEnvelopeSchema({
@@ -1,4 +1,5 @@
1
1
  export declare const HOME_GRAPH_SPACE_INPUT_SCHEMA: Record<string, unknown>;
2
+ export declare const HOME_GRAPH_RESET_INPUT_SCHEMA: Record<string, unknown>;
2
3
  export declare const HOME_GRAPH_STATUS_SCHEMA: Record<string, unknown>;
3
4
  export declare const HOME_GRAPH_SYNC_OUTPUT_SCHEMA: Record<string, unknown>;
4
5
  export declare const HOME_GRAPH_INGEST_OUTPUT_SCHEMA: Record<string, unknown>;
@@ -17,4 +18,5 @@ export declare const HOME_GRAPH_REFINEMENT_TASK_OUTPUT_SCHEMA: Record<string, un
17
18
  export declare const HOME_GRAPH_REFINEMENT_RUN_OUTPUT_SCHEMA: Record<string, unknown>;
18
19
  export declare const HOME_GRAPH_EXPORT_OUTPUT_SCHEMA: Record<string, unknown>;
19
20
  export declare const HOME_GRAPH_IMPORT_OUTPUT_SCHEMA: Record<string, unknown>;
21
+ export declare const HOME_GRAPH_RESET_OUTPUT_SCHEMA: Record<string, unknown>;
20
22
  //# sourceMappingURL=operator-contract-schemas-homegraph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"operator-contract-schemas-homegraph.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/control-plane/operator-contract-schemas-homegraph.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,6BAA6B,yBAGJ,CAAC;AAEvC,eAAO,MAAM,wBAAwB,yBAY4H,CAAC;AAElK,eAAO,MAAM,6BAA6B,yBAeiF,CAAC;AAE5H,eAAO,MAAM,+BAA+B,yBAOmB,CAAC;AAEhE,eAAO,MAAM,6BAA6B,yBAKmB,CAAC;AAE9D,eAAO,MAAM,4BAA4B,yBAM0C,CAAC;AAEpF,eAAO,MAAM,4BAA4B,yBAA8B,CAAC;AAExE,eAAO,MAAM,gCAAgC,yBAoB2E,CAAC;AAEzH,eAAO,MAAM,mCAAmC,yBAQsC,CAAC;AAEvF,eAAO,MAAM,+BAA+B,yBAImB,CAAC;AAEhE,eAAO,MAAM,gCAAgC,yBAImB,CAAC;AAEjE,eAAO,MAAM,8BAA8B,yBAImB,CAAC;AAE/D,eAAO,MAAM,+BAA+B,yBAOgD,CAAC;AAE7F,eAAO,MAAM,+BAA+B,yBAMS,CAAC;AAEtD,eAAO,MAAM,yCAAyC,yBAIQ,CAAC;AAE/D,eAAO,MAAM,wCAAwC,yBAIQ,CAAC;AAE9D,eAAO,MAAM,uCAAuC,yBAIW,CAAC;AAEhE,eAAO,MAAM,+BAA+B,yBAUoG,CAAC;AAEjJ,eAAO,MAAM,+BAA+B,yBAIqB,CAAC"}
1
+ {"version":3,"file":"operator-contract-schemas-homegraph.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/control-plane/operator-contract-schemas-homegraph.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,6BAA6B,yBAGJ,CAAC;AAEvC,eAAO,MAAM,6BAA6B,yBAIJ,CAAC;AAEvC,eAAO,MAAM,wBAAwB,yBAY4H,CAAC;AAElK,eAAO,MAAM,6BAA6B,yBAeiF,CAAC;AAE5H,eAAO,MAAM,+BAA+B,yBAOmB,CAAC;AAEhE,eAAO,MAAM,6BAA6B,yBAKmB,CAAC;AAE9D,eAAO,MAAM,4BAA4B,yBAM0C,CAAC;AAEpF,eAAO,MAAM,4BAA4B,yBAA8B,CAAC;AAExE,eAAO,MAAM,gCAAgC,yBAoB2E,CAAC;AAEzH,eAAO,MAAM,mCAAmC,yBAQsC,CAAC;AAEvF,eAAO,MAAM,+BAA+B,yBAImB,CAAC;AAEhE,eAAO,MAAM,gCAAgC,yBAImB,CAAC;AAEjE,eAAO,MAAM,8BAA8B,yBAImB,CAAC;AAE/D,eAAO,MAAM,+BAA+B,yBAOgD,CAAC;AAE7F,eAAO,MAAM,+BAA+B,yBAMS,CAAC;AAEtD,eAAO,MAAM,yCAAyC,yBAIQ,CAAC;AAE/D,eAAO,MAAM,wCAAwC,yBAIQ,CAAC;AAE9D,eAAO,MAAM,uCAAuC,yBAIW,CAAC;AAEhE,eAAO,MAAM,+BAA+B,yBAUoG,CAAC;AAEjJ,eAAO,MAAM,+BAA+B,yBAIqB,CAAC;AAElE,eAAO,MAAM,8BAA8B,yBAOqE,CAAC"}
@@ -5,6 +5,11 @@ export const HOME_GRAPH_SPACE_INPUT_SCHEMA = objectSchema({
5
5
  installationId: STRING_SCHEMA,
6
6
  knowledgeSpaceId: STRING_SCHEMA,
7
7
  }, [], { additionalProperties: true });
8
+ export const HOME_GRAPH_RESET_INPUT_SCHEMA = objectSchema({
9
+ installationId: STRING_SCHEMA,
10
+ knowledgeSpaceId: STRING_SCHEMA,
11
+ dryRun: BOOLEAN_SCHEMA,
12
+ }, [], { additionalProperties: true });
8
13
  export const HOME_GRAPH_STATUS_SCHEMA = objectSchema({
9
14
  ok: BOOLEAN_SCHEMA,
10
15
  spaceId: STRING_SCHEMA,
@@ -147,3 +152,11 @@ export const HOME_GRAPH_IMPORT_OUTPUT_SCHEMA = objectSchema({
147
152
  spaceId: STRING_SCHEMA,
148
153
  imported: JSON_RECORD_SCHEMA,
149
154
  }, ['ok', 'spaceId', 'imported'], { additionalProperties: true });
155
+ export const HOME_GRAPH_RESET_OUTPUT_SCHEMA = objectSchema({
156
+ ok: BOOLEAN_SCHEMA,
157
+ spaceId: STRING_SCHEMA,
158
+ installationId: STRING_SCHEMA,
159
+ dryRun: BOOLEAN_SCHEMA,
160
+ deleted: JSON_RECORD_SCHEMA,
161
+ artifactsDeleted: BOOLEAN_SCHEMA,
162
+ }, ['ok', 'spaceId', 'installationId', 'dryRun', 'deleted', 'artifactsDeleted'], { additionalProperties: true });
@@ -1 +1 @@
1
- {"version":3,"file":"home-graph-routes.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/daemon/http/home-graph-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,oCAAoC,CAAC;AAc5C,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,aAAa,EAAE,uBAAuB,CAAC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzE,QAAQ,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC;IACxF,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,IAAI,CAAC;CAC1D;AAED,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,qBAAqB;IAErD,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YAkJtC,KAAK;YAML,QAAQ;YAMR,gBAAgB;CAK/B"}
1
+ {"version":3,"file":"home-graph-routes.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/daemon/http/home-graph-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,oCAAoC,CAAC;AAc5C,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,aAAa,EAAE,uBAAuB,CAAC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzE,QAAQ,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC;IACxF,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,IAAI,CAAC;CAC1D;AAED,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,qBAAqB;IAErD,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YAqJtC,KAAK;YAML,QAAQ;YAMR,gBAAgB;CAK/B"}
@@ -96,6 +96,9 @@ export class HomeGraphRoutes {
96
96
  if (pathname === '/api/homeassistant/home-graph/export' && req.method === 'POST') {
97
97
  return Response.json(await this.context.homeGraphService.exportSpace(await this.readOptionalBody(req)));
98
98
  }
99
+ if (pathname === '/api/homeassistant/home-graph/reset' && req.method === 'POST') {
100
+ return await this.admin(req, async () => Response.json(await this.context.homeGraphService.resetSpace(await this.readOptionalBody(req))));
101
+ }
99
102
  if (pathname === '/api/homeassistant/home-graph/ask' && req.method === 'POST') {
100
103
  return Response.json(await this.context.homeGraphService.ask(await this.readBody(req)));
101
104
  }
@@ -1,7 +1,7 @@
1
1
  import type { KnowledgeSemanticService } from '../semantic/index.js';
2
2
  import type { KnowledgeStore } from '../store.js';
3
3
  import type { HomeGraphAskInput, HomeGraphAskResult, HomeGraphSearchResult } from './types.js';
4
- import type { HomeGraphSearchState } from './search.js';
4
+ import { type HomeGraphSearchState } from './search.js';
5
5
  export declare function answerHomeGraphQuery(input: {
6
6
  readonly store: KnowledgeStore;
7
7
  readonly semanticService?: KnowledgeSemanticService;
@@ -1 +1 @@
1
- {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/knowledge/home-graph/ask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAChD,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,wBAAwB,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACpD,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwD9B"}
1
+ {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/knowledge/home-graph/ask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAQrB,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAChD,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,wBAAwB,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACpD,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgD9B"}
@@ -1,7 +1,55 @@
1
1
  import { collectLinkedObjects, renderAskAnswer } from './state.js';
2
+ import { readHomeGraphSearchState, scoreHomeGraphResults, } from './search.js';
3
+ import { inferHomeAssistantAnswerScopeForQuery, nodeInHomeAssistantAnswerScope, sourceInHomeAssistantAnswerScope, } from '../semantic/homeassistant-scope.js';
4
+ import { uniqueStrings } from '../semantic/utils.js';
2
5
  export async function answerHomeGraphQuery(input) {
3
- const sources = input.results.flatMap((result) => result.source ? [result.source] : []).map(withAnswerSourceAliases);
4
- const linkedObjects = collectLinkedObjects(input.results, input.state);
6
+ const answer = await answerHomeGraphQueryOnce(input);
7
+ if (!shouldRunForegroundRepair(input, answer))
8
+ return answer;
9
+ const refinement = await input.semanticService.repairAnswerGaps({
10
+ answer: {
11
+ ok: true,
12
+ spaceId: input.spaceId,
13
+ query: answer.query,
14
+ answer: {
15
+ ...answer.answer,
16
+ facts: answer.answer.facts ?? [],
17
+ gaps: answer.answer.gaps ?? [],
18
+ synthesized: answer.answer.synthesized === true,
19
+ },
20
+ results: [],
21
+ },
22
+ limit: Math.max(1, answer.answer.gaps?.length ?? 1),
23
+ maxRunMs: 25_000,
24
+ }).catch(() => null);
25
+ if (!refinement)
26
+ return answer;
27
+ const repairedSources = refinement.ingestedSourceIds
28
+ .map((sourceId) => input.store.getSource(sourceId))
29
+ .filter((source) => Boolean(source));
30
+ if (repairedSources.length > 0) {
31
+ await input.semanticService.enrichSources(repairedSources, {
32
+ knowledgeSpaceId: input.spaceId,
33
+ force: true,
34
+ limit: Math.min(3, repairedSources.length),
35
+ });
36
+ }
37
+ if (refinement.ingestedSourceIds.length === 0 && refinement.linkedRepairs === 0 && refinement.closedGaps === 0) {
38
+ return mergeRefinementTaskIds(answer, refinement.taskIds);
39
+ }
40
+ const state = readHomeGraphSearchState(input.store, input.spaceId);
41
+ const results = scoreHomeGraphResults(input.query.query, state.sources, state.nodes, state.edges, (sourceId) => state.extractionBySourceId.get(sourceId), input.query.limit ?? 8);
42
+ const repaired = await answerHomeGraphQueryOnce({ ...input, state, results });
43
+ return mergeRefinementTaskIds(repaired, [
44
+ ...(answer.answer.refinementTaskIds ?? []),
45
+ ...refinement.taskIds,
46
+ ...taskIdsForGaps(input.store, input.spaceId, answer.answer.gaps?.map((gap) => gap.id) ?? []),
47
+ ]);
48
+ }
49
+ async function answerHomeGraphQueryOnce(input) {
50
+ const results = scopeHomeGraphAnswerResults(input.store, input.spaceId, input.query.query, input.results);
51
+ const sources = results.flatMap((result) => result.source ? [result.source] : []).map(withAnswerSourceAliases);
52
+ const linkedObjects = collectLinkedObjects(results, input.state);
5
53
  if (input.semanticService) {
6
54
  const answer = await input.semanticService.answer({
7
55
  query: input.query.query,
@@ -12,10 +60,11 @@ export async function answerHomeGraphQuery(input) {
12
60
  includeConfidence: input.query.includeConfidence,
13
61
  includeLinkedObjects: input.query.includeLinkedObjects,
14
62
  candidateSourceIds: sources.map((source) => source.id),
15
- candidateNodeIds: input.results.flatMap((result) => result.node ? [result.node.id] : []),
63
+ candidateNodeIds: results.flatMap((result) => result.node ? [result.node.id] : []),
16
64
  strictCandidates: true,
17
65
  linkedObjects,
18
66
  noMatchMessage: `No Home Graph knowledge matched "${input.query.query}".`,
67
+ autoRepairGaps: false,
19
68
  });
20
69
  setTimeout(() => {
21
70
  void input.semanticService?.enrichSources(uniqueSources(sources), {
@@ -38,24 +87,81 @@ export async function answerHomeGraphQuery(input) {
38
87
  refinementTaskIds: answer.answer.refinementTaskIds,
39
88
  synthesized: answer.answer.synthesized,
40
89
  },
41
- results: input.results,
90
+ results,
42
91
  };
43
92
  }
44
- const confidence = Math.min(100, Math.max(10, input.results[0]?.score ?? 10));
93
+ const confidence = Math.min(100, Math.max(10, results[0]?.score ?? 10));
45
94
  return {
46
95
  ok: true,
47
96
  spaceId: input.spaceId,
48
97
  query: input.query.query,
49
98
  answer: {
50
- text: renderAskAnswer(input.query.query, input.results, input.query.mode ?? 'standard'),
99
+ text: renderAskAnswer(input.query.query, results, input.query.mode ?? 'standard'),
51
100
  mode: input.query.mode ?? 'standard',
52
101
  confidence,
53
102
  sources: input.query.includeSources === false ? [] : sources,
54
103
  linkedObjects: input.query.includeLinkedObjects === false ? [] : linkedObjects,
55
104
  },
56
- results: input.results,
105
+ results,
57
106
  };
58
107
  }
108
+ function shouldRunForegroundRepair(input, answer) {
109
+ if (!input.semanticService)
110
+ return false;
111
+ if (!hasFeatureOrSpecIntent(input.query.query))
112
+ return false;
113
+ if (!answer.answer.gaps || answer.answer.gaps.length === 0)
114
+ return false;
115
+ if (answer.answer.facts && answer.answer.facts.length >= 3 && answer.answer.confidence > 0)
116
+ return false;
117
+ return answer.answer.linkedObjects?.some(isConcreteHomeGraphSubject) === true;
118
+ }
119
+ function hasFeatureOrSpecIntent(query) {
120
+ return /\b(feature|features|capabilit(?:y|ies)|function|functions|spec|specs|specification|specifications|support|supports|supported)\b/i
121
+ .test(query);
122
+ }
123
+ function isConcreteHomeGraphSubject(node) {
124
+ if (node.kind === 'ha_device' || node.kind === 'ha_integration')
125
+ return true;
126
+ return typeof node.metadata.manufacturer === 'string' || typeof node.metadata.model === 'string';
127
+ }
128
+ function mergeRefinementTaskIds(answer, previousTaskIds) {
129
+ const ids = uniqueStrings([...(answer.answer.refinementTaskIds ?? []), ...(previousTaskIds ?? [])]);
130
+ if (ids.length === (answer.answer.refinementTaskIds?.length ?? 0))
131
+ return answer;
132
+ return {
133
+ ...answer,
134
+ answer: {
135
+ ...answer.answer,
136
+ refinementTaskIds: ids,
137
+ },
138
+ };
139
+ }
140
+ function taskIdsForGaps(store, spaceId, gapIds) {
141
+ const wanted = new Set(gapIds);
142
+ if (wanted.size === 0)
143
+ return [];
144
+ return store.listRefinementTasks(100, { spaceId })
145
+ .filter((task) => task.gapId && wanted.has(task.gapId))
146
+ .map((task) => task.id);
147
+ }
148
+ function scopeHomeGraphAnswerResults(store, spaceId, query, results) {
149
+ if (results.length === 0)
150
+ return results;
151
+ const scope = inferHomeAssistantAnswerScopeForQuery(store, spaceId, query);
152
+ if (!scope || scope.anchorNodeIds.size === 0)
153
+ return results;
154
+ const scoped = results.filter((result) => {
155
+ if (result.source)
156
+ return sourceInHomeAssistantAnswerScope(store, result.source, scope);
157
+ if (result.node)
158
+ return nodeInHomeAssistantAnswerScope(result.node, scope);
159
+ return false;
160
+ });
161
+ if (scoped.length > 0)
162
+ return scoped;
163
+ return [];
164
+ }
59
165
  function uniqueSources(sources) {
60
166
  const seen = new Set();
61
167
  const out = [];
@@ -1,4 +1,4 @@
1
1
  export { HomeGraphService } from './service.js';
2
2
  export { HOME_GRAPH_NODE_KINDS, HOME_GRAPH_RELATIONS, } from './types.js';
3
- export type { HomeGraphAskInput, HomeGraphAskResult, HomeGraphDevicePassportResult, HomeGraphExport, HomeGraphGeneratedPagesSummary, HomeGraphIngestArtifactInput, HomeGraphIngestNoteInput, HomeGraphIngestResult, HomeGraphIngestUrlInput, HomeGraphKnowledgeTarget, HomeGraphLinkInput, HomeGraphLinkResult, HomeGraphMapEdge, HomeGraphMapHaFilterInput, HomeGraphMapInput, HomeGraphMapNode, HomeGraphMapResult, HomeGraphNodeKind, HomeGraphObjectInput, HomeGraphObjectKind, HomeGraphPageAutomationOptions, HomeGraphPageListResult, HomeGraphProjectionInput, HomeGraphProjectionResult, HomeGraphReindexResult, HomeGraphRelation, HomeGraphReviewInput, HomeGraphSnapshotInput, HomeGraphStatus, HomeGraphSyncResult, } from './types.js';
3
+ export type { HomeGraphAskInput, HomeGraphAskResult, HomeGraphDevicePassportResult, HomeGraphExport, HomeGraphGeneratedPagesSummary, HomeGraphIngestArtifactInput, HomeGraphIngestNoteInput, HomeGraphIngestResult, HomeGraphIngestUrlInput, HomeGraphKnowledgeTarget, HomeGraphLinkInput, HomeGraphLinkResult, HomeGraphMapEdge, HomeGraphMapHaFilterInput, HomeGraphMapInput, HomeGraphMapNode, HomeGraphMapResult, HomeGraphNodeKind, HomeGraphObjectInput, HomeGraphObjectKind, HomeGraphPageAutomationOptions, HomeGraphPageListResult, HomeGraphProjectionInput, HomeGraphProjectionResult, HomeGraphReindexResult, HomeGraphRelation, HomeGraphResetInput, HomeGraphResetResult, HomeGraphReviewInput, HomeGraphSnapshotInput, HomeGraphStatus, HomeGraphSyncResult, } from './types.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/knowledge/home-graph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,6BAA6B,EAC7B,eAAe,EACf,8BAA8B,EAC9B,4BAA4B,EAC5B,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,8BAA8B,EAC9B,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/knowledge/home-graph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,6BAA6B,EAC7B,eAAe,EACf,8BAA8B,EAC9B,4BAA4B,EAC5B,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,8BAA8B,EAC9B,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC"}