@agentshouse/app-bridge 0.1.0-c1bc683ed8f4e → 0.1.0-c1e11b9031ca4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/calls.d.ts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/mdmodel/definition.d.ts +14 -0
- package/dist/mdmodel/index.d.ts +2 -2
- package/dist/mdruntime/adapter.d.ts +4 -0
- package/dist/mdruntime/connection.d.ts +4 -1
- package/dist/mdruntime/conversation.d.ts +2 -0
- package/dist/mdruntime/overlay.d.ts +1 -0
- package/dist/mdruntime/query.d.ts +6 -0
- package/dist/mdruntime/reach.d.ts +1 -2
- package/dist/mdruntime/room-draft.d.ts +12 -0
- package/dist/mdruntime/rows.d.ts +2 -1
- package/dist/mdruntime/search.d.ts +13 -5
- package/dist/mdruntime/seed.d.ts +15 -0
- package/dist/mdruntime/store.d.ts +4 -3
- package/docs/families.md +7 -5
- package/package.json +1 -1
package/dist/calls.d.ts
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -29,12 +29,26 @@ export type Shape = {
|
|
|
29
29
|
readonly schema: Readonly<Record<string, unknown>>;
|
|
30
30
|
readonly defs: Readonly<Record<string, unknown>>;
|
|
31
31
|
};
|
|
32
|
+
export type RuleValue = string | number | boolean | null;
|
|
33
|
+
export type Transition = {
|
|
34
|
+
readonly from: RuleValue;
|
|
35
|
+
readonly to: RuleValue;
|
|
36
|
+
readonly roles?: readonly string[];
|
|
37
|
+
};
|
|
38
|
+
export type FieldRules = {
|
|
39
|
+
readonly changeRoles?: readonly string[];
|
|
40
|
+
readonly initialRoles?: readonly string[];
|
|
41
|
+
readonly transitions?: readonly Transition[];
|
|
42
|
+
};
|
|
32
43
|
export type Definition = {
|
|
33
44
|
readonly name: string;
|
|
34
45
|
readonly memberDocument: boolean;
|
|
35
46
|
readonly frontmatter: ValueFacts;
|
|
36
47
|
readonly fields: Readonly<Record<string, ValueFacts>>;
|
|
37
48
|
readonly sections: Readonly<Record<string, SectionSpec>>;
|
|
49
|
+
readonly rules: Readonly<Record<string, FieldRules>>;
|
|
50
|
+
readonly createRoles?: readonly string[];
|
|
51
|
+
readonly deleteRoles?: readonly string[];
|
|
38
52
|
readonly shape: Shape;
|
|
39
53
|
};
|
|
40
54
|
export type Failure = {
|
package/dist/mdmodel/index.d.ts
CHANGED
|
@@ -10,9 +10,9 @@ export { MARKDOWN_SYNTAX_PROFILE } from './profile.js';
|
|
|
10
10
|
export { project } from './project.js';
|
|
11
11
|
export { references } from './references.js';
|
|
12
12
|
export { ARRAY_INDEX, ATTACHMENT, crossedFacts, escapePointer, itemFacts, memberFacts, pointerFacts, pointerSegments, } from './definition.js';
|
|
13
|
-
export type { Definition, JsonType, PatternFacts, PointerFacts, SectionSpec, Shape, ValueFacts, } from './definition.js';
|
|
13
|
+
export type { Definition, FieldRules, JsonType, PatternFacts, PointerFacts, RuleValue, SectionSpec, Shape, Transition, ValueFacts, } from './definition.js';
|
|
14
14
|
export type { ApplyResult, BodyResult, Change, Division, DivisionContext, Document, DocumentCheck, Frontmatter, FrontmatterResult, Library, ModelVerification, Link, LinkOccurrence, ParseResult, Projection, ProjectionContext, Reached, Reference, Refusal, Span, Validation, ValidationContext, VerifiedModel, } from './types.js';
|
|
15
15
|
export { checkDocument, resolves, sectionReferences, validate, verify } from './validate.js';
|
|
16
16
|
export { VERSION } from './version.js';
|
|
17
|
-
export { equalValue, frontmatterValue } from './yaml.js';
|
|
17
|
+
export { bodyAfterFrontmatter, equalValue, frontmatterValue } from './yaml.js';
|
|
18
18
|
export type { FrontmatterValue } from './yaml.js';
|
|
@@ -277,6 +277,7 @@ export type BootstrapPage = {
|
|
|
277
277
|
models?: RoomModels;
|
|
278
278
|
documents: Readonly<Record<string, string>>;
|
|
279
279
|
revisions: Readonly<Record<string, string>>;
|
|
280
|
+
fileIds?: Readonly<Record<string, string>>;
|
|
280
281
|
changes: Readonly<Record<string, HeadChange>>;
|
|
281
282
|
binaryFiles: Readonly<Record<string, BinaryFile>>;
|
|
282
283
|
pageToken?: PageToken;
|
|
@@ -296,6 +297,7 @@ export type RefreshPage = {
|
|
|
296
297
|
models?: RoomModels;
|
|
297
298
|
documents: Readonly<Record<string, string>>;
|
|
298
299
|
revisions: Readonly<Record<string, string>>;
|
|
300
|
+
fileIds?: Readonly<Record<string, string>>;
|
|
299
301
|
changes: Readonly<Record<string, HeadChange>>;
|
|
300
302
|
binaryFiles: Readonly<Record<string, BinaryFile>>;
|
|
301
303
|
removals: readonly string[];
|
|
@@ -324,6 +326,7 @@ export type MutationResult = {
|
|
|
324
326
|
roomVersion: string;
|
|
325
327
|
documents: Readonly<Record<string, string>>;
|
|
326
328
|
revisions: Readonly<Record<string, string>>;
|
|
329
|
+
fileIds?: Readonly<Record<string, string>>;
|
|
327
330
|
changes: Readonly<Record<string, HeadChange>>;
|
|
328
331
|
removals: readonly string[];
|
|
329
332
|
binaryFiles?: Readonly<Record<string, BinaryFile>>;
|
|
@@ -423,6 +426,7 @@ export type RoomStreamEvent = {
|
|
|
423
426
|
} | {
|
|
424
427
|
kind: 'closed';
|
|
425
428
|
revoked: boolean;
|
|
429
|
+
lost: boolean;
|
|
426
430
|
} | {
|
|
427
431
|
kind: 'opening';
|
|
428
432
|
expired: readonly string[];
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type TypesResult } from './model.js';
|
|
2
2
|
import { type Observation } from './observation.js';
|
|
3
3
|
import { type DocumentQuery, type DocumentResult, type GroupQuery, type GroupResult, type PendingResult } from './query.js';
|
|
4
|
+
import { type EntrySeed } from './seed.js';
|
|
4
5
|
import { type SearchRequest, type SearchResult } from './search.js';
|
|
5
6
|
import { type Adapter, type Authorization, type Member, type ProviderRefusal, type ServiceMode } from './adapter.js';
|
|
6
7
|
import { type ChatDraftSurface, type ConversationAgent, type ConversationEntry, type ConversationOptions, type ConversationSurface, type ConversationView } from './conversation.js';
|
|
@@ -14,7 +15,7 @@ import { type RoomDraft, type RoomDraftWrite } from './room-draft.js';
|
|
|
14
15
|
import { type SyncStatus } from './status.js';
|
|
15
16
|
import { type RuntimeShell } from './durability.js';
|
|
16
17
|
import { type RuntimeDemand } from './acquisition.js';
|
|
17
|
-
import { type CapacityCause, type CodeAvailability, type Persistence, type Readiness } from './readiness.js';
|
|
18
|
+
import { type CapacityCause, type CodeAvailability, type Persistence, type Readiness, type SearchObligation } from './readiness.js';
|
|
18
19
|
import { type NarrowedView, type PortReach, type RuntimeView } from './reach.js';
|
|
19
20
|
export type AppTypedSelection = {
|
|
20
21
|
roots: readonly string[];
|
|
@@ -126,8 +127,10 @@ export type ReadinessPort = {
|
|
|
126
127
|
readonly target: string;
|
|
127
128
|
readonly code: CodeAvailability;
|
|
128
129
|
readonly capacity: CapacityCause | null;
|
|
130
|
+
readonly search: SearchObligation;
|
|
129
131
|
};
|
|
130
132
|
export type ComposedRuntime = RuntimeView & {
|
|
133
|
+
seed(entry: EntrySeed): void;
|
|
131
134
|
stop(): Promise<void>;
|
|
132
135
|
lose(locators: readonly string[]): Promise<void>;
|
|
133
136
|
acquire(demand: RuntimeDemand): void;
|
|
@@ -89,6 +89,7 @@ export type ConversationStore = {
|
|
|
89
89
|
known(): boolean;
|
|
90
90
|
reconnected(): void;
|
|
91
91
|
reopened(): void;
|
|
92
|
+
lost(): void;
|
|
92
93
|
watch(conversation: string, options: ConversationOptions, deliver: (view: ConversationView) => void): () => void;
|
|
93
94
|
watchList(deliver: (entries: readonly ConversationEntry[]) => void): () => void;
|
|
94
95
|
watchAgents(deliver: (agents: readonly ConversationAgent[]) => void): () => void;
|
|
@@ -100,4 +101,5 @@ export type ConversationStore = {
|
|
|
100
101
|
};
|
|
101
102
|
export declare function unheldView(conversation: string): ConversationView;
|
|
102
103
|
export declare const SESSION_STARTED = "Session started";
|
|
104
|
+
export declare function newChat(agent: string): string;
|
|
103
105
|
export declare function createConversationStore(deps: ConversationDependencies): ConversationStore;
|
|
@@ -2,6 +2,7 @@ import type { BinaryFile, HeadChange } from './adapter.js';
|
|
|
2
2
|
import type { ChangeBatch } from './change.js';
|
|
3
3
|
export type Heads = {
|
|
4
4
|
revisions: Readonly<Record<string, string>>;
|
|
5
|
+
fileIds: Readonly<Record<string, string>>;
|
|
5
6
|
changes: Readonly<Record<string, HeadChange>>;
|
|
6
7
|
};
|
|
7
8
|
export type HeldBinary = ({
|
|
@@ -55,6 +55,7 @@ export type Select = 'all' | {
|
|
|
55
55
|
markdown?: true;
|
|
56
56
|
backlinks?: true;
|
|
57
57
|
change?: true;
|
|
58
|
+
fileId?: true;
|
|
58
59
|
};
|
|
59
60
|
export type OrderOptions = {
|
|
60
61
|
nulls?: 'first' | 'last';
|
|
@@ -95,6 +96,7 @@ export type QueryDocument = {
|
|
|
95
96
|
markdown?: string;
|
|
96
97
|
backlinks?: readonly Backlink[];
|
|
97
98
|
change?: HeadChange | null;
|
|
99
|
+
fileId?: string | null;
|
|
98
100
|
binaryFile?: BinaryFileRecord;
|
|
99
101
|
};
|
|
100
102
|
export type QueryGroup = {
|
|
@@ -199,6 +201,7 @@ export type DocumentShape = {
|
|
|
199
201
|
markdown: boolean;
|
|
200
202
|
backlinks: boolean;
|
|
201
203
|
change: boolean;
|
|
204
|
+
fileId: boolean;
|
|
202
205
|
orderBy: readonly {
|
|
203
206
|
key: KeyPlan;
|
|
204
207
|
options: OrderOptions & {
|
|
@@ -219,6 +222,7 @@ export type PlanReach = {
|
|
|
219
222
|
documents: readonly string[];
|
|
220
223
|
};
|
|
221
224
|
export type Plan = {
|
|
225
|
+
key: string;
|
|
222
226
|
rooms: readonly string[] | null;
|
|
223
227
|
reach: PlanReach | null;
|
|
224
228
|
root: Scope;
|
|
@@ -240,8 +244,10 @@ type Entries = Readonly<Record<string, unknown>>;
|
|
|
240
244
|
export declare function invalid(at: string, problem: string): never;
|
|
241
245
|
export declare function plain(value: unknown): value is Entries;
|
|
242
246
|
export declare function known(value: Entries, allowed: readonly string[], at: string): void;
|
|
247
|
+
export declare function flag(input: unknown, at: string): boolean;
|
|
243
248
|
export declare function planOf(input: unknown, facts: HeldRooms, reach?: PlanReach | null): Plan;
|
|
244
249
|
export declare function limitOf(input: unknown): number | null;
|
|
245
250
|
export declare function filterOf(input: unknown, facts: HeldRooms, reach?: PlanReach | null): Plan;
|
|
251
|
+
export declare function queryKey(query: unknown): string;
|
|
246
252
|
export declare function identityOf(plan: Plan): string;
|
|
247
253
|
export {};
|
|
@@ -2,7 +2,7 @@ import type { ReferrerScope } from './adapter.js';
|
|
|
2
2
|
import type { MdRuntime, ReadinessPort, RuntimeTopic } from './connection.js';
|
|
3
3
|
import type { Plan, PlanReach, QueryResult } from './query.js';
|
|
4
4
|
import type { Readiness } from './readiness.js';
|
|
5
|
-
import type
|
|
5
|
+
import { type SearchResult } from './search.js';
|
|
6
6
|
export type ReachedDocument = {
|
|
7
7
|
readonly room: string;
|
|
8
8
|
readonly path: string;
|
|
@@ -27,7 +27,6 @@ export type Reachable = RuntimeView & {
|
|
|
27
27
|
query(plan: Plan): Promise<QueryResult>;
|
|
28
28
|
watchPlan(plan: Plan, deliver: (message: unknown) => void): () => void;
|
|
29
29
|
search(input: unknown, reach: PortReach | null): Promise<SearchResult>;
|
|
30
|
-
searching(target: string): void;
|
|
31
30
|
watchReadiness(port: ReadinessPort, reach: PortReach | null, deliver: (readiness: Readiness) => void): () => void;
|
|
32
31
|
referrerScope(referrer: unknown): ReferrerScope | null;
|
|
33
32
|
};
|
|
@@ -130,6 +130,18 @@ export declare function underneath(parts: HeldParts, path: string, visible: Visi
|
|
|
130
130
|
export declare function heldFile(blob: Blob, base: string | null): Promise<HeldFile>;
|
|
131
131
|
export declare function binaryBase(visible: VisibleLayer | undefined, path: string): string | null;
|
|
132
132
|
export declare function changedParts(path: string, report: ChangedUnderneath): readonly ChangedPart[];
|
|
133
|
+
export type TextParts = {
|
|
134
|
+
readonly fields?: Readonly<Record<string, {
|
|
135
|
+
readonly value: unknown;
|
|
136
|
+
}>>;
|
|
137
|
+
readonly sections?: Readonly<Record<string, {
|
|
138
|
+
readonly value: string;
|
|
139
|
+
}>>;
|
|
140
|
+
readonly preamble?: {
|
|
141
|
+
readonly value: string;
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
export declare function partsAfter(markdown: string, parts: TextParts): string;
|
|
133
145
|
export declare function returnedInto(existing: HeldParts | undefined, returned: HeldParts): HeldParts;
|
|
134
146
|
export declare function moveTarget(move: {
|
|
135
147
|
readonly to: string;
|
package/dist/mdruntime/rows.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export type DocumentRow = {
|
|
|
15
15
|
directories: readonly string[];
|
|
16
16
|
text: string | null;
|
|
17
17
|
change: HeadChange | null;
|
|
18
|
+
fileId: string | null;
|
|
18
19
|
binary: BinaryFileRecord | null;
|
|
19
20
|
};
|
|
20
21
|
export type ReferenceRow = {
|
|
@@ -32,5 +33,5 @@ export type Row = DocumentRow | ReferenceRow;
|
|
|
32
33
|
export declare function documentKey(room: string, path: string): string;
|
|
33
34
|
export declare function roomOfKey(key: string): string;
|
|
34
35
|
export declare function markdownPath(path: string): boolean;
|
|
35
|
-
export declare function rowsOf(room: string, path: string, document: Frontmatter | null, composition: Composition, change: HeadChange | null, binary: BinaryFileRecord | null): readonly Row[];
|
|
36
|
+
export declare function rowsOf(room: string, path: string, document: Frontmatter | null, composition: Composition, change: HeadChange | null, fileId: string | null, binary: BinaryFileRecord | null): readonly Row[];
|
|
36
37
|
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ProviderRefusal } from './adapter.js';
|
|
1
2
|
import type { ChangeSet } from './change-set.js';
|
|
2
3
|
import { type CoveredRoom, type Filter, type PendingRoom } from './query.js';
|
|
3
4
|
import type { Open } from './open.js';
|
|
@@ -5,6 +6,7 @@ export type DocumentPart = Open<'fields' | 'sections' | 'preamble' | 'path'>;
|
|
|
5
6
|
export type SearchRequest = {
|
|
6
7
|
text: string;
|
|
7
8
|
documents?: Filter;
|
|
9
|
+
collection?: true;
|
|
8
10
|
conversations?: readonly string[];
|
|
9
11
|
limit?: number;
|
|
10
12
|
};
|
|
@@ -31,16 +33,21 @@ export type PendingConversation = {
|
|
|
31
33
|
conversation: string;
|
|
32
34
|
awaits: Open<'index'>;
|
|
33
35
|
};
|
|
34
|
-
export type SearchPending = {
|
|
35
|
-
pending: readonly (PendingRoom | PendingConversation)[];
|
|
36
|
-
};
|
|
37
36
|
export type SearchHits = {
|
|
38
37
|
documents: readonly DocumentHit[];
|
|
39
38
|
messages: readonly MessageHit[];
|
|
40
39
|
};
|
|
40
|
+
export type SearchPending = SearchHits & {
|
|
41
|
+
pending: readonly (PendingRoom | PendingConversation)[];
|
|
42
|
+
coverage: SearchCoverage;
|
|
43
|
+
};
|
|
44
|
+
export type SearchUndeclared = ProviderRefusal & {
|
|
45
|
+
kind: 'undeclared';
|
|
46
|
+
};
|
|
41
47
|
export type SearchResult = (SearchHits & {
|
|
42
48
|
coverage: SearchCoverage;
|
|
43
|
-
}) | SearchPending;
|
|
49
|
+
}) | SearchPending | SearchUndeclared;
|
|
50
|
+
export declare function undeclaredSearch(): SearchUndeclared;
|
|
44
51
|
export type SearchedDocument = {
|
|
45
52
|
room: string;
|
|
46
53
|
path: string;
|
|
@@ -61,6 +68,7 @@ export type SearchSource = {
|
|
|
61
68
|
export type SearchPlan = {
|
|
62
69
|
text: string;
|
|
63
70
|
documents: unknown;
|
|
71
|
+
collection: boolean;
|
|
64
72
|
conversations: readonly string[] | null;
|
|
65
73
|
limit: number | null;
|
|
66
74
|
};
|
|
@@ -77,7 +85,7 @@ export type SearchIndex = {
|
|
|
77
85
|
search(plan: SearchPlan, documents: readonly {
|
|
78
86
|
room: string;
|
|
79
87
|
path: string;
|
|
80
|
-
}[] | null, conversations: readonly string[]): SearchHits;
|
|
88
|
+
}[] | null, conversations: readonly string[], rooms: ReadonlySet<string> | null, selections: ReadonlyMap<string, readonly string[]> | null): SearchHits;
|
|
81
89
|
};
|
|
82
90
|
export declare function searchPlanOf(input: unknown): SearchPlan;
|
|
83
91
|
export declare function createSearchIndex(source: SearchSource): SearchIndex;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { KeyedResult } from './observation.js';
|
|
2
|
+
import type { QueryRows } from './query.js';
|
|
3
|
+
export type EntrySeed = {
|
|
4
|
+
readonly at: Readonly<Record<string, string>>;
|
|
5
|
+
readonly queries: readonly {
|
|
6
|
+
readonly query: unknown;
|
|
7
|
+
readonly rows: QueryRows;
|
|
8
|
+
}[];
|
|
9
|
+
};
|
|
10
|
+
export type Seeded = {
|
|
11
|
+
readonly rows: QueryRows;
|
|
12
|
+
readonly at: Readonly<Record<string, string>>;
|
|
13
|
+
};
|
|
14
|
+
export declare function entrySeedOf(value: unknown): EntrySeed | null;
|
|
15
|
+
export declare function seededResult(seed: Seeded): KeyedResult;
|
|
@@ -23,10 +23,11 @@ export type ReplicaRecord = {
|
|
|
23
23
|
documents: Readonly<Record<string, string>>;
|
|
24
24
|
binaries: Readonly<Record<string, HeldBinary>>;
|
|
25
25
|
revisions: Readonly<Record<string, string>>;
|
|
26
|
+
fileIds: Readonly<Record<string, string>>;
|
|
26
27
|
changes: Readonly<Record<string, HeadChange>>;
|
|
27
28
|
written: Readonly<Record<string, string>>;
|
|
28
29
|
};
|
|
29
|
-
export type StagedLayer = Pick<ReplicaRecord, 'documents' | 'binaries' | 'revisions' | 'changes' | 'written'>;
|
|
30
|
+
export type StagedLayer = Pick<ReplicaRecord, 'documents' | 'binaries' | 'revisions' | 'fileIds' | 'changes' | 'written'>;
|
|
30
31
|
export type TransferRecord = {
|
|
31
32
|
locator: string;
|
|
32
33
|
transfer: string;
|
|
@@ -48,7 +49,6 @@ export type PendingState = {
|
|
|
48
49
|
};
|
|
49
50
|
export type TargetRecord = {
|
|
50
51
|
established: boolean;
|
|
51
|
-
search: boolean;
|
|
52
52
|
};
|
|
53
53
|
export type QueueRecord = {
|
|
54
54
|
locator: string;
|
|
@@ -86,6 +86,7 @@ export type ChatDraftRecord = {
|
|
|
86
86
|
files: readonly ChatDraftFile[];
|
|
87
87
|
revision: string;
|
|
88
88
|
submitted?: readonly ChatSubmission[];
|
|
89
|
+
moves?: readonly string[];
|
|
89
90
|
};
|
|
90
91
|
export type RecordWrite = {
|
|
91
92
|
next: ReplicaRecord;
|
|
@@ -128,7 +129,7 @@ export type RuntimeStore = {
|
|
|
128
129
|
turnArrived(conversation: string, turn: string): Promise<boolean>;
|
|
129
130
|
dropConversations(conversations: readonly string[]): Promise<void>;
|
|
130
131
|
chatDrafts(): Promise<readonly ChatDraftRecord[]>;
|
|
131
|
-
|
|
132
|
+
keepChatDrafts(records: readonly ChatDraftRecord[]): Promise<void>;
|
|
132
133
|
dropChatDraft(conversation: string): Promise<void>;
|
|
133
134
|
keepRoomDraft(record: RoomDraftRecord): Promise<void>;
|
|
134
135
|
discardRoomDraft(locator: string, path: string): Promise<void>;
|
package/docs/families.md
CHANGED
|
@@ -67,14 +67,15 @@
|
|
|
67
67
|
refusal is House's `{ error: { code, retryable } }`, `app_release_not_found` for an
|
|
68
68
|
App with no release; a read House does not answer, or one that outlived
|
|
69
69
|
the browser's signed-in User, is `null`.
|
|
70
|
-
- **External calls** - `callExternal({ url, method, headers, body, slot })`
|
|
70
|
+
- **External calls** - `callExternal({ url, method, headers, body, slot, room_ref })`
|
|
71
71
|
has House's server send an HTTPS request to one of the release's declared
|
|
72
72
|
external origins and resolves with the service's `status`, `headers` and its
|
|
73
73
|
body as `body` text or `body_base64`, or a refusal as House's
|
|
74
74
|
`{ error: { code, retryable } }`, or `null` when House does not answer. House fills in the
|
|
75
|
-
App and its running release; naming an account slot
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
App and its running release; naming an account slot and one of the App's
|
|
76
|
+
bound Rooms places the key of the account that Room connects to the slot,
|
|
77
|
+
when the User holds one of the account's roles there, which the App never
|
|
78
|
+
sees, and naming neither sends no key. A Site's call names no slot, and the House panel names an
|
|
78
79
|
`account` instead. `body_base64` replaces `body` for bytes.
|
|
79
80
|
- **App messages** - `messages(listener)` hands the listener each message
|
|
80
81
|
another holder of this App sends to this User's running copies, as `from`,
|
|
@@ -104,7 +105,8 @@ ready, settle })` lets House activate a newer release of the App while it
|
|
|
104
105
|
answers the meaningful task the App owns, such as the selected record,
|
|
105
106
|
filters, cursor, selection and scroll position, as JSON of at most 65,536
|
|
106
107
|
characters; House keeps the address itself. In the newer release House
|
|
107
|
-
calls `restore(task)
|
|
108
|
+
calls `restore(task)` once its document has drawn, so the scroll position
|
|
109
|
+
and focus it sets hold, or `restore(null)` when it opens the release without
|
|
108
110
|
a task, then `ready()`, the App's own check that its local data and
|
|
109
111
|
capabilities work, and finally `settle('committed')` once the release is
|
|
110
112
|
active or `settle('abandoned')` when House returns to the release before
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentshouse/app-bridge",
|
|
3
|
-
"version": "0.1.0-
|
|
3
|
+
"version": "0.1.0-c1e11b9031ca4",
|
|
4
4
|
"description": "Types of the agents.house App bridge House hands every App: navigation, the tab title and icon, ceremonies, installation, notifications and the icon badge, status, Site image reads, App release code, App and Site screenshot reads, and App messages, with an accessor and an in-page test host.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|