@claudian-collab/protocol 1.0.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 (35) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +105 -0
  3. package/dist/CollabCloudBinding.d.ts +106 -0
  4. package/dist/CollabCloudBinding.js +431 -0
  5. package/dist/CollabCloudProjectEvent.d.ts +41 -0
  6. package/dist/CollabCloudProjectEvent.js +133 -0
  7. package/dist/CollabCloudProjectSnapshot.d.ts +42 -0
  8. package/dist/CollabCloudProjectSnapshot.js +281 -0
  9. package/dist/CollabConstants.d.ts +32 -0
  10. package/dist/CollabConstants.js +34 -0
  11. package/dist/CollabControlOperationCodecs.d.ts +28 -0
  12. package/dist/CollabControlOperationCodecs.js +63 -0
  13. package/dist/CollabError.d.ts +27 -0
  14. package/dist/CollabError.js +165 -0
  15. package/dist/CollabMarkdownProse.d.ts +1 -0
  16. package/dist/CollabMarkdownProse.js +57 -0
  17. package/dist/CollabMemberMentionParser.d.ts +6 -0
  18. package/dist/CollabMemberMentionParser.js +51 -0
  19. package/dist/CollabProtocol.d.ts +144 -0
  20. package/dist/CollabProtocol.js +67 -0
  21. package/dist/CollabRequestTicketRequestCodecs.d.ts +5 -0
  22. package/dist/CollabRequestTicketRequestCodecs.js +266 -0
  23. package/dist/CollabRequestTicketResponseCodecs.d.ts +15 -0
  24. package/dist/CollabRequestTicketResponseCodecs.js +368 -0
  25. package/dist/CollabTicketReferenceParser.d.ts +24 -0
  26. package/dist/CollabTicketReferenceParser.js +56 -0
  27. package/dist/CollabValidation.d.ts +5 -0
  28. package/dist/CollabValidation.js +26 -0
  29. package/dist/DevelopmentBootstrap.d.ts +199 -0
  30. package/dist/DevelopmentBootstrap.js +544 -0
  31. package/dist/index.d.ts +24 -0
  32. package/dist/index.js +67 -0
  33. package/dist/types.d.ts +138 -0
  34. package/dist/types.js +11 -0
  35. package/package.json +66 -0
