@xfey/tutti 0.1.98 → 0.1.99
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 +2 -1
- package/dist/artifact-feedback/index.d.ts +19 -0
- package/dist/artifact-feedback/index.js +196 -0
- package/dist/chat-assistant/index.js +5 -4
- package/dist/collaboration-state/task-compile-context.d.ts +1 -1
- package/dist/control-plane/scratchpad-source-messages.js +2 -1
- package/dist/control-plane/task-source-context.js +3 -2
- package/dist/server-shell/http/routes/project-api/artifacts-routes.d.ts +2 -1
- package/dist/server-shell/http/routes/project-api/artifacts-routes.js +1 -0
- package/dist/server-shell/http/routes/project-api/messages-routes.d.ts +3 -1
- package/dist/server-shell/http/routes/project-api/messages-routes.js +61 -29
- package/dist/server-shell/http/routes/project-api/openapi-workspace-routes.d.ts +8 -2
- package/dist/server-shell/http/routes/project-api/openapi.d.ts +8 -2
- package/dist/server-shell/http/routes/project-api/payload-validation.js +12 -0
- package/dist/server-shell/http/routes/project-api/schemas.d.ts +8 -2
- package/dist/server-shell/http/routes/project-api/schemas.js +2 -0
- package/dist/server-shell/http/routes/project-api/types.d.ts +1 -0
- package/dist/server-shell/http/routes/project-api/workspace-projections.js +1 -0
- package/dist/server-shell/http/routes/project-api.js +2 -2
- package/node_modules/@tutti/shared/dist/schemas/api/artifact-feedback.d.ts +374 -0
- package/node_modules/@tutti/shared/dist/schemas/api/artifact-feedback.js +83 -0
- package/node_modules/@tutti/shared/dist/schemas/api/clarifications.d.ts +86 -0
- package/node_modules/@tutti/shared/dist/schemas/api/index.d.ts +2 -1
- package/node_modules/@tutti/shared/dist/schemas/api/index.js +2 -1
- package/node_modules/@tutti/shared/dist/schemas/api/messages.d.ts +441 -2
- package/node_modules/@tutti/shared/dist/schemas/api/messages.js +17 -3
- package/node_modules/@tutti/shared/dist/schemas/api/types.d.ts +13 -1
- package/node_modules/@tutti/shared/dist/schemas/api/viewer-reference.d.ts +86 -0
- package/package.json +1 -1
- package/web/assets/homepage-motion-scene-BtMS4SCZ.js +1 -0
- package/web/assets/index-DtZ_5QLQ.js +69 -0
- package/web/assets/index-JY06YzFV.css +1 -0
- package/web/index.html +2 -2
- package/web/assets/homepage-motion-scene-_nsq44Ph.js +0 -1
- package/web/assets/index-BtTlbKEP.js +0 -69
- package/web/assets/index-quWLFJgD.css +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Static } from "@sinclair/typebox";
|
|
2
|
+
import type { ArtifactElementAnchorSchema, ArtifactElementKindSchema, ArtifactElementTargetSchema, ArtifactFeedbackAnnotationSchema, ArtifactFeedbackCommandSchema, ArtifactFeedbackRefSchema, ArtifactSemanticContextSchema, ArtifactSemanticSnapshotSchema, ArtifactSemanticStateSchema } from "./artifact-feedback.js";
|
|
2
3
|
import type { IdempotencyKeySchema, IsoDateTimeStringSchema } from "../domain/index.js";
|
|
3
4
|
import type { ApiErrorCodeSchema, ApiErrorResponseSchema, CommandDispositionBaseSchema, CursorPageRequestSchema, InterruptedCommandDispositionSchema, QueryInvalidationHintSchema, RelayInvalidationHintSchema, RelaySseEventTypeSchema, SseReplayWindowPolicySchema, WorkspaceSseEventTypeSchema } from "./primitives.js";
|
|
4
5
|
import type { GetProviderModelsResponseSchema, ProviderConfigInvalidReasonCodeSchema, ProviderConfigProjectionSchema, ProviderModelDiscoveryUnavailableReasonSchema, ProviderModelNameSchema, ProviderModelValidationFailureReasonSchema, ProviderUnavailableReasonCodeSchema, ProjectProviderUnavailableReasonSchema, UpdateProviderDefaultModelDispositionSchema, UpdateProviderDefaultModelPayloadSchema } from "./provider-config.js";
|
|
@@ -6,7 +7,7 @@ import type { ProviderUsageBreakdownProjectionSchema, ProviderUsageCategorySchem
|
|
|
6
7
|
import type { ProjectTimelineItemKindSchema, ProjectTimelineItemSchema, ProjectTimelineItemStatusSchema, ProjectTimelineResponseSchema, ProjectTimelineTaskUpdateStateSchema, ProjectTimelineClarificationTraceSchema, ProjectTimelineTraceCardSchema, ProjectTimelineTraceLinkSchema } from "./project-timeline.js";
|
|
7
8
|
import type { PresignedUploadPutSchema, RelayUploadProjectionSchema, RelayUploadPurposeSchema, Sha256DigestSchema, StagedUploadReferenceSchema, StartRelayUploadDispositionSchema, StartRelayUploadPayloadSchema, StartRelayUploadResultSchema } from "./uploads.js";
|
|
8
9
|
import type { MarkReadDispositionSchema, MarkReadPayloadSchema, MarkReadResultSchema, ReadStateScopeProjectionSchema, ReadStateScopeSchema, ReadStateSummaryProjectionSchema } from "./read-state.js";
|
|
9
|
-
import type { GetMessagesRequestSchema, MessageCreatedEventPayloadSchema, MessageProjectionSchema, MessageReferenceFileRefSchema, ReferenceFileCategorySchema, SendMainChatMessageCreatedDispositionSchema, SendMainChatMessageDispositionSchema, SendMainChatMessagePayloadSchema, SendMainChatMessageResultSchema, ArtifactPreviewRefSchema, TaskResultRefSchema, WorklistCompileRefSchema, WorklistFeedbackGeneratedFileSchema, WorklistFeedbackItemSchema, WorklistFeedbackRefSchema } from "./messages.js";
|
|
10
|
+
import type { GetMessagesRequestSchema, MessageCreatedEventPayloadSchema, MessageProjectionSchema, MessageReferenceFileRefSchema, ReferenceFileCategorySchema, SendMainChatMessageCreatedDispositionSchema, SendMainChatMessageArtifactChangedDispositionSchema, SendMainChatMessageArtifactUnavailableDispositionSchema, SendMainChatMessageDispositionSchema, SendMainChatMessagePayloadSchema, SendMainChatMessageResultSchema, ArtifactPreviewRefSchema, TaskResultRefSchema, WorklistCompileRefSchema, WorklistFeedbackGeneratedFileSchema, WorklistFeedbackItemSchema, WorklistFeedbackRefSchema } from "./messages.js";
|
|
10
11
|
import type { CheckSkipReasonCodeSchema, ExternalSideEffectSummaryProjectionSchema, GetRecoverySummariesRequestSchema, GetRecoverySummaryResponseSchema, RecoverySummaryProjectionSchema, RunResultProjectionSchema, ScratchpadProjectionSchema, ScratchpadReceiptProjectionSchema, TaskContractProjectionSchema, TaskDetailProjectionSchema, TaskDetailResultProjectionSchema, TaskModuleProjectionSchema, TaskProjectionSchema, TaskStatusSchema, WorklistCompiledTaskSummarySchema, WorklistProjectionSchema } from "./work-items.js";
|
|
11
12
|
import type { ActiveApprovalProjectionSchema, ApprovalCommandProjectionSchema, ApprovalDecisionKindSchema, ApprovalDecisionOptionProjectionSchema, ApprovalFileChangeProjectionSchema, ApprovalPermissionsProjectionSchema, ApprovalRequestKindSchema, ApprovalRequestProjectionSchema, ApprovalResolutionOutcomeSchema, ApprovalResolutionProjectionSchema, DecideApprovalDispositionSchema, DecideApprovalPayloadSchema, DecideApprovalResultSchema } from "./approvals.js";
|
|
12
13
|
import type { ActiveClarificationProjectionSchema, ClarificationChangedEventPayloadSchema, ClarificationOwnerProjectionSchema, ClarificationRequestPayloadSchema, ClarificationRoundProjectionSchema, ClarificationRoundSummaryProjectionSchema, ClarificationSuccessorRefSchema, ClarificationThreadProjectionSchema, ContextRefSchema, GetClarificationRoundMessagesRequestSchema, GetClarificationRoundResponseSchema, GetClarificationThreadResponseSchema, HumanInteractionPayloadSchema, HumanRequestPayloadSchema, SendClarificationRoundMessageDispositionSchema, SendClarificationRoundMessagePayloadSchema, SendClarificationRoundMessageResultSchema, SubmitClarificationRoundDispositionSchema, SubmitClarificationRoundPayloadSchema, SubmitClarificationRoundResultSchema } from "./clarifications.js";
|
|
@@ -108,6 +109,15 @@ export type MarkReadDisposition = Static<typeof MarkReadDispositionSchema>;
|
|
|
108
109
|
export type MarkReadResult = Static<typeof MarkReadResultSchema>;
|
|
109
110
|
export type MarkReadResponse = CommandResponse<MarkReadDisposition, MarkReadResult>;
|
|
110
111
|
export type ReferenceFileCategory = Static<typeof ReferenceFileCategorySchema>;
|
|
112
|
+
export type ArtifactElementKind = Static<typeof ArtifactElementKindSchema>;
|
|
113
|
+
export type ArtifactSemanticContext = Static<typeof ArtifactSemanticContextSchema>;
|
|
114
|
+
export type ArtifactSemanticState = Static<typeof ArtifactSemanticStateSchema>;
|
|
115
|
+
export type ArtifactSemanticSnapshot = Static<typeof ArtifactSemanticSnapshotSchema>;
|
|
116
|
+
export type ArtifactElementAnchor = Static<typeof ArtifactElementAnchorSchema>;
|
|
117
|
+
export type ArtifactElementTarget = Static<typeof ArtifactElementTargetSchema>;
|
|
118
|
+
export type ArtifactFeedbackAnnotation = Static<typeof ArtifactFeedbackAnnotationSchema>;
|
|
119
|
+
export type ArtifactFeedbackCommand = Static<typeof ArtifactFeedbackCommandSchema>;
|
|
120
|
+
export type ArtifactFeedbackRef = Static<typeof ArtifactFeedbackRefSchema>;
|
|
111
121
|
export type MessageReferenceFileRef = Static<typeof MessageReferenceFileRefSchema>;
|
|
112
122
|
export type WorklistCompiledTaskSummary = Static<typeof WorklistCompiledTaskSummarySchema>;
|
|
113
123
|
export type WorklistCompileRef = Static<typeof WorklistCompileRefSchema>;
|
|
@@ -121,6 +131,8 @@ export type MessageWindow = TimelineWindow<MessageProjection>;
|
|
|
121
131
|
export type SendMainChatMessagePayload = Static<typeof SendMainChatMessagePayloadSchema>;
|
|
122
132
|
export type ApiInterruptedCommandDisposition = Static<typeof InterruptedCommandDispositionSchema>;
|
|
123
133
|
export type SendMainChatMessageCreatedDisposition = Static<typeof SendMainChatMessageCreatedDispositionSchema>;
|
|
134
|
+
export type SendMainChatMessageArtifactChangedDisposition = Static<typeof SendMainChatMessageArtifactChangedDispositionSchema>;
|
|
135
|
+
export type SendMainChatMessageArtifactUnavailableDisposition = Static<typeof SendMainChatMessageArtifactUnavailableDispositionSchema>;
|
|
124
136
|
export type SendMainChatMessageDisposition = Static<typeof SendMainChatMessageDispositionSchema>;
|
|
125
137
|
export type SendMainChatMessageResult = Static<typeof SendMainChatMessageResultSchema>;
|
|
126
138
|
export type GetMessagesRequest = Static<typeof GetMessagesRequestSchema>;
|
|
@@ -491,6 +491,92 @@ export declare const UploadReferenceFileResultSchema: import("@sinclair/typebox"
|
|
|
491
491
|
task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
492
492
|
run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
493
493
|
}>>;
|
|
494
|
+
artifact_feedback: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
495
|
+
kind: import("@sinclair/typebox").TLiteral<"artifact_feedback">;
|
|
496
|
+
version: import("@sinclair/typebox").TLiteral<1>;
|
|
497
|
+
preview_generation: import("@sinclair/typebox").TString;
|
|
498
|
+
artifact_title: import("@sinclair/typebox").TString;
|
|
499
|
+
inspector_version: import("@sinclair/typebox").TLiteral<1>;
|
|
500
|
+
summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
501
|
+
annotations: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
502
|
+
document_url: import("@sinclair/typebox").TString;
|
|
503
|
+
comment: import("@sinclair/typebox").TString;
|
|
504
|
+
target: import("@sinclair/typebox").TObject<{
|
|
505
|
+
snapshot: import("@sinclair/typebox").TObject<{
|
|
506
|
+
element_kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"control">, import("@sinclair/typebox").TLiteral<"content">, import("@sinclair/typebox").TLiteral<"container">]>;
|
|
507
|
+
tag_name: import("@sinclair/typebox").TString;
|
|
508
|
+
role: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
509
|
+
accessible_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
510
|
+
text_excerpt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
511
|
+
context: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
512
|
+
tag_name: import("@sinclair/typebox").TString;
|
|
513
|
+
role: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
514
|
+
accessible_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
515
|
+
}>>;
|
|
516
|
+
state: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
517
|
+
expanded: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
518
|
+
selected: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
519
|
+
checked: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
520
|
+
pressed: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
521
|
+
disabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
522
|
+
}>>;
|
|
523
|
+
}>;
|
|
524
|
+
anchor: import("@sinclair/typebox").TObject<{
|
|
525
|
+
version: import("@sinclair/typebox").TLiteral<1>;
|
|
526
|
+
explicit_anchor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
527
|
+
stable_attributes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
528
|
+
id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
529
|
+
test_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
530
|
+
}>>;
|
|
531
|
+
semantic_path: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
532
|
+
role: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
533
|
+
accessible_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
534
|
+
}>>;
|
|
535
|
+
selector_path: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
536
|
+
root: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"document">, import("@sinclair/typebox").TLiteral<"open_shadow_root">]>;
|
|
537
|
+
selector: import("@sinclair/typebox").TString;
|
|
538
|
+
}>>;
|
|
539
|
+
}>;
|
|
540
|
+
fallback_context: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
541
|
+
snapshot: import("@sinclair/typebox").TObject<{
|
|
542
|
+
element_kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"control">, import("@sinclair/typebox").TLiteral<"content">, import("@sinclair/typebox").TLiteral<"container">]>;
|
|
543
|
+
tag_name: import("@sinclair/typebox").TString;
|
|
544
|
+
role: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
545
|
+
accessible_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
546
|
+
text_excerpt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
547
|
+
context: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
548
|
+
tag_name: import("@sinclair/typebox").TString;
|
|
549
|
+
role: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
550
|
+
accessible_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
551
|
+
}>>;
|
|
552
|
+
state: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
553
|
+
expanded: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
554
|
+
selected: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
555
|
+
checked: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
556
|
+
pressed: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
557
|
+
disabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
558
|
+
}>>;
|
|
559
|
+
}>;
|
|
560
|
+
anchor: import("@sinclair/typebox").TObject<{
|
|
561
|
+
version: import("@sinclair/typebox").TLiteral<1>;
|
|
562
|
+
explicit_anchor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
563
|
+
stable_attributes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
564
|
+
id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
565
|
+
test_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
566
|
+
}>>;
|
|
567
|
+
semantic_path: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
568
|
+
role: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
569
|
+
accessible_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
570
|
+
}>>;
|
|
571
|
+
selector_path: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
572
|
+
root: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"document">, import("@sinclair/typebox").TLiteral<"open_shadow_root">]>;
|
|
573
|
+
selector: import("@sinclair/typebox").TString;
|
|
574
|
+
}>>;
|
|
575
|
+
}>;
|
|
576
|
+
}>>;
|
|
577
|
+
}>;
|
|
578
|
+
}>>;
|
|
579
|
+
}>>;
|
|
494
580
|
}>>;
|
|
495
581
|
clarification_card: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
496
582
|
thread_id: import("@sinclair/typebox").TString;
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,S as t,T as n,_ as r,a as i,b as a,c as o,d as s,f as c,g as l,h as u,i as d,l as f,m as p,n as m,o as h,p as g,r as _,s as v,t as y,u as b,v as x,w as S,x as C,y as w}from"./index-DtZ_5QLQ.js";var T=S(`mouse-pointer-2`,[[`path`,{d:`M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z`,key:`edeuup`}]]),E=n();function D(e){return{"--reveal":e}}function O(e,t,n){let r=(e,t)=>Number.parseInt(e.slice(t,t+2),16),i=i=>Math.round(r(e,i)+(r(t,i)-r(e,i))*n).toString(16).padStart(2,`0`);return`#${i(1)}${i(3)}${i(5)}`}function k(e){let t=i((e-m.runEnd)/(m.executionComplete-m.runEnd));return t+t*t-t*t*t}function A({progress:e,children:t,className:n=``}){return(0,E.jsx)(`div`,{className:`scene-reveal ${n}`,style:D(e),children:t})}function j({progress:e,author:t,avatar:n,tone:r,timestamp:i,online:a=!1,assets:o,children:s}){return(0,E.jsxs)(`article`,{className:`scene-message`,style:D(e),children:[(0,E.jsx)(`span`,{className:`scene-avatar is-${r} ${n===`tutti`?`is-tutti`:``} ${a?`is-online`:``}`,"aria-hidden":`true`,children:n===`tutti`?(0,E.jsx)(`img`,{className:`scene-avatar-image`,src:o.tuttiAvatarSrc,alt:``}):(0,E.jsx)(`img`,{className:`scene-avatar-image`,src:o.humanAvatars[n],alt:``})}),(0,E.jsxs)(`div`,{className:`scene-message-copy`,children:[(0,E.jsxs)(`header`,{children:[(0,E.jsx)(`strong`,{children:t}),(0,E.jsx)(`span`,{children:i})]}),(0,E.jsx)(`p`,{children:s})]})]})}function M({time:t,assets:n}){let i=t>=m.artifactLive,o=t>=m.artifactClick,s=t>=m.runEnd&&t<m.executionComplete,u=f(t,m.runEnd,19.2),d=f(t,m.artifactLive,30.92);return(0,E.jsxs)(`aside`,{className:`scene-sidebar`,children:[(0,E.jsx)(`button`,{className:`scene-brand`,type:`button`,"aria-label":`Tutti`,tabIndex:-1,children:(0,E.jsx)(`img`,{src:n.logoSrc,alt:``})}),(0,E.jsxs)(`div`,{className:`scene-nav-stack`,children:[(0,E.jsxs)(`nav`,{className:`scene-nav`,"aria-label":`Workspace pages`,children:[(0,E.jsx)(`button`,{className:o?``:`is-active`,type:`button`,"aria-label":`Chat`,tabIndex:-1,children:(0,E.jsx)(r,{"aria-hidden":`true`})}),(0,E.jsx)(`button`,{type:`button`,"aria-label":`Worklist`,tabIndex:-1,children:(0,E.jsx)(w,{"aria-hidden":`true`})}),(0,E.jsxs)(`button`,{className:o?`is-active`:``,type:`button`,"aria-label":`Artifacts`,tabIndex:-1,children:[(0,E.jsx)(l,{"aria-hidden":`true`}),i?(0,E.jsx)(`span`,{className:`scene-live-pill`,style:D(d),children:`Live`}):null]}),(0,E.jsx)(`button`,{type:`button`,"aria-label":`References`,tabIndex:-1,children:(0,E.jsx)(a,{"aria-hidden":`true`})}),(0,E.jsx)(`button`,{type:`button`,"aria-label":`Skills`,tabIndex:-1,children:(0,E.jsx)(c,{"aria-hidden":`true`})}),(0,E.jsx)(`button`,{type:`button`,"aria-label":`Timeline`,tabIndex:-1,children:(0,E.jsx)(e,{"aria-hidden":`true`})})]}),s?(0,E.jsx)(`button`,{className:`scene-status-entry is-running`,style:D(u),type:`button`,"aria-label":`Task running`,tabIndex:-1,children:(0,E.jsx)(x,{"aria-hidden":`true`})}):null]}),(0,E.jsx)(`button`,{className:`scene-settings`,type:`button`,"aria-label":`Settings`,tabIndex:-1,children:(0,E.jsx)(g,{"aria-hidden":`true`})})]})}function N({time:e,assets:n}){let i=f(e,30.35,30.92);return(0,E.jsxs)(`section`,{className:`scene-panel scene-chat-panel`,children:[(0,E.jsxs)(`header`,{className:`scene-panel-header`,children:[(0,E.jsx)(`span`,{className:`scene-icon-tile`,children:(0,E.jsx)(r,{"aria-hidden":`true`})}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`h2`,{children:`Morrow Studio`}),(0,E.jsx)(`p`,{children:`Ceramics storefront`})]}),(0,E.jsxs)(`span`,{className:`scene-members`,"aria-hidden":`true`,children:[(0,E.jsx)(`i`,{className:`is-green`,children:(0,E.jsx)(`img`,{className:`scene-avatar-image`,src:n.humanAvatars.fey,alt:``})}),(0,E.jsx)(`i`,{className:`is-blue`,children:(0,E.jsx)(`img`,{className:`scene-avatar-image`,src:n.humanAvatars.avery,alt:``})}),(0,E.jsx)(`i`,{className:`is-yellow`,children:(0,E.jsx)(`img`,{className:`scene-avatar-image`,src:n.humanAvatars.jun,alt:``})})]})]}),(0,E.jsxs)(`div`,{className:`scene-chat-stream`,children:[(0,E.jsx)(j,{progress:f(e,1.35,2.05),author:`Fey`,avatar:`fey`,tone:`green`,timestamp:`10:12`,online:!0,assets:n,children:`🏺 Let's build an online shop for our ceramics studio.`}),(0,E.jsx)(j,{progress:f(e,2.65,3.35),author:`Avery`,avatar:`avery`,tone:`blue`,timestamp:`10:13`,online:!0,assets:n,children:`✨ Keep it warm, minimal, and editorial.`}),(0,E.jsx)(j,{progress:f(e,3.95,4.65),author:`Jun`,avatar:`jun`,tone:`yellow`,timestamp:`10:14`,online:!0,assets:n,children:`🎨 Let people preview every piece in different glazes.`}),(0,E.jsx)(j,{progress:f(e,5.25,5.95),author:`Tutti`,avatar:`tutti`,tone:`green`,timestamp:`10:15`,assets:n,children:`Got it — I'll put it together. ✨`}),(0,E.jsxs)(`article`,{className:`scene-task-result`,style:D(i),children:[(0,E.jsx)(`span`,{className:`scene-task-result-rail`,"aria-hidden":`true`}),(0,E.jsx)(`span`,{className:`scene-task-result-icon`,"aria-hidden":`true`,children:(0,E.jsx)(t,{})}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`span`,{children:`Task completed`}),(0,E.jsx)(`strong`,{children:`Build ceramics storefront`}),(0,E.jsx)(`small`,{children:`Storefront`}),(0,E.jsx)(`p`,{children:`Warm editorial shopping and glaze previews are ready in Artifacts.`})]}),(0,E.jsx)(C,{className:`scene-task-result-chevron`,"aria-hidden":`true`})]})]}),(0,E.jsxs)(`div`,{className:`scene-composer`,"aria-hidden":`true`,children:[(0,E.jsx)(`span`,{children:`Write a message`}),(0,E.jsx)(p,{})]})]})}function P({progress:e,icon:t,children:n}){return(0,E.jsxs)(`div`,{className:`scene-scratchpad-row`,style:D(e),children:[(0,E.jsx)(`span`,{"aria-hidden":`true`,children:t}),(0,E.jsx)(`p`,{children:n})]})}function F({time:e}){return(0,E.jsxs)(`section`,{className:`scene-panel scene-scratchpad-panel`,style:{"--scratchpad-collapse":f(e,m.runEnd,19.18)},children:[(0,E.jsxs)(`header`,{className:`scene-panel-header`,children:[(0,E.jsx)(`span`,{className:`scene-icon-tile`,children:(0,E.jsx)(y,{"aria-hidden":`true`})}),(0,E.jsx)(`h2`,{children:`Scratchpad`})]}),(0,E.jsxs)(`div`,{className:`scene-scratchpad-body`,children:[(0,E.jsxs)(A,{progress:f(e,8.95,10),className:`scene-scratchpad-intro`,children:[(0,E.jsx)(`h3`,{children:`Ceramics storefront`}),(0,E.jsx)(`p`,{children:`A warm, editorial storefront for a small-batch studio, centered on tactile product discovery.`})]}),(0,E.jsx)(A,{progress:f(e,9.85,10.65),className:`scene-scratchpad-label`,children:`Confirmed`}),(0,E.jsx)(P,{progress:f(e,10.4,11.25),icon:(0,E.jsx)(t,{}),children:`Product-first editorial layout with generous space`}),(0,E.jsx)(P,{progress:f(e,11.2,12.05),icon:(0,E.jsx)(t,{}),children:`Warm neutrals with quiet serif headlines`}),(0,E.jsx)(P,{progress:f(e,12,12.85),icon:(0,E.jsx)(t,{}),children:`Keep the collection small, curated, and story-led`}),(0,E.jsx)(A,{progress:f(e,12.75,13.55),className:`scene-scratchpad-label`,children:`Requested feature`}),(0,E.jsx)(P,{progress:f(e,13.3,14.2),icon:(0,E.jsx)(s,{}),children:`Preview every piece in clay, sage, and ink glazes`})]}),(0,E.jsxs)(`footer`,{className:`scene-scratchpad-footer`,style:D(f(e,15.7,16.8)),children:[(0,E.jsxs)(`span`,{className:`scene-writing-mark`,children:[(0,E.jsx)(`strong`,{children:`Updated`}),(0,E.jsx)(`span`,{children:`just now`})]}),(0,E.jsxs)(`button`,{className:`scene-run-button`,type:`button`,tabIndex:-1,children:[(0,E.jsx)(u,{"aria-hidden":`true`}),(0,E.jsx)(`span`,{children:`Run`})]})]})]})}function I(e,t){let n=Math.max(0,Math.floor((e-t)*50/5)*5);return`${Math.floor(n/60)}m${(n%60).toString().padStart(2,`0`)}s`}function L({time:e,scoreSrc:n}){let r=f(e,18.92,19.2),i=v(e),a=i.id===`complete`,o={prepare:m.runEnd,implement:m.executionPrepareEnd,validate:m.executionImplementEnd,update:m.executionValidateEnd,complete:m.executionComplete}[i.id],s=f(e,o,o+.32),c=k(e);return(0,E.jsx)(`div`,{className:`scene-execution`,style:{"--reveal":r,"--stage-reveal":s},children:(0,E.jsxs)(`article`,{className:`homepage-motion-panel homepage-motion-execution-panel homepage-motion-execution-card is-score-${a?`complete`:`running`}`,children:[(0,E.jsx)(`header`,{className:`homepage-motion-panel-header`,children:(0,E.jsxs)(`div`,{className:`homepage-motion-panel-title`,children:[(0,E.jsx)(`span`,{className:`scene-icon-tile`,"aria-hidden":`true`,children:(0,E.jsx)(b,{})}),(0,E.jsx)(`h3`,{children:`Tutti is working on`})]})}),(0,E.jsxs)(`div`,{className:`homepage-motion-execution-body`,children:[(0,E.jsxs)(`div`,{className:`homepage-motion-execution-step homepage-motion-execution-stage is-${a?`complete`:`running`} has-marker`,children:[(0,E.jsx)(`span`,{className:`homepage-motion-execution-marker ${a?`is-done`:`is-running`}`,"aria-hidden":`true`,children:a?(0,E.jsx)(t,{}):(0,E.jsx)(x,{})}),(0,E.jsx)(`span`,{className:`homepage-motion-execution-step-content homepage-motion-execution-stage-copy`,children:(0,E.jsxs)(`span`,{className:`homepage-motion-execution-step-title`,children:[(0,E.jsx)(`span`,{className:`homepage-motion-execution-step-label`,children:i.label}),a?null:(0,E.jsx)(`span`,{className:`homepage-motion-execution-step-elapsed`,children:` (${I(e,o)})`})]})},i.id)]}),(0,E.jsx)(`div`,{className:`homepage-motion-running-score ${a?`is-complete`:``}`,role:`img`,"aria-label":`Ode to Joy score phrase`,children:(0,E.jsx)(`div`,{className:`homepage-motion-score-passage`,style:{"--score-translate-x":`${-395.3*c}px`},"aria-hidden":`true`,children:(0,E.jsx)(`img`,{src:n,alt:``,draggable:!1})})})]})]})})}function R({color:e,variant:t=`vase`,className:n=``}){let r={"--ceramic-color":e};return t===`cup`?(0,E.jsxs)(`svg`,{className:`ceramic-object is-cup ${n}`,viewBox:`0 0 260 260`,style:r,"aria-hidden":`true`,children:[(0,E.jsx)(`path`,{className:`ceramic-main`,d:`M54 64h132l-9 126c-2 26-20 42-46 42h-22c-26 0-44-16-46-42Z`}),(0,E.jsx)(`path`,{className:`ceramic-outline`,d:`M186 92h18c34 0 34 72 1 76h-27`}),(0,E.jsx)(`ellipse`,{className:`ceramic-rim`,cx:`120`,cy:`64`,rx:`66`,ry:`13`}),(0,E.jsx)(`path`,{className:`ceramic-highlight`,d:`M78 90c5 62 4 91 20 114`})]}):t===`bowl`?(0,E.jsxs)(`svg`,{className:`ceramic-object is-bowl ${n}`,viewBox:`0 0 300 220`,style:r,"aria-hidden":`true`,children:[(0,E.jsx)(`ellipse`,{className:`ceramic-rim`,cx:`150`,cy:`55`,rx:`116`,ry:`24`}),(0,E.jsx)(`path`,{className:`ceramic-main`,d:`M34 55c8 82 45 132 116 132S258 137 266 55c-42 25-190 25-232 0Z`}),(0,E.jsx)(`path`,{className:`ceramic-highlight`,d:`M72 82c18 45 40 70 70 82`}),(0,E.jsx)(`path`,{className:`ceramic-base`,d:`M112 185h76`})]}):(0,E.jsxs)(`svg`,{className:`ceramic-object is-vase ${n}`,viewBox:`0 0 320 420`,style:r,"aria-hidden":`true`,children:[(0,E.jsx)(`path`,{className:`ceramic-main`,d:`M116 56c7 38-17 61-36 96-31 56-28 157 5 199 33 42 117 42 150 0 33-42 36-143 5-199-19-35-43-58-36-96Z`}),(0,E.jsx)(`ellipse`,{className:`ceramic-rim`,cx:`160`,cy:`56`,rx:`44`,ry:`12`}),(0,E.jsx)(`ellipse`,{className:`ceramic-base`,cx:`160`,cy:`365`,rx:`66`,ry:`13`}),(0,E.jsx)(`path`,{className:`ceramic-highlight`,d:`M108 153c-25 64-23 145 1 185`})]})}function z({time:e}){let t=f(e,m.artifactClick,33.25),n=f(e,34.25,34.52),r=f(e,34.88,35.15),i=f(e,35.55,35.82),a=_(e),o=O(`#d9cbb4`,`#c56f4f`,n);e>=34.88&&(o=O(`#c56f4f`,`#6f9275`,r)),e>=35.55&&(o=O(`#6f9275`,`#243a46`,i));let s=e>=35.55?`ink`:e>=34.88?`sage`:e>=34.25?`clay`:null,c={"--artifact-scroll":a};return(0,E.jsxs)(`section`,{className:`scene-panel scene-artifact-panel`,style:D(t),children:[(0,E.jsxs)(`header`,{className:`scene-panel-header`,children:[(0,E.jsx)(`span`,{className:`scene-icon-tile`,children:(0,E.jsx)(l,{"aria-hidden":`true`})}),(0,E.jsx)(`h2`,{children:`Artifacts`}),(0,E.jsx)(`span`,{className:`scene-ready-tag`,children:`Ready`})]}),(0,E.jsx)(`div`,{className:`scene-artifact-canvas`,children:(0,E.jsxs)(`div`,{className:`artifact-page-frame`,style:c,children:[(0,E.jsxs)(`div`,{className:`artifact-page-nav`,children:[(0,E.jsx)(`strong`,{children:`Morrow`}),(0,E.jsx)(`span`,{children:`Objects · Journal · Studio`})]}),(0,E.jsxs)(`section`,{className:`artifact-hero`,children:[(0,E.jsxs)(`div`,{className:`artifact-hero-copy`,children:[(0,E.jsx)(`span`,{className:`artifact-eyebrow`,children:`Hand-finished in small batches`}),(0,E.jsx)(`h3`,{children:`Objects for slower days.`}),(0,E.jsx)(`p`,{children:`Quiet forms, warm glazes, and useful pieces made to live with.`}),(0,E.jsx)(`button`,{type:`button`,tabIndex:-1,children:`Explore the collection`})]}),(0,E.jsxs)(`div`,{className:`artifact-hero-object`,children:[(0,E.jsx)(R,{color:o}),(0,E.jsxs)(`div`,{className:`artifact-glaze-picker`,"aria-label":`Glaze preview`,children:[(0,E.jsx)(`span`,{children:`Glaze`}),(0,E.jsx)(`i`,{className:s===`clay`?`is-active is-clay`:`is-clay`}),(0,E.jsx)(`i`,{className:s===`sage`?`is-active is-sage`:`is-sage`}),(0,E.jsx)(`i`,{className:s===`ink`?`is-active is-ink`:`is-ink`})]})]})]}),(0,E.jsxs)(`section`,{className:`artifact-collection`,children:[(0,E.jsxs)(`header`,{children:[(0,E.jsx)(`span`,{children:`Selected pieces`}),(0,E.jsx)(`p`,{children:`Everyday forms shaped for the rituals around them.`})]}),(0,E.jsxs)(`div`,{className:`artifact-product-grid`,children:[(0,E.jsxs)(`article`,{children:[(0,E.jsx)(R,{color:`#b9785f`,variant:`cup`}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`strong`,{children:`Low cup`}),(0,E.jsx)(`span`,{children:`Rust glaze`})]})]}),(0,E.jsxs)(`article`,{children:[(0,E.jsx)(R,{color:`#819283`,variant:`vase`}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`strong`,{children:`Field vase`}),(0,E.jsx)(`span`,{children:`Sage glaze`})]})]}),(0,E.jsxs)(`article`,{children:[(0,E.jsx)(R,{color:`#d5c7af`,variant:`bowl`}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`strong`,{children:`Gather bowl`}),(0,E.jsx)(`span`,{children:`Flax glaze`})]})]})]})]}),(0,E.jsxs)(`section`,{className:`artifact-studio`,children:[(0,E.jsx)(`span`,{children:`Made by hand · Meant for every day`}),(0,E.jsx)(`h3`,{children:`Useful things can still feel special.`}),(0,E.jsx)(`p`,{children:`We make a small number of considered objects, slowly and close to home.`}),(0,E.jsx)(`button`,{type:`button`,tabIndex:-1,children:`Visit the studio`})]}),(0,E.jsxs)(`footer`,{className:`artifact-page-footer`,children:[(0,E.jsx)(`strong`,{children:`Morrow Ceramics`}),(0,E.jsx)(`span`,{className:`artifact-built-with`,children:`Built with Tutti.`}),(0,E.jsx)(`span`,{children:`Small batch · Est. 2026`})]})]})})]})}function B(e,t,n){return e+(t-e)*n}function V(e,t,n,r,i){let a=f(e,t,n,h);return{x:B(r.x,i.x,a),y:B(r.y,i.y,a)}}function H(e,t,n){return e<t||e>n?0:Math.sin(Math.PI*((e-t)/(n-t)))}function U(e){if(e>=m.runCursorStart&&e<18.92){let t=V(e,m.runCursorStart,m.runCursorArrive,{x:86,y:76},{x:94.25,y:94.2});return{visible:!0,x:t.x,y:t.y,clickPulse:H(e,m.runClickStart,m.runEnd)}}if(e>=31&&e<33.45){let t=V(e,31,32.22,{x:50,y:58},{x:4,y:22.85});return{visible:!0,x:t.x,y:t.y,clickPulse:H(e,32.28,32.6)}}return{visible:!1,x:50,y:50,clickPulse:0}}function W({time:e,assets:t}){let n=d(e),r=U(e),i=o(e),a=f(e,.08,1.05,h);return(0,E.jsx)(`div`,{className:`motion-scene`,role:`img`,"aria-label":`Tutti workflow animation from team discussion to a generated ceramics storefront`,style:{opacity:i,visibility:i<=.001?`hidden`:`visible`},children:(0,E.jsxs)(`div`,{className:`motion-stage`,style:{opacity:a,transform:`translate(50%, 50%) scale(${n.scale}) translate(${-n.centerX*100}%, ${-n.centerY*100}%)`},children:[(0,E.jsx)(M,{time:e,assets:t}),(0,E.jsxs)(`div`,{className:`scene-workspace-layer`,children:[(0,E.jsx)(N,{time:e,assets:t}),(0,E.jsx)(F,{time:e}),(0,E.jsx)(L,{time:e,scoreSrc:t.scoreSrc})]}),(0,E.jsx)(z,{time:e}),(0,E.jsxs)(`span`,{className:`scene-cursor ${r.visible?`is-visible`:``}`,style:{left:`${r.x}%`,top:`${r.y}%`,"--click-pulse":r.clickPulse},"aria-hidden":`true`,children:[(0,E.jsx)(T,{}),(0,E.jsx)(`i`,{})]})]})})}export{W as HomepageMotionScene};
|