Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
DETAILED ACTION
2. This action is in response to the Preliminary Amendment filed September 16, 2025.
3. Claims 1-20 have been cancelled and new claims 21-40 have been added.
4. Claims 21-40 have been examined and are pending with this action.
5. The Information Disclosure Statements filed May 28, 2025, July 15, 2025, September 11, 2025, April 22, 2026, and May 14, 2026 have been considered.
Claim Rejections - 35 USC § 102
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention.
(a)(2) the claimed invention was described in a patent issued under section 151, or in an application for patent published or deemed published under section 122(b), in which the patent or application, as the case may be, names another inventor and was effectively filed before the effective filing date of the claimed invention.
6. Claim 21-40 are rejected under 35 U.S.C. 102(a)(1) and 102(a)(2) as being anticipated by Fu et al. (US 11,645,576 B2).
INDEPENDENT:
As per claim 21, Fu teaches a system, comprising:
a plurality of computing devices that implement a code suggestion service, the code suggestion service (see Fu, col.2, line 64 - col.3, line 2: “Code completion is an automatic process of predicting the rest of a code fragment as the user is typing. Code completion speeds up the code development time by generating candidates to complete a code fragment when it correctly predicts the tag name or attribute name that a user intends to enter after a few characters have been typed”; and col.10, lines 44-51: “The computing devices 602, 604 may include one or more processors 608, 634, one or more communication interfaces 610, 636, one or more storage devices 612, 638, one or more input/output devices 614, 640, and at least one memory or memory device 616, 642. A processor 608, 634 may be any commercially available or customized processor and may include dual microprocessors and multi-processor architectures”) configured to:
receive, via an integrated development interface, code input (see Fu, col.2, line 64 - col.3, line 2: “Code completion is an automatic process of predicting the rest of a code fragment as the user is typing. Code completion speeds up the code development time by generating candidates to complete a code fragment when it correctly predicts the tag name or attribute name that a user intends to enter after a few characters have been typed”; col.4, lines 59-64: “The user interface 122 includes a set of features or functions for writing and editing a source code program. The user interface 122 may utilize a pop-up window to present a list of possible candidates for completion thereby allowing a developer to browse through the candidates and to select one from the list”; and col.9, lines 46-54: “The user interface 122 of the source code editor 120 detects the input characters that a developer enters into the source code editor 120. When the user interface 122 detects a marker character that denotes code completion is needed at a current position in the source code editor 120 which is inside a code block associated with a particular tag name, the user interface 122 requests 128 recommendations 128 candidates 130 from the tag/attribute completion component 132 (block 506)”);
generate one or more code suggestions for received code input using a generative machine learning model trained based, at least in part, on a plurality of source code files (see Fu, Abstract: “Candidates for predicting a tag name are based on a first-order tag Markov chain model generated from usage patterns of relationships of tag names found in a training dataset. Candidates for predicting an attribute name are based on a second-order attribute Markov chain model generated from usage patterns of sequences of attribute names associated with each tag name found in the training dataset”; col.2, line 64 - col.3, line 2: “Code completion is an automatic process of predicting the rest of a code fragment as the user is typing. Code completion speeds up the code development time by generating candidates to complete a code fragment when it correctly predicts the tag name or attribute name that a user intends to enter after a few characters have been typed”; and col.9, lines 32-45: “The source code editor 120 is configured to interact with a tag/attribute completion component 132 that utilizes the machine learning model in a lookup table format (block 502). The source code editor 120 performs a background parsing process that parses the source code in the source code editor to generate and update the parse or syntax tree of the source code thereby tracking the syntactic representation of the source code program (block 504)”);
identify respective code origins and license information for the one or more code suggestions (see Fu, Abstract: “A code completion system predicts candidates to complete a code fragment with a tag name and/or an attribute name in source code written in a hierarchically-structured language”; col.9, lines 32-45: “The source code editor 120 is configured to interact with a tag/attribute completion component 132 that utilizes the machine learning model in a lookup table format (block 502). The source code editor 120 performs a background parsing process that parses the source code in the source code editor to generate and update the parse or syntax tree of the source code thereby tracking the syntactic representation of the source code program (block 504)”; and col.10, lines 25-29: “Computing device 602 may be configured as a cloud service that generates the tag/attribute model as a service for other code completion systems. The operating environment is not limited to any particular configuration”); and
display both the one or more code suggestions and an indication of the respective code origins and license information for the one or more code suggestions in the integrated development interface (see Fu, col.5, lines 30-44: “… The techniques describe herein are not constrained to any particular mechanism for providing the candidates to a developer and the manner in which the candidates are displayed to the user (e.g., pop-up window, etc.)”; and col.10, lines 4-13: “The tag/attribute completion component 132 utilizes the tag/attribute model 118 to produce candidates 130 to complete the code fragment (block 514). In the event that there are multiple candidates, the tag/attribute completion component 132 orders the recommendations by highest probability (block 514). The candidates are then returned to the user interface for display to the developer (block 514). A user-selected candidate is then input into the source code program (block 516)”).
As per claim 28, Fu teaches a method, comprising:
performing, by one or more computing devices that implement a code suggestion service:
receiving, via an integrated development interface, code input (see Claim 21 rejection above);
generating one or more code suggestions for received code input using a generative machine learning model trained based, at least in part, on a plurality of source code file (see Claim 21 rejection above)s;
identifying respective code origins and license information for the one or more code suggestions (see Claim 21 rejection above); and
displaying both the one or more code suggestions and an indication of the respective code origins and license information for the one or more code suggestions in the integrated development interface (see Claim 21 rejection above).
As per claim 35, Fu teaches one or more non-transitory computer-readable storage media storing program instructions that, when executed on or across one or more computing devices, cause the one or more computing devices to implement (see Fu, col.11, lines 1-11: “A memory 616, 642 may be any non-transitory computer-readable storage media that may store executable procedures, applications, and data. The computer-readable storage media does not pertain to propagated signals, such as modulated data signals transmitted through a carrier wave. It may be any type of non-transitory memory device (e.g., random access memory, read-only memory, etc.), magnetic storage, volatile storage, non-volatile storage, optical storage, DVD, CD, floppy disk drive, etc. that does not pertain to propagated signals, such as modulated data signals transmitted through a carrier wave”):
receiving, via an integrated development interface, code input (see Claim 21 rejection above);
generating one or more code suggestions for received code input using a generative machine learning model trained based, at least in part, on a plurality of source code files (see Claim 21 rejection above);
identifying respective code origins and license information for the one or more code suggestions (see Claim 21 rejection above); and
displaying both the one or more code suggestions and an indication of the respective code origins and license information for the one or more code suggestions in the integrated development interface (see Claim 21 rejection above).
INDEPENDENT:
As per claims 22, 29, and 36, which respectively depend on claims 21, 28, and 35, Fu further teaches wherein at least one of the respective code origins and license information for the one or more code suggestions is open-source code (see Fu, col.1, lines 13-22: “Software development environments are often used to aid software developers (i.e., users, programmers, etc.) to develop program code. The software development environment may include a source code editor and other tools that the developers utilize to write and test their programs. Some software development environments provide assistance for the developer to write code by automatically presenting a list of possible candidates based on one or more characters (e.g., letters, symbols, etc.) that a developer has typed into a source code editor”).
As per claims 23, 30, and 37, which respectively depend on claims 21, 28, and 35, Fu further teaches wherein the license information comprises license terms (see Fu, col.11, lines 35-43: “A user can create and/or edit the source code files 646 according to known software programming techniques and the specific logical and syntactical rules associated with a particular source language via a user interface 652 and a source code editor 650 in the IDE 648. Thereafter, the source code files 646 can be parsed via a parser 654, such as a front end or language compiler. During this parsing process, the parser generates data structures representing the hierarchical relationship between the elements of the source code”).
As per claims 24, 31, and 38, which respectively depend on claims 21, 28, and 35, Fu further teaches wherein the respective code origins and license information for the one or more code suggestions satisfy one or more licensing criteria (see Fu, col.11, lines 35-43: “A user can create and/or edit the source code files 646 according to known software programming techniques and the specific logical and syntactical rules associated with a particular source language via a user interface 652 and a source code editor 650 in the IDE 648. Thereafter, the source code files 646 can be parsed via a parser 654, such as a front end or language compiler. During this parsing process, the parser generates data structures representing the hierarchical relationship between the elements of the source code”).
As per claims 25 and 32, which respectively depend on claims 21 and 28, Fu further teaches wherein the code suggestion service is further configured to validate one or more candidate code suggestions based, at least in part, on one or more characters prior to a cursor in the integrated development interface (see Fu, col.9, lines 23-32: “The tag and attribute models are then tested to ensure a target level of accuracy (block 410). The testing entails providing each model with a validation dataset and checking the recommendations that the model outputs (block 410). When the recommendations achieve a certain level of accuracy, then the models are combined into a single file and transformed into a format suitable for quick retrieval, such as a dictionary or lookup table format, and deployed into a code completion system (block 412)”).
As per claims 26 and 32, which respectively depend on claims 25 and 28, Fu further teaches wherein the one or more candidate code suggestions are generated using an earlier state of the received code input different than a current state of code used to perform the validation (see Fu, col.6, line 66 – col.7, line: “The model generation component 116 uses the tag/attribute JSON files derived from each source code file to train a tag and an attribute model. In one aspect, the tag model is a first-order Markov chain model and the attribute model is a second-order Markov chain model. A Markov chain model relies on the assumption that each state is dependent on previous states. The dependency is given by a conditional probability P(xt|xt-1, . . . , xt-N), where xt is the state of the model at time t and n is the order of the Markov chain. In a first order Markov chain, a state is dependent only on the immediately preceding state and in a second order Markov chain model, a state is dependent on the immediately preceding two states”).
As per claims 27 and 34, which respectively depend on claims 21 and 28, Fu further teaches wherein the code suggestion service is implemented as part of a cloud provider network (see Fu, col.10, lines 22-29: “Computing device 602 may utilize the machine learning model in its own code completion system and computing device 604 may generate and test machine learning models as well. Computing device 602 may be configured as a cloud service that generates the tag/attribute model as a service for other code completion systems. The operating environment is not limited to any particular configuration).
As per claim 39, which depends on claim 28, Fu further teaches wherein the code suggestion service is further configured to validate one or more candidate code suggestions based, at least in part, on one or more characters prior to a cursor in the integrated development interface (see Fu, col.1, lines 17-24: “Some software development environments provide assistance for the developer to write code by automatically presenting a list of possible candidates based on one or more characters (e.g., letters, symbols, etc.) that a developer has typed into a source code editor. A popup menu may appear with several suggested code elements, phrases, or entities that the developer may utilize”; and col.2, line 64 - col.3, line 2: “Code completion is an automatic process of predicting the rest of a code fragment as the user is typing. Code completion speeds up the code development time by generating candidates to complete a code fragment when it correctly predicts the tag name or attribute name that a user intends to enter after a few characters have been typed”).
As per claim 40, which depends on claim 39, Fu further teaches one or more non-transitory computer-readable storage media of claim 39, wherein the one or more candidate code suggestions are generated using an earlier state of the received code input different than a current state of code used to perform the validation (see Fu, col.6, line 66 – col.7, line: “The model generation component 116 uses the tag/attribute JSON files derived from each source code file to train a tag and an attribute model. In one aspect, the tag model is a first-order Markov chain model and the attribute model is a second-order Markov chain model. A Markov chain model relies on the assumption that each state is dependent on previous states. The dependency is given by a conditional probability P(xt|xt-1, . . . , xt-N), where xt is the state of the model at time t and n is the order of the Markov chain. In a first order Markov chain, a state is dependent only on the immediately preceding state and in a second order Markov chain model, a state is dependent on the immediately preceding two states”).
Conclusion
7. For the reasons above, claims 21-40 have been rejected and remain pending.
8. Any inquiry concerning this communication or earlier communications from the examiner should be directed to MICHAEL Y WON whose telephone number is (571)272-3993. The examiner can normally be reached on Wk.1: M-F: 8-5 PST & Wk.2: M-Th: 8-7 PST.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Nicholas R Taylor can be reached on 571-272-3889. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of an application may be obtained from the Patent Application Information Retrieval (PAIR) system. Status information for published applications may be obtained from either Private PAIR or Public PAIR. Status information for unpublished applications is available through Private PAIR only. For more information about the PAIR system, see http://pair-direct.uspto.gov. Should you have questions on access to the Private PAIR system, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative or access to the automated information system, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/Michael Won/Primary Examiner, Art Unit 2443