@@ -0,0 +1,138 @@
1
+ export type CollabProjectId = string;
2
+ export type CollabMemberId = string;
3
+ export type CollabRequestId = string;
4
+ export type CollabCommentId = string;
5
+ export type CollabTicketId = string;
6
+ export type CollabTicketCommentId = string;
7
+ export type CollabTicketRelationId = string;
8
+ export type CollabOperationId = string;
9
+ export type CollabIdempotencyKey = string;
10
+ export type CollabGitOid = string;
11
+ export type CollabIsoTimestamp = string;
12
+ export type CollabRelativePath = string;
13
+ export type CollabRole = 'manager' | 'member';
14
+ export type CollabMemberStatus = 'pending' | 'active' | 'revoked' | 'left';
15
+ export type CollabRequestStatus = 'open' | 'merged' | 'discarded';
16
+ export type CollabTicketStatus = 'open' | 'closed';
17
+ export type CollabTicketCommitRelationKind = 'references' | 'resolves';
18
+ export declare function collabMemberRef(memberId: CollabMemberId): string;
19
+ export interface CollabMember {
20
+ id: CollabMemberId;
21
+ displayName: string;
22
+ personalRef: string;
23
+ role: CollabRole;
24
+ status: CollabMemberStatus;
25
+ createdAt: CollabIsoTimestamp;
26
+ activatedAt?: CollabIsoTimestamp;
27
+ revokedAt?: CollabIsoTimestamp;
28
+ }
29
+ export interface CollabTicketSummary {
30
+ id: CollabTicketId;
31
+ number: number;
32
+ title: string;
33
+ status: CollabTicketStatus;
34
+ authorMemberId: CollabMemberId;
35
+ revision: number;
36
+ acceptedRelationCount: number;
37
+ commentCount: number;
38
+ createdAt: CollabIsoTimestamp;
39
+ updatedAt: CollabIsoTimestamp;
40
+ closedAt?: CollabIsoTimestamp;
41
+ closedByMemberId?: CollabMemberId;
42
+ }
43
+ export interface CollabTicketComment {
44
+ id: CollabTicketCommentId;
45
+ ticketId: CollabTicketId;
46
+ authorMemberId: CollabMemberId;
47
+ body: string;
48
+ createdAt: CollabIsoTimestamp;
49
+ }
50
+ export interface CollabTicketAcceptedRelation {
51
+ id: CollabTicketRelationId;
52
+ requestId: CollabRequestId;
53
+ kind: CollabTicketCommitRelationKind;
54
+ commitOid: CollabGitOid;
55
+ acceptedMergeOid: CollabGitOid;
56
+ acceptedAt: CollabIsoTimestamp;
57
+ }
58
+ export interface CollabTicketDetail {
59
+ ticket: CollabTicketSummary;
60
+ body: string;
61
+ comments: CollabTicketCommentPage;
62
+ acceptedRelations: CollabTicketAcceptedRelationPage;
63
+ }
64
+ export interface CollabTicketCommentPage {
65
+ comments: readonly CollabTicketComment[];
66
+ nextCursor?: string;
67
+ }
68
+ export interface CollabTicketAcceptedRelationPage {
69
+ acceptedRelations: readonly CollabTicketAcceptedRelation[];
70
+ nextCursor?: string;
71
+ }
72
+ export interface CollabTicketPage {
73
+ tickets: readonly CollabTicketSummary[];
74
+ nextCursor?: string;
75
+ }
76
+ export interface CollabRequestTicketRelation {
77
+ id: CollabTicketRelationId;
78
+ ticketId: CollabTicketId;
79
+ ticketNumber: number;
80
+ ticketTitle: string;
81
+ ticketRevision: number;
82
+ commitOid: CollabGitOid;
83
+ kind: CollabTicketCommitRelationKind;
84
+ state: 'pending' | 'accepted';
85
+ }
86
+ export interface CollabParsedTicketReference {
87
+ ticketNumber: number;
88
+ kind: CollabTicketCommitRelationKind;
89
+ }
90
+ export interface CollabChangeRequest {
91
+ id: CollabRequestId;
92
+ memberId: CollabMemberId;
93
+ status: CollabRequestStatus;
94
+ firstBaseOid: CollabGitOid;
95
+ latestHeadOid: CollabGitOid;
96
+ mergedOid?: CollabGitOid;
97
+ description: string;
98
+ revision: number;
99
+ ticketRelations: readonly CollabRequestTicketRelation[];
100
+ commentCount: number;
101
+ createdAt: CollabIsoTimestamp;
102
+ updatedAt: CollabIsoTimestamp;
103
+ }
104
+ export interface CollabComment {
105
+ id: CollabCommentId;
106
+ requestId: CollabRequestId;
107
+ authorMemberId: CollabMemberId;
108
+ body: string;
109
+ createdAt: CollabIsoTimestamp;
110
+ }
111
+ export interface CollabCommentPage {
112
+ comments: readonly CollabComment[];
113
+ nextCursor?: string;
114
+ }
115
+ export type CollabFileChangeKind = 'added' | 'modified' | 'deleted' | 'renamed' | 'copied' | 'type-changed';
116
+ export interface CollabChangedFile {
117
+ path: CollabRelativePath;
118
+ previousPath?: CollabRelativePath;
119
+ kind: CollabFileChangeKind;
120
+ binary: boolean;
121
+ oldBytes?: number;
122
+ newBytes?: number;
123
+ additions?: number;
124
+ deletions?: number;
125
+ largeForReview: boolean;
126
+ }
127
+ export type CollabReviewCondition = 'clean' | 'conflicting' | 'stale';
128
+ export interface CollabRequestDetail {
129
+ request: CollabChangeRequest;
130
+ currentMainOid: CollabGitOid;
131
+ reviewedHeadOid: CollabGitOid;
132
+ reviewCondition: CollabReviewCondition;
133
+ comments: CollabCommentPage;
134
+ }
135
+ export interface CollabResolvingTicketExpectation {
136
+ ticketId: CollabTicketId;
137
+ revision: number;
138
+ }
package/dist/types.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.collabMemberRef = collabMemberRef;
4
+ const CollabConstants_1 = require("./CollabConstants");
5
+ const CollabValidation_1 = require("./CollabValidation");
6
+ function collabMemberRef(memberId) {
7
+ if (!(0, CollabValidation_1.isCollabMemberId)(memberId)) {
8
+ throw new RangeError('Invalid Collab member ID');
9
+ }
10
+ return `${CollabConstants_1.COLLAB_MEMBER_REF_PREFIX}${memberId}`;
11
+ }
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@claudian-collab/protocol",
3
+ "version": "1.0.0",
4
+ "description": "Canonical Collab wire and Cloud binding contract for Claudian clients and servers.",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/YishenTu/claudian-collab-protocol.git"
9
+ },
10
+ "homepage": "https://github.com/YishenTu/claudian-collab-protocol#readme",
11
+ "bugs": {
12
+ "url": "https://github.com/YishenTu/claudian-collab-protocol/issues"
13
+ },
14
+ "publishConfig": {
15
+ "access": "public",
16
+ "provenance": true
17
+ },
18
+ "engines": {
19
+ "node": ">=24 <25"
20
+ },
21
+ "packageManager": "npm@11.13.0",
22
+ "type": "commonjs",
23
+ "main": "./dist/index.js",
24
+ "types": "./dist/index.d.ts",
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/index.d.ts",
28
+ "default": "./dist/index.js"
29
+ }
30
+ },
31
+ "files": [
32
+ "dist",
33
+ "README.md"
34
+ ],
35
+ "sideEffects": false,
36
+ "scripts": {
37
+ "build": "npm run clean && tsc -p tsconfig.json",
38
+ "check:compatibility": "node scripts/check-compatibility.mjs",
39
+ "check:migration-provenance": "node scripts/check-migration-provenance.mjs --verify-standalone",
40
+ "clean": "node scripts/clean.mjs",
41
+ "lint": "eslint src tests scripts",
42
+ "prepack": "npm run build",
43
+ "release:candidate": "node scripts/release-candidate.mjs --output .context/release",
44
+ "test": "jest && node --test tests/*.test.mjs",
45
+ "typecheck": "tsc --noEmit -p tsconfig.jest.json",
46
+ "verify": "npm run lint && npm run typecheck && npm run build && npm run test && npm run check:compatibility && npm run check:migration-provenance && npm run verify:pack && npm run release:candidate",
47
+ "verify:pack": "node scripts/verify-pack.mjs"
48
+ },
49
+ "dependencies": {
50
+ "@lezer/markdown": "1.7.2"
51
+ },
52
+ "devDependencies": {
53
+ "@eslint-community/eslint-plugin-eslint-comments": "^4.7.2",
54
+ "@eslint/js": "^10.0.1",
55
+ "@types/jest": "^30.0.0",
56
+ "@types/node": "^25.5.2",
57
+ "@typescript-eslint/eslint-plugin": "^8.58.0",
58
+ "@typescript-eslint/parser": "^8.58.0",
59
+ "eslint": "^10.2.0",
60
+ "eslint-plugin-jest": "^29.15.1",
61
+ "eslint-plugin-simple-import-sort": "^12.1.1",
62
+ "jest": "^30.3.0",
63
+ "ts-jest": "^29.4.9",
64
+ "typescript": "^6.0.2"
65
+ }
66
+ }