@iniesta8888/agent-live 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/CODE_OF_CONDUCT.md +7 -0
  2. package/CONTRIBUTING.md +56 -0
  3. package/LICENSE +21 -0
  4. package/README.md +92 -0
  5. package/SECURITY.md +13 -0
  6. package/dist/adapter-sdk/index.d.ts +45 -0
  7. package/dist/adapter-sdk/index.d.ts.map +1 -0
  8. package/dist/adapter-sdk/index.js +106 -0
  9. package/dist/adapter-sdk/index.js.map +1 -0
  10. package/dist/content/compiler.d.ts +31 -0
  11. package/dist/content/compiler.d.ts.map +1 -0
  12. package/dist/content/compiler.js +218 -0
  13. package/dist/content/compiler.js.map +1 -0
  14. package/dist/content/graph-validator.d.ts +56 -0
  15. package/dist/content/graph-validator.d.ts.map +1 -0
  16. package/dist/content/graph-validator.js +226 -0
  17. package/dist/content/graph-validator.js.map +1 -0
  18. package/dist/content/library.d.ts +4 -0
  19. package/dist/content/library.d.ts.map +1 -0
  20. package/dist/content/library.js +45 -0
  21. package/dist/content/library.js.map +1 -0
  22. package/dist/content/registry.d.ts +34 -0
  23. package/dist/content/registry.d.ts.map +1 -0
  24. package/dist/content/registry.js +130 -0
  25. package/dist/content/registry.js.map +1 -0
  26. package/dist/content/runtime-content.d.ts +63 -0
  27. package/dist/content/runtime-content.d.ts.map +1 -0
  28. package/dist/content/runtime-content.js +78 -0
  29. package/dist/content/runtime-content.js.map +1 -0
  30. package/dist/content/schema.d.ts +142 -0
  31. package/dist/content/schema.d.ts.map +1 -0
  32. package/dist/content/schema.js +280 -0
  33. package/dist/content/schema.js.map +1 -0
  34. package/dist/content/validator.d.ts +35 -0
  35. package/dist/content/validator.d.ts.map +1 -0
  36. package/dist/content/validator.js +205 -0
  37. package/dist/content/validator.js.map +1 -0
  38. package/dist/core/agents.d.ts +56 -0
  39. package/dist/core/agents.d.ts.map +1 -0
  40. package/dist/core/agents.js +148 -0
  41. package/dist/core/agents.js.map +1 -0
  42. package/dist/core/limits.d.ts +15 -0
  43. package/dist/core/limits.d.ts.map +1 -0
  44. package/dist/core/limits.js +16 -0
  45. package/dist/core/limits.js.map +1 -0
  46. package/dist/core/mapping.d.ts +17 -0
  47. package/dist/core/mapping.d.ts.map +1 -0
  48. package/dist/core/mapping.js +94 -0
  49. package/dist/core/mapping.js.map +1 -0
  50. package/dist/core/protocol.d.ts +105 -0
  51. package/dist/core/protocol.d.ts.map +1 -0
  52. package/dist/core/protocol.js +6 -0
  53. package/dist/core/protocol.js.map +1 -0
  54. package/dist/core/state.d.ts +49 -0
  55. package/dist/core/state.d.ts.map +1 -0
  56. package/dist/core/state.js +216 -0
  57. package/dist/core/state.js.map +1 -0
  58. package/dist/creator/commands.d.ts +19 -0
  59. package/dist/creator/commands.d.ts.map +1 -0
  60. package/dist/creator/commands.js +44 -0
  61. package/dist/creator/commands.js.map +1 -0
  62. package/dist/creator/mode.d.ts +10 -0
  63. package/dist/creator/mode.d.ts.map +1 -0
  64. package/dist/creator/mode.js +23 -0
  65. package/dist/creator/mode.js.map +1 -0
  66. package/dist/creator/service.d.ts +199 -0
  67. package/dist/creator/service.d.ts.map +1 -0
  68. package/dist/creator/service.js +159 -0
  69. package/dist/creator/service.js.map +1 -0
  70. package/dist/index.d.ts +14 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +10 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/runtime/agent-live-runtime.d.ts +17 -0
  75. package/dist/runtime/agent-live-runtime.d.ts.map +1 -0
  76. package/dist/runtime/agent-live-runtime.js +50 -0
  77. package/dist/runtime/agent-live-runtime.js.map +1 -0
  78. package/dist/runtime/content-service.d.ts +75 -0
  79. package/dist/runtime/content-service.d.ts.map +1 -0
  80. package/dist/runtime/content-service.js +60 -0
  81. package/dist/runtime/content-service.js.map +1 -0
  82. package/dist/runtime/resource-guard.d.ts +17 -0
  83. package/dist/runtime/resource-guard.d.ts.map +1 -0
  84. package/dist/runtime/resource-guard.js +54 -0
  85. package/dist/runtime/resource-guard.js.map +1 -0
  86. package/dist/runtime/server.d.ts +39 -0
  87. package/dist/runtime/server.d.ts.map +1 -0
  88. package/dist/runtime/server.js +286 -0
  89. package/dist/runtime/server.js.map +1 -0
  90. package/dist/web/app.d.ts +1 -0
  91. package/dist/web/app.js +1317 -0
  92. package/dist/web/index.html +45 -0
  93. package/dist/web/office.js +350 -0
  94. package/dist/web/sprites.js +185 -0
  95. package/dist/web/style.css +288 -0
  96. package/dist/web/v2/bootstrap.js +276 -0
  97. package/dist/web/v2/content/README.md +17 -0
  98. package/dist/web/v2/content/agent-skins/studio-team.json +33 -0
  99. package/dist/web/v2/content/agent-skins/tiny-developers.json +33 -0
  100. package/dist/web/v2/content/atmospheres/default.json +13 -0
  101. package/dist/web/v2/content/atmospheres/rainy-night.json +37 -0
  102. package/dist/web/v2/content/catalog.json +14 -0
  103. package/dist/web/v2/content/component-library/activity-implementations.json +873 -0
  104. package/dist/web/v2/content/component-library/activity-recipes.json +25 -0
  105. package/dist/web/v2/content/component-library/agent-profile-templates.json +18 -0
  106. package/dist/web/v2/content/component-library/catalog.json +38 -0
  107. package/dist/web/v2/content/component-library/npc-templates.json +42 -0
  108. package/dist/web/v2/content/component-library/props.json +41 -0
  109. package/dist/web/v2/content/environments/local-office.json +31 -0
  110. package/dist/web/v2/content/environments/rainy-night.json +28 -0
  111. package/dist/web/v2/content/environments/static-office.json +27 -0
  112. package/dist/web/v2/content/layouts/boardroom-office.json +122 -0
  113. package/dist/web/v2/content/layouts/demo-office.json +88 -0
  114. package/dist/web/v2/content/layouts/lively-office.json +96 -0
  115. package/dist/web/v2/content/layouts/old-school-office.json +154 -0
  116. package/dist/web/v2/content/layouts/tech-open-office.json +132 -0
  117. package/dist/web/v2/content/life-activities/boardroom-routines.json +67 -0
  118. package/dist/web/v2/content/life-activities/none.json +10 -0
  119. package/dist/web/v2/content/life-activities/office-basics.json +39 -0
  120. package/dist/web/v2/content/life-activities/old-school-routines.json +74 -0
  121. package/dist/web/v2/content/life-activities/tech-office-routines.json +148 -0
  122. package/dist/web/v2/content/npcs/boardroom-staff.json +54 -0
  123. package/dist/web/v2/content/npcs/none.json +10 -0
  124. package/dist/web/v2/content/npcs/office-staff.json +25 -0
  125. package/dist/web/v2/content/npcs/old-school-staff.json +39 -0
  126. package/dist/web/v2/content/npcs/tech-office-staff.json +40 -0
  127. package/dist/web/v2/content/official-offices/boardroom-office.json +25 -0
  128. package/dist/web/v2/content/official-offices/old-school-office.json +25 -0
  129. package/dist/web/v2/content/official-offices/tech-open-office.json +25 -0
  130. package/dist/web/v2/content/presets/boardroom-office.json +21 -0
  131. package/dist/web/v2/content/presets/cozy-studio.json +19 -0
  132. package/dist/web/v2/content/presets/demo-office.json +19 -0
  133. package/dist/web/v2/content/presets/lively-office.json +19 -0
  134. package/dist/web/v2/content/presets/night-shift.json +19 -0
  135. package/dist/web/v2/content/presets/old-school-office.json +20 -0
  136. package/dist/web/v2/content/presets/refined-demo.json +20 -0
  137. package/dist/web/v2/content/presets/tech-open-office.json +21 -0
  138. package/dist/web/v2/content/props/default-office.json +23 -0
  139. package/dist/web/v2/content/props/extended-office.json +39 -0
  140. package/dist/web/v2/content/props/tech-office.json +28 -0
  141. package/dist/web/v2/content/styles/pixel-classic.json +160 -0
  142. package/dist/web/v2/content/styles/warm-studio.json +150 -0
  143. package/dist/web/v2/environment-runtime.d.ts +1 -0
  144. package/dist/web/v2/environment-runtime.js +138 -0
  145. package/dist/web/v2/graph-validator.d.ts +55 -0
  146. package/dist/web/v2/graph-validator.js +225 -0
  147. package/dist/web/v2/i18n.js +54 -0
  148. package/dist/web/v2/locales/en.json +209 -0
  149. package/dist/web/v2/locales/zh-CN.json +52 -0
  150. package/dist/web/v2/office-engine.d.ts +1 -0
  151. package/dist/web/v2/office-engine.js +145 -0
  152. package/dist/web/v2/office-renderer.d.ts +1 -0
  153. package/dist/web/v2/office-renderer.js +843 -0
  154. package/dist/web/v2/parity.html +10 -0
  155. package/dist/web/v2/parity.js +82 -0
  156. package/dist/web/v2/sprite-renderer.d.ts +1 -0
  157. package/dist/web/v2/sprite-renderer.js +242 -0
  158. package/dist/web/v2/static-content.js +48 -0
  159. package/dist/web/v2/style.css +140 -0
  160. package/dist/web/v2.html +68 -0
  161. package/docs/ADAPTER-DEVELOPMENT.md +328 -0
  162. package/docs/ADAPTER-SDK.md +109 -0
  163. package/docs/ARCHITECTURE.md +223 -0
  164. package/docs/COMPONENT-LIBRARY.md +212 -0
  165. package/docs/CUSTOMIZATION.md +163 -0
  166. package/docs/DEVELOPER.md +186 -0
  167. package/docs/DSH-ADAPTER-DESIGN.md +173 -0
  168. package/docs/OFFICE-THEMES.md +516 -0
  169. package/docs/PRESET-CONFIG.md +460 -0
  170. package/docs/RELEASE-CHECK.md +23 -0
  171. package/docs/TECHNICAL.md +515 -0
  172. package/docs/USING-CODEX.md +24 -0
  173. package/docs/USING-DSH.md +44 -0
  174. package/docs/USING-PI.md +50 -0
  175. package/docs/VISION.md +146 -0
  176. package/examples/adapter/local-office.mjs +52 -0
  177. package/package.json +89 -0
  178. package/skills/agent-live-adapter-builder/SKILL.md +30 -0
  179. package/skills/agent-live-adapter-builder/agents/openai.yaml +4 -0
  180. package/skills/agent-live-adapter-builder/references/investigation.md +9 -0
  181. package/skills/agent-live-adapter-builder/references/review.md +7 -0
  182. package/skills/agent-live-adapter-builder/scripts/create-adapter.mjs +26 -0
