@lovelace_lol/polymer 0.0.7 → 0.0.8
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/README.md +434 -12
- package/dist/index.d.ts +1945 -244
- package/dist/index.js +1686 -1017
- package/dist/vision/face-worker.js +296 -0
- package/dist/vision/face_landmarker.task +0 -0
- package/dist/vision/manifest.edn +1 -0
- package/dist/vision/vision_bundle.js +2 -0
- package/dist/vision/wasm/vision_wasm_internal.js +8841 -0
- package/dist/vision/wasm/vision_wasm_internal.wasm +0 -0
- package/dist/vision/wasm/vision_wasm_module_internal.js +8837 -0
- package/dist/vision/wasm/vision_wasm_module_internal.wasm +0 -0
- package/dist/vision/wasm/vision_wasm_nosimd_internal.js +8832 -0
- package/dist/vision/wasm/vision_wasm_nosimd_internal.wasm +0 -0
- package/dist/worker/agency-worker.js +1276 -962
- package/dist/worker/manifest.edn +1 -1
- package/package.json +33 -20
- package/dist/test.cjs +0 -1519
- package/shadow-cljs.edn +0 -173
- package/src/polymer/animation/agency.cljs +0 -84
- package/src/polymer/animation/domain.cljs +0 -110
- package/src/polymer/animation/planner.cljs +0 -88
- package/src/polymer/animation/runtime.cljs +0 -137
- package/src/polymer/animation/scheduler.cljs +0 -178
- package/src/polymer/animation/service.cljs +0 -981
- package/src/polymer/animation/state.cljs +0 -112
- package/src/polymer/blink/agency.cljs +0 -131
- package/src/polymer/blink/planner.cljs +0 -115
- package/src/polymer/blink/scheduler.cljs +0 -90
- package/src/polymer/blink/snippet.cljs +0 -50
- package/src/polymer/blink/state.cljs +0 -102
- package/src/polymer/camera_context/agency.cljs +0 -132
- package/src/polymer/camera_context/domain.cljs +0 -186
- package/src/polymer/camera_context/planner.cljs +0 -50
- package/src/polymer/camera_context/scheduler.cljs +0 -113
- package/src/polymer/camera_context/state.cljs +0 -121
- package/src/polymer/character.cljs +0 -403
- package/src/polymer/conversation/agency.cljs +0 -83
- package/src/polymer/conversation/domain.cljs +0 -35
- package/src/polymer/conversation/effector.cljs +0 -130
- package/src/polymer/conversation/planner.cljs +0 -178
- package/src/polymer/conversation/scheduler.cljs +0 -202
- package/src/polymer/conversation/service.cljs +0 -329
- package/src/polymer/conversation/state.cljs +0 -186
- package/src/polymer/core.cljs +0 -172
- package/src/polymer/eye_head/agency.cljs +0 -75
- package/src/polymer/eye_head/domain.cljs +0 -133
- package/src/polymer/eye_head/goap.cljs +0 -106
- package/src/polymer/eye_head/scheduler.cljs +0 -176
- package/src/polymer/eye_head/service.cljs +0 -259
- package/src/polymer/eye_head/snippet.cljs +0 -92
- package/src/polymer/eye_head/state.cljs +0 -167
- package/src/polymer/gaze/agency.cljs +0 -85
- package/src/polymer/gaze/domain.cljs +0 -211
- package/src/polymer/gaze/goap.cljs +0 -208
- package/src/polymer/gaze/scheduler.cljs +0 -184
- package/src/polymer/gaze/state.cljs +0 -202
- package/src/polymer/gesture/agency.cljs +0 -185
- package/src/polymer/gesture/goap.cljs +0 -461
- package/src/polymer/gesture/scheduler.cljs +0 -122
- package/src/polymer/gesture/snippet.cljs +0 -198
- package/src/polymer/gesture/state.cljs +0 -273
- package/src/polymer/lipsync/agency.cljs +0 -593
- package/src/polymer/lipsync/articulation/jaw.cljs +0 -258
- package/src/polymer/lipsync/articulation/snippet.cljs +0 -605
- package/src/polymer/lipsync/articulation/tongue.cljs +0 -418
- package/src/polymer/lipsync/articulation/visemes.cljs +0 -429
- package/src/polymer/lipsync/goap.cljs +0 -132
- package/src/polymer/lipsync/pronunciation/effector.cljs +0 -51
- package/src/polymer/lipsync/scheduler.cljs +0 -302
- package/src/polymer/lipsync/state.cljs +0 -202
- package/src/polymer/nlp/phonemes.cljs +0 -164
- package/src/polymer/prosodic/agency.cljs +0 -196
- package/src/polymer/prosodic/goap.cljs +0 -122
- package/src/polymer/prosodic/scheduler.cljs +0 -99
- package/src/polymer/prosodic/snippet.cljs +0 -106
- package/src/polymer/prosodic/state.cljs +0 -139
- package/src/polymer/runtime/embody.cljs +0 -117
- package/src/polymer/runtime/embody_wasm.cljs +0 -177
- package/src/polymer/runtime/rust_embody_host.cljs +0 -647
- package/src/polymer/society.cljs +0 -253
- package/src/polymer/stream.cljs +0 -130
- package/src/polymer/transcription/agency.cljs +0 -69
- package/src/polymer/transcription/domain.cljs +0 -68
- package/src/polymer/transcription/effector.cljs +0 -611
- package/src/polymer/transcription/planner.cljs +0 -203
- package/src/polymer/transcription/scheduler.cljs +0 -225
- package/src/polymer/transcription/service.cljs +0 -209
- package/src/polymer/transcription/state.cljs +0 -239
- package/src/polymer/tts/agency.cljs +0 -503
- package/src/polymer/tts/azure.cljs +0 -290
- package/src/polymer/tts/planner.cljs +0 -178
- package/src/polymer/tts/runtime.cljs +0 -624
- package/src/polymer/tts/scheduler.cljs +0 -162
- package/src/polymer/tts/state.cljs +0 -191
- package/src/polymer/worker.cljs +0 -81
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
(ns polymer.animation.scheduler
|
|
2
|
-
(:require [polymer.animation.domain :as domain]
|
|
3
|
-
[polymer.animation.runtime :as runtime]
|
|
4
|
-
[polymer.animation.state :as state]))
|
|
5
|
-
|
|
6
|
-
;; The scheduler owns Animation's ordered work queue and runtime handle
|
|
7
|
-
;; lifecycle. Other agencies request animation as plain data; only this
|
|
8
|
-
;; scheduler decides when to schedule, replace, cancel, seek, or update a
|
|
9
|
-
;; runtime clip.
|
|
10
|
-
|
|
11
|
-
(def default-cleanup-buffer-ms 50)
|
|
12
|
-
|
|
13
|
-
(defn create-scheduler [{:keys [runtime state-atom emit-event disposed? debug-log! cleanup-buffer-ms]
|
|
14
|
-
:or {cleanup-buffer-ms default-cleanup-buffer-ms
|
|
15
|
-
debug-log! (fn [_label _payload] nil)}}]
|
|
16
|
-
(let [cleanup-timers (atom {})
|
|
17
|
-
handles (atom {})
|
|
18
|
-
generation (atom 0)
|
|
19
|
-
queue (atom [])
|
|
20
|
-
draining? (atom false)]
|
|
21
|
-
(letfn [(next-token! []
|
|
22
|
-
(swap! generation inc))
|
|
23
|
-
|
|
24
|
-
(handle-for [name]
|
|
25
|
-
(:handle (get @handles name)))
|
|
26
|
-
|
|
27
|
-
(current-token? [name token]
|
|
28
|
-
(= token (:token (get @handles name))))
|
|
29
|
-
|
|
30
|
-
(clear-cleanup! [name]
|
|
31
|
-
(when-let [entry (get @cleanup-timers name)]
|
|
32
|
-
(js/clearTimeout (:timer entry))
|
|
33
|
-
(swap! cleanup-timers dissoc name)))
|
|
34
|
-
|
|
35
|
-
(clear-all-cleanups! []
|
|
36
|
-
(doseq [[_ entry] @cleanup-timers]
|
|
37
|
-
(js/clearTimeout (:timer entry)))
|
|
38
|
-
(reset! cleanup-timers {}))
|
|
39
|
-
|
|
40
|
-
(emit-error! [message]
|
|
41
|
-
(emit-event {:type "error"
|
|
42
|
-
:agency "animation"
|
|
43
|
-
:message message}))
|
|
44
|
-
|
|
45
|
-
(cleanup-runtime! [name]
|
|
46
|
-
(let [handle (handle-for name)]
|
|
47
|
-
(runtime/cleanup-snippet! runtime handle name))
|
|
48
|
-
(swap! handles dissoc name))
|
|
49
|
-
|
|
50
|
-
(emit-remove! [name source-agency reason]
|
|
51
|
-
(when (and (not @disposed?)
|
|
52
|
-
(get-in @state-atom [:scheduled name]))
|
|
53
|
-
(clear-cleanup! name)
|
|
54
|
-
(cleanup-runtime! name)
|
|
55
|
-
(let [removed-at (state/now-ms)]
|
|
56
|
-
(swap! state-atom state/record-remove name source-agency removed-at reason)
|
|
57
|
-
(emit-event {:type "animationSnippetRemoved"
|
|
58
|
-
:agency "animation"
|
|
59
|
-
:sourceAgency source-agency
|
|
60
|
-
:reason reason
|
|
61
|
-
:name name
|
|
62
|
-
:removedAt removed-at}))))
|
|
63
|
-
|
|
64
|
-
(emit-remove-if-current! [name source-agency reason token]
|
|
65
|
-
;; Runtime handles may resolve after a replacement. The token
|
|
66
|
-
;; prevents an old completion callback from removing the newer
|
|
67
|
-
;; snippet that reused the same name.
|
|
68
|
-
(when (current-token? name token)
|
|
69
|
-
(emit-remove! name source-agency reason)))
|
|
70
|
-
|
|
71
|
-
(schedule-cleanup! [name snippet source-agency handle token]
|
|
72
|
-
(clear-cleanup! name)
|
|
73
|
-
(when-let [finished (aget handle "finished")]
|
|
74
|
-
(when (runtime/js-callable? (aget finished "then"))
|
|
75
|
-
(.then finished
|
|
76
|
-
#(emit-remove-if-current! name source-agency "completed" token)
|
|
77
|
-
(fn [_error] nil))))
|
|
78
|
-
(when (not (:loop snippet))
|
|
79
|
-
(when-let [duration-ms (state/snippet-duration-ms snippet)]
|
|
80
|
-
(when (pos? duration-ms)
|
|
81
|
-
(let [timer (js/setTimeout
|
|
82
|
-
#(emit-remove-if-current! name source-agency "completed" token)
|
|
83
|
-
(+ duration-ms cleanup-buffer-ms))]
|
|
84
|
-
(swap! cleanup-timers assoc name {:timer timer
|
|
85
|
-
:token token}))))))
|
|
86
|
-
|
|
87
|
-
(schedule-snippet! [{:keys [sourceAgency requestedAt snippet options]}]
|
|
88
|
-
(let [name (:name snippet)
|
|
89
|
-
token (next-token!)]
|
|
90
|
-
(when (get-in @state-atom [:scheduled name])
|
|
91
|
-
(emit-remove! name sourceAgency "replaced"))
|
|
92
|
-
(debug-log! "[Polymer Animation CLJS] scheduleSnippet"
|
|
93
|
-
(domain/schedule-log-payload snippet options sourceAgency))
|
|
94
|
-
(swap! state-atom state/record-schedule snippet options sourceAgency requestedAt)
|
|
95
|
-
(emit-event {:type "animationSnippetScheduled"
|
|
96
|
-
:agency "animation"
|
|
97
|
-
:sourceAgency sourceAgency
|
|
98
|
-
:name name
|
|
99
|
-
:snippet snippet
|
|
100
|
-
:options options
|
|
101
|
-
:requestedAt requestedAt})
|
|
102
|
-
(if runtime
|
|
103
|
-
(if-let [handle (runtime/play-snippet! runtime snippet options)]
|
|
104
|
-
(do
|
|
105
|
-
(swap! handles assoc name {:handle handle
|
|
106
|
-
:token token})
|
|
107
|
-
(swap! state-atom state/record-start name sourceAgency (state/now-ms))
|
|
108
|
-
(emit-event {:type "animationSnippetStarted"
|
|
109
|
-
:agency "animation"
|
|
110
|
-
:sourceAgency sourceAgency
|
|
111
|
-
:name name})
|
|
112
|
-
(schedule-cleanup! name snippet sourceAgency handle token))
|
|
113
|
-
(emit-error! (str "Animation runtime did not return a clip handle for " name)))
|
|
114
|
-
(emit-error! "Animation agency requires an animation runtime or engine"))
|
|
115
|
-
snippet))
|
|
116
|
-
|
|
117
|
-
(seek-snippet! [{:keys [sourceAgency name offsetSec]}]
|
|
118
|
-
(if (runtime/seek-snippet! runtime (handle-for name) name offsetSec)
|
|
119
|
-
(let [seeked-at (state/now-ms)]
|
|
120
|
-
(swap! state-atom state/record-seek name sourceAgency seeked-at offsetSec)
|
|
121
|
-
(emit-event {:type "animationSnippetSeeked"
|
|
122
|
-
:agency "animation"
|
|
123
|
-
:sourceAgency sourceAgency
|
|
124
|
-
:name name
|
|
125
|
-
:offsetSec offsetSec
|
|
126
|
-
:seekedAt seeked-at}))
|
|
127
|
-
(emit-error! (str "Animation runtime could not seek " name))))
|
|
128
|
-
|
|
129
|
-
(update-snippet! [{:keys [sourceAgency name params]}]
|
|
130
|
-
(if (runtime/update-snippet! runtime (handle-for name) name params)
|
|
131
|
-
(let [updated-at (state/now-ms)]
|
|
132
|
-
(swap! state-atom state/record-update name sourceAgency updated-at params)
|
|
133
|
-
(emit-event {:type "animationSnippetUpdated"
|
|
134
|
-
:agency "animation"
|
|
135
|
-
:sourceAgency sourceAgency
|
|
136
|
-
:name name
|
|
137
|
-
:params params
|
|
138
|
-
:updatedAt updated-at}))
|
|
139
|
-
(emit-error! (str "Animation runtime could not update " name))))
|
|
140
|
-
|
|
141
|
-
(clear! [{:keys [sourceAgency names]}]
|
|
142
|
-
(doseq [name names]
|
|
143
|
-
(emit-remove! name sourceAgency "clear"))
|
|
144
|
-
(clear-all-cleanups!))
|
|
145
|
-
|
|
146
|
-
(run-action! [action]
|
|
147
|
-
(case (:op action)
|
|
148
|
-
:schedule (schedule-snippet! action)
|
|
149
|
-
:remove (emit-remove! (:name action) (:sourceAgency action) (:reason action))
|
|
150
|
-
:seek (seek-snippet! action)
|
|
151
|
-
:update (update-snippet! action)
|
|
152
|
-
:clear (clear! action)
|
|
153
|
-
:error (emit-error! (:message action))
|
|
154
|
-
(emit-error! (str "Unknown Animation scheduler action: " (:op action)))))
|
|
155
|
-
|
|
156
|
-
(drain! []
|
|
157
|
-
(when-not @draining?
|
|
158
|
-
(reset! draining? true)
|
|
159
|
-
(try
|
|
160
|
-
(loop []
|
|
161
|
-
(when-let [action (first @queue)]
|
|
162
|
-
(swap! queue #(vec (rest %)))
|
|
163
|
-
(run-action! action)
|
|
164
|
-
(recur)))
|
|
165
|
-
(finally
|
|
166
|
-
(reset! draining? false)))))
|
|
167
|
-
|
|
168
|
-
(enqueue-actions! [actions]
|
|
169
|
-
(swap! queue into actions)
|
|
170
|
-
(drain!))
|
|
171
|
-
|
|
172
|
-
(dispose! []
|
|
173
|
-
(doseq [name (keys @handles)]
|
|
174
|
-
(cleanup-runtime! name))
|
|
175
|
-
(clear-all-cleanups!)
|
|
176
|
-
(reset! queue []))]
|
|
177
|
-
{:enqueue-actions! enqueue-actions!
|
|
178
|
-
:dispose! dispose!})))
|