@@ -0,0 +1,96 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "layout",
4
+ "id": "builtin/lively-office",
5
+ "name": "有生活的原版办公室布局",
6
+ "version": "1.0.0",
7
+ "engine": { "min": "0.2.0" },
8
+ "contract": "single-office-v1",
9
+ "canvas": { "width": 384, "height": 216 },
10
+ "wallHeight": 36,
11
+ "camera": { "mode": "fixed", "fit": "contain", "integerScale": true },
12
+ "navigation": {
13
+ "lanes": [46, 100, 162],
14
+ "connectors": [76, 140, 204, 276]
15
+ },
16
+ "seats": [
17
+ { "index": 0, "cx": 44, "desk": { "x": 20, "y": 58, "width": 48, "height": 16 }, "anchor": { "x": 44, "y": 84, "dir": "up", "lane": 1 } },
18
+ { "index": 1, "cx": 108, "desk": { "x": 84, "y": 58, "width": 48, "height": 16 }, "anchor": { "x": 108, "y": 84, "dir": "up", "lane": 1 } },
19
+ { "index": 2, "cx": 172, "desk": { "x": 148, "y": 58, "width": 48, "height": 16 }, "anchor": { "x": 172, "y": 84, "dir": "up", "lane": 1 } },
20
+ { "index": 3, "cx": 236, "desk": { "x": 212, "y": 58, "width": 48, "height": 16 }, "anchor": { "x": 236, "y": 84, "dir": "up", "lane": 1 } },
21
+ { "index": 4, "cx": 44, "desk": { "x": 20, "y": 118, "width": 48, "height": 16 }, "anchor": { "x": 44, "y": 144, "dir": "up", "lane": 2 } },
22
+ { "index": 5, "cx": 108, "desk": { "x": 84, "y": 118, "width": 48, "height": 16 }, "anchor": { "x": 108, "y": 144, "dir": "up", "lane": 2 } },
23
+ { "index": 6, "cx": 172, "desk": { "x": 148, "y": 118, "width": 48, "height": 16 }, "anchor": { "x": 172, "y": 144, "dir": "up", "lane": 2 } },
24
+ { "index": 7, "cx": 236, "desk": { "x": 212, "y": 118, "width": 48, "height": 16 }, "anchor": { "x": 236, "y": 144, "dir": "up", "lane": 2 } }
25
+ ],
26
+ "standingAnchors": [
27
+ { "x": 278, "y": 92, "dir": "left", "lane": 1 },
28
+ { "x": 278, "y": 152, "dir": "left", "lane": 2 },
29
+ { "x": 92, "y": 190, "dir": "right", "lane": 2 },
30
+ { "x": 242, "y": 190, "dir": "left", "lane": 2 },
31
+ { "x": 214, "y": 46, "dir": "down", "lane": 0 },
32
+ { "x": 246, "y": 46, "dir": "down", "lane": 0 },
33
+ { "x": 278, "y": 46, "dir": "down", "lane": 0 },
34
+ { "x": 310, "y": 46, "dir": "down", "lane": 0 }
35
+ ],
36
+ "targets": {
37
+ "archive": { "x": 318, "y": 100, "dir": "up", "lane": 1 },
38
+ "server": { "x": 320, "y": 158, "dir": "up", "lane": 2 },
39
+ "whiteboard": { "x": 152, "y": 46, "dir": "up", "lane": 0 },
40
+ "phone": { "x": 364, "y": 64, "dir": "up", "lane": 1 },
41
+ "coffee": { "x": 290, "y": 188, "dir": "right", "lane": 2 },
42
+ "water": { "x": 338, "y": 190, "dir": "right", "lane": 2 },
43
+ "meetA": { "x": 108, "y": 190, "dir": "right", "lane": 2 },
44
+ "meetB": { "x": 244, "y": 190, "dir": "left", "lane": 2 },
45
+ "entry": { "x": 38, "y": 46, "dir": "down", "lane": 0 },
46
+ "cleaner-entry": { "x": 76, "y": 46, "dir": "down", "lane": 0 },
47
+ "clean-north": { "x": 268, "y": 84, "dir": "left", "lane": 1 },
48
+ "clean-south": { "x": 268, "y": 144, "dir": "left", "lane": 2 },
49
+ "clean-meeting": { "x": 260, "y": 190, "dir": "left", "lane": 2 }
50
+ },
51
+ "stations": {
52
+ "research": { "kind": "target", "target": "archive" },
53
+ "create": { "kind": "seat" },
54
+ "compute": { "kind": "target", "target": "server" },
55
+ "plan": { "kind": "target", "target": "whiteboard" },
56
+ "communicate": { "kind": "target", "target": "phone" },
57
+ "collaborate": { "kind": "seat", "meetingTargets": ["meetA", "meetB"] },
58
+ "coffee": { "kind": "target", "target": "coffee" },
59
+ "water": { "kind": "target", "target": "water" }
60
+ },
61
+ "legacyActions": {
62
+ "type": "create",
63
+ "archive": "research",
64
+ "server": "compute",
65
+ "whiteboard": "plan",
66
+ "phone": "communicate",
67
+ "delegate": "collaborate",
68
+ "coffee": "coffee"
69
+ },
70
+ "furniture": {
71
+ "archive": { "x": 296, "y": 56, "w": 44, "h": 32 },
72
+ "server": { "x": 296, "y": 116, "w": 48, "h": 32 },
73
+ "coffee": { "x": 300, "y": 176, "w": 26, "h": 22 },
74
+ "water": { "x": 346, "y": 172, "w": 16, "h": 26 },
75
+ "phone": { "x": 348, "y": 40, "w": 32, "h": 14 },
76
+ "whiteboard": { "x": 116, "y": 8, "w": 72, "h": 26 },
77
+ "meeting": { "x": 120, "y": 176, "w": 112, "h": 26 }
78
+ },
79
+ "propInstances": [
80
+ { "id": "meeting-rug", "type": "rug", "x": 104, "y": 170 },
81
+ { "id": "entry-door", "type": "door", "x": 20, "y": 6 },
82
+ { "id": "window-1", "type": "window", "x": 208, "y": 8 },
83
+ { "id": "window-2", "type": "window", "x": 268, "y": 8 },
84
+ { "id": "whiteboard-main", "type": "whiteboard", "x": 116, "y": 8 },
85
+ { "id": "phone-main", "type": "phone-table", "x": 348, "y": 40 },
86
+ { "id": "archive-main", "type": "archive-cabinet", "x": 296, "y": 56 },
87
+ { "id": "server-main", "type": "server-rack", "x": 296, "y": 116 },
88
+ { "id": "coffee-main", "type": "coffee-machine", "x": 300, "y": 176 },
89
+ { "id": "water-main", "type": "water-cooler", "x": 346, "y": 172 },
90
+ { "id": "meeting-main", "type": "meeting-table", "x": 120, "y": 176 },
91
+ { "id": "plant-1", "type": "plant", "x": 16, "y": 200 },
92
+ { "id": "plant-2", "type": "plant", "x": 78, "y": 200 },
93
+ { "id": "plant-3", "type": "plant", "x": 374, "y": 200 }
94
+ ],
95
+ "npcSpawns": ["cleaner-entry"]
96
+ }
@@ -0,0 +1,154 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "layout",
4
+ "id": "builtin/old-school-office",
5
+ "name": "老派企业办公室布局",
6
+ "version": "1.0.0",
7
+ "engine": { "min": "0.2.0" },
8
+ "contract": "single-office-v1",
9
+ "canvas": { "width": 384, "height": 216 },
10
+ "wallHeight": 36,
11
+ "camera": { "mode": "fixed", "fit": "contain", "integerScale": true },
12
+ "zones": [
13
+ { "id": "staff", "name": "General Office", "x": 10, "y": 41, "width": 194, "height": 99 },
14
+ { "id": "manager", "name": "Manager Office", "x": 212, "y": 41, "width": 78, "height": 92 },
15
+ { "id": "meeting", "name": "Meeting Room", "x": 300, "y": 41, "width": 74, "height": 92 },
16
+ { "id": "records", "name": "Records Room", "x": 10, "y": 148, "width": 83, "height": 60 },
17
+ { "id": "computer", "name": "Computer Room", "x": 100, "y": 148, "width": 78, "height": 60 },
18
+ { "id": "reception", "name": "Reception", "x": 185, "y": 148, "width": 82, "height": 60 },
19
+ { "id": "break", "name": "Break Room", "x": 274, "y": 140, "width": 100, "height": 68 },
20
+ { "id": "circulation", "name": "Office Circulation", "x": 0, "y": 36, "width": 384, "height": 180 }
21
+ ],
22
+ "textSlots": [{"id":"company","name":"Company name / text logo","x":225,"y":10,"width":51,"height":10,"maxLength":24,"defaultText":""},{"id":"notice","name":"Notice","x":225,"y":21,"width":51,"height":10,"maxLength":48,"defaultText":""},{"id":"slogan","name":"Area slogan","x":193,"y":172,"width":56,"height":11,"maxLength":48,"defaultText":""}],
23
+ "placementSlots": [
24
+ {"id":"extra-1","zone":"circulation","x":215,"y":112,"accepts":["plant"],"maxSize":{"width":14,"height":22},"required":false},
25
+ {"id":"extra-2","zone":"circulation","x":304,"y":113,"accepts":["plant"],"maxSize":{"width":14,"height":22},"required":false},
26
+ {"id":"extra-3","zone":"circulation","x":252,"y":150,"accepts":["water-cooler","vending-machine"],"maxSize":{"width":18,"height":28},"required":false},
27
+ { "id": "manager-utility-1", "zone": "manager", "x": 280, "y": 103, "accepts": ["floor-fan", "coat-rack"], "maxSize": { "width": 18, "height": 29 }, "required": false, "occupiedBy": "manager-fan" },
28
+ { "id": "manager-utility-2", "zone": "circulation", "x": 294, "y": 104, "accepts": ["coat-rack", "floor-fan"], "maxSize": { "width": 18, "height": 29 }, "required": false, "occupiedBy": "coat-rack" },
29
+ { "id": "reception-service", "zone": "reception", "x": 190, "y": 166, "accepts": ["reception-desk", "sideboard"], "maxSize": { "width": 64, "height": 20 }, "required": false, "occupiedBy": "reception-main" },
30
+ { "id": "break-water", "zone": "break", "x": 280, "y": 170, "accepts": ["water-cooler", "vending-machine"], "maxSize": { "width": 18, "height": 28 }, "required": false, "occupiedBy": "water-main" },
31
+ { "id": "break-coffee", "zone": "break", "x": 320, "y": 150, "accepts": ["coffee-machine", "vending-machine"], "maxSize": { "width": 26, "height": 28 }, "required": false, "occupiedBy": "coffee-main" },
32
+ { "id": "break-vending", "zone": "break", "x": 352, "y": 174, "accepts": ["vending-machine", "water-cooler"], "maxSize": { "width": 18, "height": 28 }, "required": false, "occupiedBy": "vending-main" }
33
+ ],
34
+ "areas": [
35
+ { "id": "staff", "name": "综合办公区", "x": 13, "y": 42 },
36
+ { "id": "manager", "name": "主任室", "x": 215, "y": 42 },
37
+ { "id": "meeting", "name": "小会议室", "x": 303, "y": 100 },
38
+ { "id": "records", "name": "档案室", "x": 13, "y": 149 },
39
+ { "id": "computer", "name": "机房", "x": 103, "y": 149 },
40
+ { "id": "reception", "name": "行政前台", "x": 188, "y": 149 },
41
+ { "id": "break", "name": "茶水间", "x": 277, "y": 142 }
42
+ ],
43
+ "navigation": {
44
+ "lanes": [46, 94, 148, 204],
45
+ "connectors": [8, 75, 137, 204, 270, 376]
46
+ },
47
+ "seats": [
48
+ { "index": 0, "cx": 250, "renderer": "executive-seat", "desk": { "x": 216, "y": 79, "width": 69, "height": 18 }, "anchor": { "x": 250, "y": 100, "dir": "up", "lane": 1 } },
49
+ { "index": 1, "cx": 43, "renderer": "cubicle-workstation", "desk": { "x": 21, "y": 58, "width": 46, "height": 9 }, "anchor": { "x": 43, "y": 81, "dir": "up", "lane": 1 } },
50
+ { "index": 2, "cx": 105, "renderer": "cubicle-workstation", "desk": { "x": 83, "y": 58, "width": 46, "height": 9 }, "anchor": { "x": 105, "y": 81, "dir": "up", "lane": 1 } },
51
+ { "index": 3, "cx": 167, "renderer": "cubicle-workstation", "desk": { "x": 145, "y": 58, "width": 46, "height": 9 }, "anchor": { "x": 167, "y": 81, "dir": "up", "lane": 1 } },
52
+ { "index": 4, "cx": 43, "renderer": "cubicle-workstation", "desk": { "x": 21, "y": 116, "width": 46, "height": 9 }, "anchor": { "x": 43, "y": 139, "dir": "up", "lane": 2 } },
53
+ { "index": 5, "cx": 105, "renderer": "cubicle-workstation", "desk": { "x": 83, "y": 116, "width": 46, "height": 9 }, "anchor": { "x": 105, "y": 139, "dir": "up", "lane": 2 } },
54
+ { "index": 6, "cx": 167, "renderer": "cubicle-workstation", "desk": { "x": 145, "y": 116, "width": 46, "height": 9 }, "anchor": { "x": 167, "y": 139, "dir": "up", "lane": 2 } },
55
+ { "index": 7, "cx": 338, "renderer": "boardroom-seat", "desk": { "x": 331, "y": 75, "width": 15, "height": 10 }, "anchor": { "x": 338, "y": 103, "dir": "up", "lane": 1 } }
56
+ ],
57
+ "standingAnchors": [
58
+ { "x": 205, "y": 82, "dir": "left", "lane": 1, "zone": "circulation" },
59
+ { "x": 205, "y": 138, "dir": "left", "lane": 2, "zone": "circulation" },
60
+ { "x": 224, "y": 140, "dir": "right", "lane": 2, "zone": "circulation" },
61
+ { "x": 250, "y": 140, "dir": "left", "lane": 2, "zone": "circulation" },
62
+ { "x": 75, "y": 146, "dir": "down", "lane": 2, "zone": "circulation" },
63
+ { "x": 137, "y": 146, "dir": "down", "lane": 2, "zone": "circulation" },
64
+ { "x": 204, "y": 146, "dir": "down", "lane": 2, "zone": "circulation" },
65
+ { "x": 270, "y": 146, "dir": "down", "lane": 2, "zone": "circulation" }
66
+ ],
67
+ "targets": {
68
+ "staff-entry": {"x":8,"y":46,"dir":"down","lane":0},
69
+ "archive": { "x": 83, "y": 190, "dir": "left", "lane": 3 },
70
+ "server": { "x": 164, "y": 192, "dir": "up", "lane": 3 },
71
+ "whiteboard": { "x": 338, "y": 64, "dir": "up", "lane": 1 },
72
+ "phone": { "x": 252, "y": 190, "dir": "up", "lane": 3 },
73
+ "coffee": { "x": 332, "y": 178, "dir": "up", "lane": 3 },
74
+ "water": { "x": 292, "y": 192, "dir": "right", "lane": 3 },
75
+ "meetA": { "x": 318, "y": 118, "dir": "right", "lane": 1 },
76
+ "meetB": { "x": 358, "y": 118, "dir": "left", "lane": 1 },
77
+ "entry": { "x": 8, "y": 46, "dir": "down", "lane": 0 },
78
+ "reception": { "x": 220, "y": 192, "dir": "up", "lane": 3 },
79
+ "reception-phone": { "x": 238, "y": 192, "dir": "up", "lane": 3 },
80
+ "cleaner-entry": { "x": 8, "y": 140, "dir": "right", "lane": 2 },
81
+ "clean-north": { "x": 205, "y": 82, "dir": "left", "lane": 1 },
82
+ "clean-south": { "x": 205, "y": 138, "dir": "left", "lane": 2 },
83
+ "clean-meeting": { "x": 358, "y": 118, "dir": "left", "lane": 1 },
84
+ "check-fan": { "x": 286, "y": 130, "dir": "up", "lane": 1 },
85
+ "corridor-chat-a": { "x": 224, "y": 140, "dir": "right", "lane": 2 },
86
+ "corridor-chat-b": { "x": 250, "y": 140, "dir": "left", "lane": 2 }
87
+ },
88
+ "stations": {
89
+ "research": { "kind": "target", "target": "archive" },
90
+ "create": { "kind": "seat" },
91
+ "compute": { "kind": "target", "target": "server" },
92
+ "plan": { "kind": "target", "target": "whiteboard" },
93
+ "communicate": { "kind": "target", "target": "phone" },
94
+ "collaborate": { "kind": "seat", "meetingTargets": ["meetA", "meetB"] },
95
+ "coffee": { "kind": "target", "target": "coffee" },
96
+ "water": { "kind": "target", "target": "water" }
97
+ },
98
+ "legacyActions": {
99
+ "type": "create",
100
+ "archive": "research",
101
+ "server": "compute",
102
+ "whiteboard": "plan",
103
+ "phone": "communicate",
104
+ "delegate": "collaborate",
105
+ "coffee": "coffee"
106
+ },
107
+ "furniture": {
108
+ "archive": { "x": 16, "y": 157, "w": 40, "h": 31 },
109
+ "server": { "x": 108, "y": 156, "w": 48, "h": 38 },
110
+ "coffee": { "x": 320, "y": 150, "w": 26, "h": 22 },
111
+ "water": { "x": 280, "y": 170, "w": 16, "h": 26 },
112
+ "phone": { "x": 190, "y": 166, "w": 64, "h": 20 },
113
+ "whiteboard": { "x": 310, "y": 46, "w": 58, "h": 16 },
114
+ "meeting": { "x": 309, "y": 70, "w": 60, "h": 26 }
115
+ },
116
+ "propInstances": [
117
+ { "id": "cubicle-rug", "type": "rug", "x": 10, "y": 41, "width": 194, "height": 99 },
118
+ { "id": "manager-rug", "type": "rug", "x": 212, "y": 41, "width": 78, "height": 92 },
119
+ { "id": "conference-rug", "type": "rug", "x": 300, "y": 41, "width": 74, "height": 92 },
120
+ { "id": "records-rug", "type": "rug", "x": 10, "y": 148, "width": 83, "height": 60 },
121
+ { "id": "computer-rug", "type": "rug", "x": 100, "y": 148, "width": 78, "height": 60 },
122
+ { "id": "reception-rug", "type": "rug", "x": 185, "y": 148, "width": 82, "height": 60 },
123
+ { "id": "break-rug", "type": "rug", "x": 274, "y": 140, "width": 100, "height": 68 },
124
+ { "id": "entry-door", "type": "door", "x": 2, "y": 6, "width": 24, "height": 30 },
125
+ { "id": "blind-window-1", "type": "venetian-window", "x": 34, "y": 8 },
126
+ { "id": "blind-window-2", "type": "venetian-window", "x": 97, "y": 8 },
127
+ { "id": "blind-window-3", "type": "venetian-window", "x": 160, "y": 8 },
128
+ { "id": "blind-window-5", "type": "venetian-window", "x": 286, "y": 8 },
129
+ { "id": "honor-board", "type": "notice-board", "x": 223, "y": 8 },
130
+ { "id": "wall-clock", "type": "office-clock", "x": 364, "y": 10 },
131
+ { "id": "wall-calendar", "type": "wall-calendar", "x": 290, "y": 43 },
132
+ { "id": "cubicle-1", "type": "cubicle-cell", "x": 16, "y": 52 },
133
+ { "id": "cubicle-2", "type": "cubicle-cell", "x": 78, "y": 52 },
134
+ { "id": "cubicle-3", "type": "cubicle-cell", "x": 140, "y": 52 },
135
+ { "id": "cubicle-4", "type": "cubicle-cell", "x": 16, "y": 100, "height": 39 },
136
+ { "id": "cubicle-5", "type": "cubicle-cell", "x": 78, "y": 100, "height": 39 },
137
+ { "id": "cubicle-6", "type": "cubicle-cell", "x": 140, "y": 100, "height": 39 },
138
+ { "id": "manager-desk", "type": "executive-desk", "x": 216, "y": 70, "seatIndex": 0 },
139
+ { "id": "manager-fan", "type": "floor-fan", "x": 280, "y": 103 },
140
+ { "id": "coat-rack", "type": "coat-rack", "x": 294, "y": 104 },
141
+ { "id": "conference-board", "type": "whiteboard", "x": 310, "y": 46, "width": 58, "height": 16 },
142
+ { "id": "meeting-main", "type": "meeting-table", "x": 309, "y": 70, "width": 60, "height": 26 },
143
+ { "id": "archive-1", "type": "archive-cabinet", "x": 16, "y": 157, "width": 12, "height": 31 },
144
+ { "id": "archive-2", "type": "archive-cabinet", "x": 30, "y": 157, "width": 12, "height": 31 },
145
+ { "id": "archive-3", "type": "archive-cabinet", "x": 44, "y": 157, "width": 12, "height": 31 },
146
+ { "id": "copy-main", "type": "copy-station", "x": 61, "y": 157 },
147
+ { "id": "server-main", "type": "server-rack", "x": 108, "y": 156, "width": 48, "height": 38 },
148
+ { "id": "reception-main", "type": "reception-desk", "x": 190, "y": 166 },
149
+ { "id": "water-main", "type": "water-cooler", "x": 280, "y": 170 },
150
+ { "id": "coffee-main", "type": "coffee-machine", "x": 320, "y": 150 },
151
+ { "id": "vending-main", "type": "vending-machine", "x": 352, "y": 174 }
152
+ ],
153
+ "npcSpawns": ["staff-entry", "reception", "cleaner-entry"]
154
+ }
@@ -0,0 +1,132 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "layout",
4
+ "id": "builtin/tech-open-office",
5
+ "name": "Tech 开放式办公室布局",
6
+ "version": "1.0.0",
7
+ "engine": { "min": "0.2.0" },
8
+ "contract": "single-office-v1",
9
+ "canvas": { "width": 384, "height": 216 },
10
+ "wallHeight": 36,
11
+ "camera": { "mode": "fixed", "fit": "contain", "integerScale": true },
12
+ "zones": [
13
+ { "id": "entry-service", "name": "Entry & Service", "x": 0, "y": 36, "width": 104, "height": 24 },
14
+ { "id": "work-north", "name": "North Work Area", "x": 12, "y": 56, "width": 260, "height": 46 },
15
+ { "id": "work-south", "name": "South Work Area", "x": 12, "y": 112, "width": 260, "height": 48 },
16
+ { "id": "operations", "name": "Operations", "x": 288, "y": 36, "width": 84, "height": 130 },
17
+ { "id": "lounge", "name": "Lounge", "x": 80, "y": 168, "width": 208, "height": 48 },
18
+ { "id": "executive", "name": "Executive Corner", "x": 332, "y": 70, "width": 40, "height": 72 },
19
+ { "id": "decoration", "name": "Decoration Edge", "x": 0, "y": 192, "width": 384, "height": 24 },
20
+ { "id": "circulation", "name": "Office Circulation", "x": 0, "y": 36, "width": 384, "height": 180 }
21
+ ],
22
+ "textSlots": [{"id":"company","name":"Company name / text logo","x":119,"y":11,"width":64,"height":11,"maxLength":24,"defaultText":""},{"id":"notice","name":"Notice","x":119,"y":23,"width":64,"height":10,"maxLength":48,"defaultText":""},{"id":"slogan","name":"Area slogan","x":120,"y":161,"width":112,"height":11,"maxLength":48,"defaultText":""}],
23
+ "placementSlots": [
24
+ {"id":"extra-1","zone":"circulation","x":40,"y":177,"accepts":["plant"],"maxSize":{"width":14,"height":22},"required":false},
25
+ {"id":"extra-2","zone":"circulation","x":62,"y":177,"accepts":["plant"],"maxSize":{"width":14,"height":22},"required":false},
26
+ {"id":"extra-3","zone":"circulation","x":330,"y":176,"accepts":["water-cooler","vending-machine"],"maxSize":{"width":18,"height":28},"required":false},
27
+ { "id": "lounge-fitness-1", "zone": "lounge", "x": 88, "y": 179, "accepts": ["dumbbell"], "maxSize": { "width": 16, "height": 7 }, "required": false, "occupiedBy": "dumbbell-1" },
28
+ { "id": "lounge-fitness-2", "zone": "lounge", "x": 92, "y": 190, "accepts": ["dumbbell"], "maxSize": { "width": 16, "height": 7 }, "required": false, "occupiedBy": "dumbbell-2" },
29
+ { "id": "lounge-service-1", "zone": "lounge", "x": 252, "y": 174, "accepts": ["water-cooler", "vending-machine"], "maxSize": { "width": 18, "height": 28 }, "required": false, "occupiedBy": "water-main" },
30
+ { "id": "edge-decoration-left", "zone": "decoration", "x": 16, "y": 200, "accepts": ["plant"], "maxSize": { "width": 14, "height": 22 }, "required": false, "occupiedBy": "plant-1" },
31
+ { "id": "edge-decoration-middle", "zone": "decoration", "x": 78, "y": 200, "accepts": ["plant"], "maxSize": { "width": 14, "height": 22 }, "required": false, "occupiedBy": "plant-2" },
32
+ { "id": "edge-decoration-right", "zone": "decoration", "x": 366, "y": 200, "accepts": ["plant"], "maxSize": { "width": 14, "height": 22 }, "required": false, "occupiedBy": "plant-3" }
33
+ ],
34
+ "navigation": {
35
+ "lanes": [46, 100, 162],
36
+ "connectors": [76, 140, 204, 276]
37
+ },
38
+ "seats": [
39
+ { "index": 0, "cx": 44, "desk": { "x": 20, "y": 58, "width": 48, "height": 16 }, "anchor": { "x": 44, "y": 84, "dir": "up", "lane": 1 } },
40
+ { "index": 1, "cx": 108, "desk": { "x": 84, "y": 58, "width": 48, "height": 16 }, "anchor": { "x": 108, "y": 84, "dir": "up", "lane": 1 } },
41
+ { "index": 2, "cx": 172, "desk": { "x": 148, "y": 58, "width": 48, "height": 16 }, "anchor": { "x": 172, "y": 84, "dir": "up", "lane": 1 } },
42
+ { "index": 3, "cx": 236, "desk": { "x": 212, "y": 58, "width": 48, "height": 16 }, "anchor": { "x": 236, "y": 84, "dir": "up", "lane": 1 } },
43
+ { "index": 4, "cx": 44, "desk": { "x": 20, "y": 118, "width": 48, "height": 16 }, "anchor": { "x": 44, "y": 144, "dir": "up", "lane": 2 } },
44
+ { "index": 5, "cx": 108, "desk": { "x": 84, "y": 118, "width": 48, "height": 16 }, "anchor": { "x": 108, "y": 144, "dir": "up", "lane": 2 } },
45
+ { "index": 6, "cx": 172, "desk": { "x": 148, "y": 118, "width": 48, "height": 16 }, "anchor": { "x": 172, "y": 144, "dir": "up", "lane": 2 } },
46
+ { "index": 7, "cx": 236, "desk": { "x": 212, "y": 118, "width": 48, "height": 16 }, "anchor": { "x": 236, "y": 144, "dir": "up", "lane": 2 } }
47
+ ],
48
+ "standingAnchors": [
49
+ { "x": 278, "y": 92, "dir": "left", "lane": 1, "zone": "circulation" },
50
+ { "x": 278, "y": 152, "dir": "left", "lane": 2, "zone": "circulation" },
51
+ { "x": 92, "y": 164, "dir": "down", "lane": 2, "zone": "circulation" },
52
+ { "x": 242, "y": 164, "dir": "down", "lane": 2, "zone": "circulation" },
53
+ { "x": 214, "y": 46, "dir": "down", "lane": 0, "zone": "circulation" },
54
+ { "x": 246, "y": 46, "dir": "down", "lane": 0, "zone": "circulation" },
55
+ { "x": 278, "y": 46, "dir": "down", "lane": 0, "zone": "circulation" },
56
+ { "x": 310, "y": 46, "dir": "down", "lane": 0, "zone": "circulation" }
57
+ ],
58
+ "targets": {
59
+ "staff-entry": {"x":38,"y":46,"dir":"down","lane":0},
60
+ "archive": { "x": 318, "y": 100, "dir": "up", "lane": 1 },
61
+ "server": { "x": 320, "y": 158, "dir": "up", "lane": 2 },
62
+ "whiteboard": { "x": 152, "y": 46, "dir": "up", "lane": 0 },
63
+ "phone": { "x": 364, "y": 64, "dir": "up", "lane": 1 },
64
+ "coffee": { "x": 290, "y": 188, "dir": "right", "lane": 2 },
65
+ "meetA": { "x": 108, "y": 190, "dir": "right", "lane": 2 },
66
+ "meetB": { "x": 270, "y": 190, "dir": "left", "lane": 2 },
67
+ "entry": { "x": 38, "y": 46, "dir": "down", "lane": 0 },
68
+ "boss-seat": { "x": 360, "y": 104, "dir": "up", "lane": 1 },
69
+ "restroom": { "x": 88, "y": 46, "dir": "up", "lane": 0 },
70
+ "water": { "x": 264, "y": 194, "dir": "left", "lane": 2 },
71
+ "phone-break": { "x": 218, "y": 208, "dir": "down", "lane": 2 },
72
+ "chat-a": { "x": 140, "y": 208, "dir": "right", "lane": 2 },
73
+ "chat-b": { "x": 172, "y": 208, "dir": "left", "lane": 2 },
74
+ "walk-outside-a": { "x": -10, "y": 46, "dir": "left", "lane": 0 },
75
+ "walk-outside-b": { "x": -18, "y": 46, "dir": "left", "lane": 0 },
76
+ "cleaner-entry": { "x": 376, "y": 162, "dir": "left", "lane": 2 },
77
+ "clean-desks-north": { "x": 276, "y": 92, "dir": "left", "lane": 1 },
78
+ "clean-desks-south": { "x": 276, "y": 152, "dir": "left", "lane": 2 },
79
+ "clean-lounge": { "x": 238, "y": 208, "dir": "left", "lane": 2 },
80
+ "plant-left": { "x": 28, "y": 202, "dir": "left", "lane": 2 },
81
+ "plant-middle": { "x": 90, "y": 202, "dir": "left", "lane": 2 },
82
+ "plant-right": { "x": 354, "y": 202, "dir": "right", "lane": 2 }
83
+ },
84
+ "stations": {
85
+ "research": { "kind": "target", "target": "archive" },
86
+ "create": { "kind": "seat" },
87
+ "compute": { "kind": "target", "target": "server" },
88
+ "plan": { "kind": "target", "target": "whiteboard" },
89
+ "communicate": { "kind": "target", "target": "phone" },
90
+ "collaborate": { "kind": "seat", "meetingTargets": ["meetA", "meetB"] },
91
+ "coffee": { "kind": "target", "target": "coffee" }
92
+ },
93
+ "legacyActions": {
94
+ "type": "create",
95
+ "archive": "research",
96
+ "server": "compute",
97
+ "whiteboard": "plan",
98
+ "phone": "communicate",
99
+ "delegate": "collaborate",
100
+ "coffee": "coffee"
101
+ },
102
+ "furniture": {
103
+ "archive": { "x": 296, "y": 56, "w": 44, "h": 32 },
104
+ "server": { "x": 296, "y": 116, "w": 48, "h": 32 },
105
+ "coffee": { "x": 300, "y": 176, "w": 26, "h": 22 },
106
+ "phone": { "x": 348, "y": 40, "w": 32, "h": 14 },
107
+ "whiteboard": { "x": 116, "y": 8, "w": 72, "h": 26 },
108
+ "meeting": { "x": 120, "y": 176, "w": 112, "h": 26 }
109
+ },
110
+ "propInstances": [
111
+ { "id": "meeting-rug", "type": "rug", "x": 104, "y": 170 },
112
+ { "id": "entry-door", "type": "door", "x": 20, "y": 6 },
113
+ { "id": "restroom-door", "type": "restroom-door", "x": 74, "y": 6 },
114
+ { "id": "wall-clock", "type": "office-clock", "x": 356, "y": 10 },
115
+ { "id": "window-1", "type": "window", "x": 208, "y": 8 },
116
+ { "id": "window-2", "type": "window", "x": 268, "y": 8 },
117
+ { "id": "whiteboard-main", "type": "whiteboard", "x": 116, "y": 8 },
118
+ { "id": "phone-main", "type": "phone-table", "x": 348, "y": 40 },
119
+ { "id": "archive-main", "type": "archive-cabinet", "x": 296, "y": 56 },
120
+ { "id": "server-main", "type": "server-rack", "x": 296, "y": 116 },
121
+ { "id": "coffee-main", "type": "coffee-machine", "x": 300, "y": 176 },
122
+ { "id": "meeting-main", "type": "lounge-sofa", "x": 120, "y": 176 },
123
+ { "id": "dumbbell-1", "type": "dumbbell", "x": 88, "y": 179 },
124
+ { "id": "dumbbell-2", "type": "dumbbell", "x": 92, "y": 190, "orientation": "vertical" },
125
+ { "id": "water-main", "type": "water-cooler", "x": 252, "y": 174 },
126
+ { "id": "boss-desk", "type": "boss-desk", "x": 343, "y": 78 },
127
+ { "id": "plant-1", "type": "plant", "x": 16, "y": 200 },
128
+ { "id": "plant-2", "type": "plant", "x": 78, "y": 200 },
129
+ { "id": "plant-3", "type": "plant", "x": 366, "y": 200 }
130
+ ],
131
+ "npcSpawns": ["staff-entry", "boss-seat", "cleaner-entry"]
132
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "life-activities",
4
+ "id": "builtin/boardroom-routines",
5
+ "name": "大会议室日常",
6
+ "version": "1.0.0",
7
+ "engine": { "min": "0.2.0" },
8
+ "contract": "single-office-v1",
9
+ "entries": [
10
+ {
11
+ "id": "boss-briefing",
12
+ "name": "老板主持会议",
13
+ "participant": { "kind": "npc", "roles": ["boss"] },
14
+ "requires": [{ "capability": "plan" }],
15
+ "interruptible": false,
16
+ "initialDelayMs": [500, 900],
17
+ "cooldownMs": [9000, 14000],
18
+ "steps": [
19
+ { "target": "boss-seat", "durationMs": 4800, "pose": "talk", "bubble": "先看今天的重点" },
20
+ { "target": "boss-seat", "durationMs": 3200, "pose": "talk", "bubble": "这里需要重点推进", "hot": "whiteboard" },
21
+ { "target": "boss-seat", "durationMs": 3800, "pose": "talk", "bubble": "负责人按节点同步" }
22
+ ]
23
+ },
24
+ {
25
+ "id": "get-water",
26
+ "name": "接水",
27
+ "participant": { "kind": "agent", "states": ["idle"] },
28
+ "requires": [{ "capability": "water" }],
29
+ "onlyWhenSessionIdle": true,
30
+ "interruptible": true,
31
+ "startBubble": "去接杯水",
32
+ "initialDelayMs": [5500, 8500],
33
+ "cooldownMs": [25000, 40000],
34
+ "steps": [
35
+ { "target": "water", "durationMs": 2800, "pose": "stand", "bubble": "喝口水继续", "hot": "water" }
36
+ ]
37
+ },
38
+ {
39
+ "id": "briefing-support",
40
+ "name": "会前资料",
41
+ "participant": { "kind": "npc", "roles": ["secretary"] },
42
+ "requires": [{ "capability": "research" }],
43
+ "interruptible": false,
44
+ "initialDelayMs": [800, 1400],
45
+ "cooldownMs": [5000, 7600],
46
+ "steps": [
47
+ { "target": "decision-wall", "durationMs": 2200, "pose": "reach", "bubble": "更新议程", "particle": "paper" },
48
+ { "target": "table-service-left", "durationMs": 2300, "pose": "reach", "bubble": "资料放桌上了" },
49
+ { "target": "secretary-entry", "durationMs": 1800, "pose": "stand" }
50
+ ]
51
+ },
52
+ {
53
+ "id": "refreshment-round",
54
+ "name": "茶水服务",
55
+ "participant": { "kind": "npc", "roles": ["attendant"] },
56
+ "requires": [{ "capability": "coffee" }],
57
+ "interruptible": false,
58
+ "initialDelayMs": [1300, 1900],
59
+ "cooldownMs": [4800, 7200],
60
+ "steps": [
61
+ { "target": "coffee", "durationMs": 1800, "pose": "reach", "bubble": "补充咖啡", "hot": "coffee" },
62
+ { "target": "table-service-right", "durationMs": 2400, "pose": "reach", "bubble": "请用茶" },
63
+ { "target": "service-entry", "durationMs": 1800, "pose": "stand" }
64
+ ]
65
+ }
66
+ ]
67
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "life-activities",
4
+ "id": "builtin/no-life-activities",
5
+ "name": "不启用办公室生活",
6
+ "version": "1.0.0",
7
+ "engine": { "min": "0.2.0" },
8
+ "contract": "single-office-v1",
9
+ "entries": []
10
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "life-activities",
4
+ "id": "builtin/office-basics",
5
+ "name": "基础办公室生活",
6
+ "version": "1.0.0",
7
+ "engine": { "min": "0.2.0" },
8
+ "contract": "single-office-v1",
9
+ "entries": [
10
+ {
11
+ "id": "get-water",
12
+ "name": "接水",
13
+ "participant": { "kind": "agent", "states": ["idle"] },
14
+ "requires": [{ "capability": "water" }],
15
+ "onlyWhenSessionIdle": true,
16
+ "interruptible": true,
17
+ "startBubble": "去接杯水",
18
+ "initialDelayMs": [4500, 7500],
19
+ "cooldownMs": [22000, 36000],
20
+ "steps": [
21
+ { "target": "water", "durationMs": 3200, "pose": "stand", "bubble": "接杯水,歇一下", "hot": "water" }
22
+ ]
23
+ },
24
+ {
25
+ "id": "cleaning-round",
26
+ "name": "清洁巡检",
27
+ "participant": { "kind": "npc", "roles": ["cleaner"] },
28
+ "requires": [],
29
+ "interruptible": false,
30
+ "initialDelayMs": [700, 1200],
31
+ "cooldownMs": [3500, 6000],
32
+ "steps": [
33
+ { "target": "clean-north", "durationMs": 2300, "pose": "reach", "bubble": "擦擦桌面", "particle": "spark" },
34
+ { "target": "clean-south", "durationMs": 2600, "pose": "reach", "bubble": "这边也收拾一下", "particle": "spark" },
35
+ { "target": "clean-meeting", "durationMs": 2200, "pose": "reach", "bubble": "会议区整理好啦", "particle": "spark" }
36
+ ]
37
+ }
38
+ ]
39
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "life-activities",
4
+ "id": "builtin/old-school-routines",
5
+ "name": "老派办公室日常",
6
+ "version": "1.0.0",
7
+ "engine": { "min": "0.2.0" },
8
+ "contract": "single-office-v1",
9
+ "entries": [
10
+ {
11
+ "id": "corridor-chat",
12
+ "name": "走廊聊两句",
13
+ "participant": { "kind": "agent", "states": ["idle", "waiting", "done"], "minAgents": 2 },
14
+ "requires": [],
15
+ "onlyWhenSessionIdle": true,
16
+ "interruptible": true,
17
+ "startBubble": "出去聊两句?",
18
+ "initialDelayMs": [8000, 12000],
19
+ "cooldownMs": [36000, 56000],
20
+ "steps": [
21
+ {
22
+ "target": "corridor-chat-a",
23
+ "targets": ["corridor-chat-a", "corridor-chat-b"],
24
+ "durationMs": 4800,
25
+ "pose": "talk",
26
+ "bubbles": ["这个文件你看了吗?", "刚送过来,正准备看"]
27
+ }
28
+ ]
29
+ },
30
+ {
31
+ "id": "get-water",
32
+ "name": "泡茶",
33
+ "participant": { "kind": "agent", "states": ["idle"] },
34
+ "requires": [{ "capability": "water" }],
35
+ "onlyWhenSessionIdle": true,
36
+ "interruptible": true,
37
+ "startBubble": "泡杯茶",
38
+ "initialDelayMs": [5000, 8000],
39
+ "cooldownMs": [24000, 38000],
40
+ "steps": [
41
+ { "target": "water", "durationMs": 3000, "pose": "stand", "bubble": "茶缸续上水", "hot": "water" }
42
+ ]
43
+ },
44
+ {
45
+ "id": "paperwork-round",
46
+ "name": "文件流转",
47
+ "participant": { "kind": "npc", "roles": ["receptionist"] },
48
+ "requires": [{ "capability": "research" }],
49
+ "interruptible": false,
50
+ "initialDelayMs": [900, 1500],
51
+ "cooldownMs": [5200, 7600],
52
+ "steps": [
53
+ { "target": "reception-phone", "durationMs": 2100, "pose": "talk", "bubble": "喂,这里是办公室" },
54
+ { "target": "archive", "durationMs": 2300, "pose": "reach", "bubble": "复印归档", "hot": "archive", "particle": "paper" },
55
+ { "target": "reception", "durationMs": 2600, "pose": "reach", "bubble": "盖章登记好了", "particle": "paper" }
56
+ ]
57
+ },
58
+ {
59
+ "id": "facility-round",
60
+ "name": "后勤巡检",
61
+ "participant": { "kind": "npc", "roles": ["cleaner"] },
62
+ "requires": [],
63
+ "interruptible": false,
64
+ "initialDelayMs": [1200, 1800],
65
+ "cooldownMs": [4800, 7000],
66
+ "steps": [
67
+ { "target": "clean-north", "durationMs": 2100, "pose": "reach", "bubble": "看看格子间", "particle": "spark" },
68
+ { "target": "clean-south", "durationMs": 2200, "pose": "reach", "bubble": "整理一下" },
69
+ { "target": "check-fan", "durationMs": 1900, "pose": "reach", "bubble": "风扇别忘了关" },
70
+ { "target": "clean-meeting", "durationMs": 2100, "pose": "reach", "bubble": "会议室收好了" }
71
+ ]
72
+ }
73
+ ]
74
+ }